不过目前大厂的面经还不多(除了字节已经开始:
按去年时间点,估计 BAT 春招全面铺开应该是 3 月初的样子,所以还有半个月左右时间复习。
最近呢,也有很多小伙伴都在私信问我要准备到什么程度才能去面试,所以我在这再给大家发一下一些高频问题。
想要拿到大厂C++研发的话,下面这些技能应该是要掌握绝大多数的:
一、C/C++语言基础:
包括基本关键字含义,语言底层实现机制(虚函数、引用等),面向对象还有模板泛型编程
编译链接机制、内存布局、对象模型
智能指针 RAII ,手写简单版智能指针
C++11 部分新特性 右值引用、完美转发等
部分设计模式,比如安全实现单例、观察者模式这些
STL源码部分实现原理
这部分有时间的可以找到 C++ Primer、Effective C++ 系列、 STL 源码剖析相关章节读一读,比较重要的是深度探索 C++ 对象模型这本书,这本书前面一部分是将对象模型的比较适合了解C++底层一些机制,建议有空必读
二、OS && Linux:
进程线程,一并学习fork vfork clone这些系统调用
Linux内存管理, 包括物理内存、虚拟内存、分页和分段机制、slab分配器这些东西,面试官问到malloc这些都能扩展讲一讲,一并需要了解brk malloc这些函数内部实现
了解文件系统,特别是VPS,看完这部分,对于软硬连接和Linux读文件是怎样一个过程这类问题就很简单
死锁相关、还有信号量同步原语怎么实现消费者生产者、读者写者、哲学家就餐这些
Linux 进程调度可以了解下,比如CFS
还有就是Linux下进程的布局,这其实问到C++内存布局就可以往这个方向聊
Linux下程序是如何被编译链接的,静态链接、动态链接,如何被加载执行的,这部分推荐csapp第七章,或者程序员自我修养
常见命令,比如性能监控top ps , IO监控 iostat多熟悉下,比如查看网络连接状态netstat,lsof这些
进程间通信机制,最好能够说一点内核实现,比如管道内核是如何实现的(匿名Inode)
尽量做到能写中等难度的连表查询sql,会分组、一些函数count sum这些,还有最重要的就是数据库原理
索引,有哪些分类,B+树,哈希索引,对于B+树相关的问题也要熟悉
事务,特点(ACID), mysql存储引擎默认支持的事务级别之类。我反正被问了两次
锁,封锁方式,如何避免死锁
数据库设计关系范式也可以了解下
TCP是重中之重,比如拥塞控制、流量控制、快速重传这些,nagle算法,列一些典型问题吧:
既有和网络编程结合的问题,也有问TCP原理本身的
UDP 如何实现可靠数据传输?
TCP如何拆包、解决粘包
TIME_WAIT过多怎么造成的,如何解决
套接字编程基本的要会,socket bind listen connect close accept这些函数也要清楚
进一步就是Linux五大IO模型,三种IO复用方式,select poll,epoll
ARP、DHCP协议怎么工作的
DNS协议
HTTP、HTTPS协议
刷题,系统的分类学习,提升很快
链表,以及各种题型,去leetcode按标签刷
二叉树、平衡二叉树
二分查找以及几种变体,比如lower_bound upper_bound
几大排序算法,稳定性,极端情况,做到手写快排、堆排bug free,了解下快排优化思路
hash
贪心、回溯、dfs、bfs,动态规划
Tire树
手写LRU, 双向链表+hash
海量数据处理思路
可以了解一下KMP这类字符串匹配算法
基本的POSIX线程api
互斥锁和条件变量我觉得必须掌握的
其它的就看你又没有时间了
理想的项目应该是出于自己的兴趣做的各种轮子,比如http ftp服务器,实现加密算法,文件压缩,p2p聊天,网络库,甚至mini os,k-v数据库。但是短期内这些可能都不是很好准备,所以大家按照自己已有的完善下吧。做到有测试、有性能改进方面的思考。
我的经验是七八场下来项目提问时间没超过10分钟,而且提问的主要点是如何测试、如何改进的,以及效果
Redis
Nginx
这些都是最好了解下原理,就算没用过,也去搜几篇博客看看。
对于 Java 方向,其实基础差不多,区别就是 Java 语言的 JVM、垃圾回收算法、线程、并发等等。
总之,很核心的一点就是别"偏科",我相信大多数人包括我自己在复习的时候其实会更喜欢在舒适区的,就是对于自己比较熟悉的部分越愿意去看,而薄弱的地方反而有点抵触。
所以大家一定要对薄弱的地方投入更多的精力,面试是各个方向都要考查的,有时候其实问的并不深,所以广度优先的复习特别重要,如果对于一些很简单的“常识性”问题都答不上的话,给面试官的印象会很差。
C++ 开发的同学可以参考一下我上面列出的一些点,对照的去补齐。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.