一、系统复习
1. 语言:
类对象、模板、运算符重载、继承多态、STL六大组件(容器、迭代器、函数对象、泛型算法)、空间配置器allocator、智能指针、设计模式、编译原理
2. 数据结构
数组、链表、栈、队列、八大排序、五大算法、二叉树、B树、B+树、BST树、AVL树、红黑树、倒排索引、字典数。
3. 操作系统
- 操作系统的理论知识 Linux的进程和线程模型、进程间的五种通信方式、线程之间的通信方式、线程同步和互斥该怎么做、Linux常用命令。
- 操作系统的编程(linux) 能够高效的利用CPU多核多CPU服务器这种硬件资源;
进程(fork)和线程(pthread)怎么编;
多进程、多线程和高并发网络编程;
协议(TCP、UDP、IP),为什么TCP是流式协议,UDP是数据报协议,TCP三次握手,TCP的超时中转和滑动窗口机制是什么、流控怎么做、拥塞机制是什么、什么是慢启动、什么是拥塞控制算法,如何编程客户端和服务器端,HTTP协议和HTTPS协议;
IO复用,select、poll和epoll各自是什么意思,怎么用这些去编程,分别和多线程结合该如何使用。
4. 项目
涉及网络高并发、集群、分布式、微服务、服务器中间件(缓存、消息队列),数据库
一般大厂直接上来就聊项目,项目的架构,项目的设计点,项目用了哪些基础知识,通过具体技术点再去问相关的操作系统、数据结构和语言方面知识。
5. 开源
网络库muduo、libevent,缓存redis、memcached,nginx等
6. 收集面经
复习一定程度后,可以根据面经问题来决定下一阶段的复习,将知识融会贯通。
二、准备简历,投递简历
简历内容:个人简介、IT技能、项目经验、自我评价、在校经历
有侧重点
三、面试过程
- 笔试
- 电话面试
- 现场面试
- 技术面最后的问题 请您对我今天的面试做一下点评,对我目前薄弱的地方给一些建议
- HR面的问题 多表达积极向上的情绪,对将来的工作有什么计划,可以从自己岗位出发说一些计划,比如说技能上的提升,称为项目组的核心,带新人等等。 期望的薪资
四、面试总结
- 输出面经
- 问题分类