Fork me on GitHub
0%

服务端开发面试大纲(校招)

服务端开发校招面试大纲

秋招在即,送给后端开发的校招生们,持续补充。。。

计算机基础

数据结构与算法

即使这两个东西在学校的课程中,可能是分开教授,但是在面试上数据结构与算法是分不开的,数据结构是算法的基础,算法是数据结构的表达

  • 数据结构
    • 数组
    • 链表
    • 堆栈
    • 队列
      • 二叉树

        面试算法中出现频率很高,前序中序后序遍历,左旋右旋,倒置,二叉树合并等等

      • B/B+树

        面试中,往往在mysql中的索引会问到

      • 红黑树

        编码难度较大,做到了解就够

    • 面试问到的相对较少

  • 算法
    • 没有捷径,刷题!

      数据结构是基础,打好基础的前提下,做题可以促进对算法的理解

    • 刷题推荐 leetcode

      每一道题最好思考一下,时间复杂度和空间复杂度以及最优解

计算机网络

  • 基本概念
    • 七层网络协议
  • 网络层
    • ipv4
    • ipv6
  • 传输层
    • TCP
    • UDP
    • 三次握手 四次挥手

      过程越详细越好

  • 应用层
    • http/https
    • http1.0 http2.0
    • post/get
    • header
    • keep-alive
    • cookie/session

计算机操作系统

  • 进程与线程
    • 区别与联系
    • 原子操作
    • volatile

      指令重排序

    • 读写锁
    • 互斥锁
    • 循环锁
    • 死锁
  • 内存管理

数据库

  • SQL语句

    结合实际场景,写一个sql

  • 索引

    要深入了解索引的实现原理,譬如innoDB的索引是怎么实现的,B+树是什么样子的,以及为什么联合索引只能最左匹配

    • 聚簇索引
    • 非聚簇索引
    • 唯一索引
    • 组合索引
    • 主键
  • 事务
  • 存储引擎
  • 范式
  • CAP原理
  • Mysql、MongoDB、RocksDB等,关系型数据库至少用过其一,最好能说出来遇到过的问题如何解决的

开发语言(至少熟练其一)

Java

目前还是Java的市场比较大,学校里学的最多的面向对象语言,同时竞争也很大,语言本省需要掌握的深度也要很深入,如果想要出类拔萃,最好研究源码,仅仅会用是不够的

Golang

最近几年比较流行的语言,门槛低,上手很快,可以说语法3天就能学会上手,市场不如Java广,但是竞争比Java低,特点是快

C/C++

个人认为C++是最难的语言,首先语法是所有语言最复杂的,尤其在内存管理上,需要程序员有一个很好的编码习惯

Python

更多的使用在机器学习领域、自动化测试等,个人涉及不多,不妄下结论

Rust

算是一门新兴语言,目前更多的被运用在客户端开发等项目中,作为C++的替代品正在被更多的程序员所学习和接受,如果同学手持C++利剑,不妨来看看它

迄今为止,开发语言种类越来越多,有被大众熟知的Python、C/C++、Java等,也有不被人知晓的Q、Lua等等,每种语言都是一杆“枪”,尽管每种语言都有各自的优缺点,但是个人认为,语言不是那么的重要,工作中大都是在不同的背景下选择合适的语言或者基于项目的架构设计我们也没有选择。所以,对于大学生而言,选一门自己喜欢的语言学习就好,从入门到放弃,从放弃到捡起,从捡起到剖析,一直下去。。。

项目经验

学校大作业

要有质量的,不要很粗糙的东西,譬如 “基于C语言实现的学生信息管理系统” 就没必要写了

实习项目

在不违背老东家的规定前提下,可以多润色,毕竟企业的项目对于大学生来说是很难得的

自研项目

如果有自己的小项目,或者有自己的开源代码,小露一手还是很加分的

应该会的

Git

https://git-scm.com/

  • git add
  • git comment
  • git push
  • git merge
  • git rebase
  • git reset
  • git checkout
  • git branch
  • git stash
  • git cherry-pick
  • …..

Linux

  • ls、cd、cp、rm、mv、touch、mkdir、cat、less、sudo、grep等基本命令
  • 基本目录结构
  • 简单的shell脚本

    可以不会复杂的shell,但是要保证基本的shell可以看的懂

简历

自我介绍

姓名、联系方式,身高体重就没必要写了

教育背景

如果四六级考过了,而且分数很高,可以把分数写上

专业技能

这个很重要,面试官一般会围绕这个来作为考察点,不会的或者不了解的一定不要乱写,容易撞枪口上

实习经历

校招生如果有一个好的实习经历,是个加分项

项目经验

校园履历/成就


附件:

大纲

一分也是爱❤️