秋招Tips
秋招Tips
此篇秋招tip转载于北邮人论坛。
0. 卷首语
秋招算是个人成长的一大转折,跌跌撞撞,终于在近期正式结束,由于受惠于诸多前辈的经验,打算写一下没啥人看的经验。攒攒人品,求个大包。
本人应届硕士,15级北邮本,计院;大四某无人驾驶公司算法实习 + 暑期阿里云弹性计算实习(偏底层)
收获的意向书:阿里云tan性计算,腾讯guang子,百度推广搜某架构,字节dou音电商,美团到家,快手shang业化,拼多多,虾皮,京东,网易互娱;其他公司offer够了就没面了,如微软,hulu...
码字不易,请别外传,请别乱传。
1. 三维
和保研差不多,秋招最重要的也是你的三维,好学校科班出身,基础知识牢固,丰富的大厂实习经验,SSSSP赢家就是你
- 学历/专业: 211+, 计科/软工/网工/通信...
- 基本知识:语言基础(C++, Go, Java),算法,TCP/IP, Os,Redis,消息队列, 分布式(CAP,BASE,Xcc, Paxos,Raft...)
- 实习/项目:大厂相关实习,知名开源项目...
- 个人觉得实习更重要,学历没法补,基本知识可以突击
- 找一个放实习的老板;个人最大的吃亏在于只有2段比较偏的实习,一个算法,一个太底层
- 相关实习,某些实习面试官可能不太care or 体现不出能力
2. 复习&相关题目
本人由于算法转开发,大多复习的是后台/服务器开发相关的知识;
大部分公司会在八股的基础上深入一下,但不会深入太多,很多我觉得难的都不会问....
建议不要只刷面经,系统的看一下/复习一下会更好
以下复习按照我理解的优先级进行排序;
TCP / IP:复习使用的书籍《TCP/IP详解》,各种blog
- TCP,IP,UDP基本头部
- TCP为啥三次握手/四次挥手;对应的状态迁移
- TCP的各种状态位,什么时候有用
- TCP的3种定时器,TCP的长肥管道问题
- 半连接,全连接
- Time wait; 为啥Time wait;大量短连接怎么处理
- TCP vs UDP
- HTTP协议基本,以及1.0/1.1/2.0/3.0对比
- HTTPS,和Http对比;握手;数字证书;对称加密非对称加密
- DNS,递归/迭代查询;什么时候UDP,什么时候TCP
- ARP,arp广播,arp代理
- ICMP (比较偏),ping,traceroute
- socket编程客户端/服务端的几个函数,以及对应参数
- IO多路复用select,poll,epoll区别/优劣,epoll的两种模式
- select为啥有个1024的限制,32*i32
- epoll线程安全
- reactor vs proactor
OS: 复习使用的书籍《现代操作系统》
- 虚拟内存(必问):MMU/TLB,多级页表,内存分配(slab,伙伴)
- 进程&线程基本概念,PCB包含什么,进程内存模型,TCB
- 进程间通信
- 基本概念,原理
- 通信效率,是否设计系统调用
- 死锁,条件,检测/恢复/预防
- 同步,原子操作,CAS&FAA,互斥锁,条件变量,RCU
- 底层IO模型,阻塞,非阻塞,信号,多路复用,异步
- 多线程vs多进程;同一进程线程切换,不同进程线程切换;
- 协程vs线程
- inode,软连接、硬链接,文件描述符
- 零拷贝
数据库 复习使用的课程《mysql实战45讲》+ blog
- mysql架构,server层 + 引擎层;
- 连接器,查询缓存,分析器,优化器,执行器
- 两种存储引擎的对比
- redo log vs binlog vs undo log,这块可以问得可深了...
- redolog为啥crash safe, binlog为啥不是
- 如何恢复数据
- 何时刷新log/数据
- https://juejin.cn/post/6855129007336521741
- 索引
- B+树 vs B树
- 唯一索引vs普通索引
- 聚簇 vs 非聚簇
- 最左前缀匹配,给你个sql让你分析
- 回表/覆盖索引
- 索引设计
- explain
- 事务,隔离级别(默认),脏读/不可重复读/幻读
- MVCC,什么时候生成read view;如何判断哪些事务可见
- 锁(加锁才能实际解决幻读)
- 两阶段锁
- record lock,gap lock, next key lock
- 数据库优化,读写分离,主从,分库分表等等
- 范式
- 手写嵌套查询
- 如何设计索引
- 执行顺序
- 给你个sql,让你分析如何加索引,使用了什么索引
- mysql架构,server层 + 引擎层;
语言基础 (C++, Go)
https://github.com/huihut/interview
+ C++ primer plus
- 几种时期多态,虚函数表(最基本, 多重继承)
- 智能指针 & 手写最简单的智能指针
- C++的内存分布/ 内存对齐
- static / const
- C++11,右值,转移语义,lambda等等
- ...
- Go语言 GMP模型
- 线程池,内存池 (比较偏)
Redis
- 基本数据结构底层,大数据量和小数据量情况下不同的数据类型;
- sds
- 跳表
- ziplist,有啥好处
- hash,渐进式hash,rehash
- intset,提升
- 为啥快?基于内存,多路复用,单线程事件分配器
- 大key问题;慢日志
- 缓存穿透,击穿,雪崩;如何处理
- redis分布式锁,单机版&分布式版
- redis持久化,AOF vs RDB
- redis主从流程
- 基本数据结构底层,大数据量和小数据量情况下不同的数据类型;
消息队列:没复习,但经常会问
数据结构 《STL源码剖析》+ blog
- vector底层
- 扩容
- 迭代器失效
- hashmap底层
- 树,**二叉树,avl,红黑树,B+树,B树,LSM树
- avl vs 红黑树
- B+树 vs B树
- vector底层
设计模式 《大话设计模式》
- 手写单例 (必问)
- 简单工厂,工厂方法...
linux 常用指令
- grep
- sed
- find
- iostat/netstat
- top
分布式
- CAP, BASE
- 分布式事务,两阶段,三阶段
- Raft基本流程,选主,日志复制,脑裂之后流程
- 一致性hash
3. 算法
除了字节和外企,其他公司的面试题都很简单....也不用特别担心;建议面试前看看公司最喜欢考的题(https://codetop.cc/#/home)
现在一般考你背题能力....
个人leetcode刷了400道 + leetcode Top 100 + leetcode Top interview + 牛客
- 必刷:leetcode Top 100 + leetcode Top interview + 牛客常考题 + codetop
- 比如著名的LRU...
- 链表题
- 翻转,每k个翻转,字节最爱...
- 环的入口
- 删除重复节点
- 链表快排/归并排序
- 动规题,动规题理解了背住常见的几个模板就行;一般最多2维dp
- 最长公共子串
- 最长上升子序列
- 换零钱,变种考了很多次
- 01背包
- 回文子串,及其变种比如区间[i, j]符合某某条件
- 矩阵连乘,加括号
- 编辑距离
- 二叉树前中后,递归/非递归遍历;一般比较简单
- 非递归遍历
- 前序中序重建
- 最大路径和
- 公共祖先
- 排序,快排变种
- 第K大/小
- 两个数组第k大
- 单调栈,接雨水
- 位运算,子网掩码,只出现一次的数...
- 广度搜索 + 记忆化数组,求最短路径
- dfs,暴力解法,骗分
- 排序算法,n2, nlogn, n
- 排列
- 全排列,无重复
- 下一个排列
- 洗牌算法
4. 项目
尽量提前实习,去有含金量的大厂,比如wxg,阿里云,抖音等等;
尽量实习方向和就业方向相同;
没项目经验的可以看看下面这个
- C++ web server https://github.com/linyacool/WebServer
项目常常问
- 介绍你的项目:请使用star法则
- 项目实施的一些详细数据
- 为什么这么设计,你在其中承担的角色
- 如何保证/增加crash-safe的能力
- 为什么xxx,为什么xxx,为什么xxx
- 考虑以后的优化
- 你的收获
5. 简历&投递
- 建议使用 超级简历 https://www.wondercv.com/ 上面的简历模板,简洁明了,别整些花里胡哨的图片模板
- 建议参考下网上写简历的方法Star法则,背景,待解决的问题,难点,成果;
- 简历多Review几遍,不要给自己留坑,某个点不太熟悉请别写,别抱侥幸心理...(我写在简历上的算法项目/实习都被问过...)
- 提前调研下某个公司某个组是否核心(脉脉),是否难进;适合自己的才是最好的,别一味冲wxg,阿里妈妈之类的;也别随便选一个自己不会去的部门
- 善用内推,熟人 >> 北邮人论坛 > 脉脉/牛客;一些网站上的内推人不负责,不会管你,而论坛里很多师兄会帮你改简历,以及tou露一些常考题
6. 面试
不要紧张,不要紧张,不要紧张,此处不留爷自有留爷处;
大部分公司面试官都是很nice的,不要被某些面试官的黑脸搞崩心态,比如某节面试官。
提前熟悉下牛客网之类的白板写题,写写常考题练练手
找一个安静,整洁的环境;好的环境会让双方都体验更好,开始我在宿舍面就体验不咋样,后来去学校的一些小房间/活动室面,状态感觉就不一样
开始面试前,让自己放松下,不要太紧张,不要再去拼命复习,没用的反而会让自己紧张
面试过程尽量保持自己的语调,确保面试官能听清楚,不会太快太急
一定要结构化的回答问题,面试官听你的回答提炼答案也很累;除了基本知识,面试官还考察表达/沟通能力
- 为啥有xx;相同点是: 第一点,第二点,第三点;不同点是:第一点,第二点,第三点;最后总结一下
遇到不会的题,尽量回答一些有关系的点,如果实在不会,直接说不会,不要绕来绕去
遇到会的题,在答完基础的情况下,可以加深一下,比如
面试官问你虚拟内存是啥;
虚拟内存的是啥...; 段式,页式;单级页表,多级页表;MMU,TLB加速翻译过程;内存换入换出等等
MYSQL的锁
表锁+行锁;行锁基于索引,record/gap/next-key;意向锁
除了部分公司某些面试官,比如某节,其他公司的面试官会引导你去回答,也不会缠着你不会的;
不要在面试官面前显示的很卑微,此处不留爷自有留爷处
面试完了就不要患得患失了,准备下一场比啥都重要
7. 总结
- 尽量早投,尤其是提前批别错过,秋招的一大感悟就是投晚了,真hc紧缺,很多公司都会有个池子养鱼,简历投了几个星期才面试。
- 适当练下手,培养面试状态,别一开始就面你最想去的公司
- 别只等转正offer,今年很多公司招了不少实习生(比如wxg,比如*里云),转正率不高,等offer会变得很焦虑
- 提早复习,边实习边复习,真的会没时间复习&焦虑&复习效果不好;
- 尽早拿一个offer垫底,没offer+没试提前批真的焦虑;有offer之后面试也硬气起来了
- 找个小伙伴 or 对象;不要一个人焦虑
祝学弟学妹们,春招/秋招顺利!