服务端开发校招面试大纲
秋招在即,送给后端开发的校招生们,持续补充。。。
计算机基础
数据结构与算法
即使这两个东西在学校的课程中,可能是分开教授,但是在面试上数据结构与算法是分不开的,数据结构是算法的基础,算法是数据结构的表达
- 数据结构
- 算法
- 没有捷径,刷题!
数据结构是基础,打好基础的前提下,做题可以促进对算法的理解
- 刷题推荐 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
- 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可以看的懂
简历
自我介绍
姓名、联系方式,身高体重就没必要写了
教育背景
如果四六级考过了,而且分数很高,可以把分数写上
专业技能
这个很重要,面试官一般会围绕这个来作为考察点,不会的或者不了解的一定不要乱写,容易撞枪口上
实习经历
校招生如果有一个好的实习经历,是个加分项
项目经验
校园履历/成就
附件: