转载:https://leetcode-cn.com/circle/discuss/NSBvu5/
写一波面经,顺便感谢所有热爱分享的小伙伴们
先说下我本人的条件吧,科班出身,985 本,东大硕,技能树点的很歪导致这次求职搞得我心力憔悴。
也幸运的是春招刚开始就能顺利到腾讯的 HR 面(希望最后别HR面给我挂了,那我真的心态爆炸)。
我大概是2020年年底就开始断断续续刷刷 leetcode,打打周赛,不过比较咸鱼,刷的数量不多,主要做做中等题。
这次求职最大的教训就是一定要早点开始准备,我正悠哉刷题准备笔试呢,没想到腾讯直接跳过笔试跟我约了两天后的面试,搞得我两天高强度背了三门课,太难顶了,高强度用眼一度以为自己要瞎了orz
都是回忆的,可能有很多遗漏的地方,请各位多担待。
一面 3.10(70 min)
-
自我介绍
-
问了下我现在在国内还是在日本
计算机网络
-
TCP 三次握手四次挥手
-
四次挥手中如果客户端发给服务器的最后一个报文丢失了会怎么样?
-
讲讲 TIME_WAIT,如果这个值是0会发生什么?
-
三次握手中如果客户端发给服务器端的 ACK 一直丢失会怎么样?(快重传什么的,扯拥塞控制就完事了)
-
HTTP 了解吗?说一说HTTP中常见的状态码有哪些?
操作系统
-
进程和线程的区别是什么?
-
进程有哪些状态?
-
进程间通信的手段?实际中有用过哪些?
-
死锁是什么?死锁产生的原因?如何解决死锁问题?
-
Linux 命令了解吗?wc 命令是干什么的?
-
如果要看一个文件的内容用什么命令?查找文件中的内容呢?如果不知道文件在哪里用什么命令?
数据库
-
知道 InnoDB 吗?说说 InnoDB 底层是如何实现的?(压根没看,直接跪 orz,后来去查好像是各种缓存池什么的一大堆)
-
B+ 树比起 B 树有什么优点?
-
Mysql 用的是那种树?
C++ 相关
-
说说 C++ 的智能指针。shared_ptr底层是如何实现的?
-
STL 终得线性容器有哪些,是如何实现的?
-
unordered_map 用过吗?是如何实现的,有什么特点?
-
哈希碰撞的解决方法有哪些?C++ 中用的是哪种?
-
多线程的时候如何解决 unordered_map 的线程安全问题?(一开始回答的每一个 key 一个锁,面试官说锁太多了怎么办,就又说一个 key 的范围一个锁)
-
如果不用锁怎么解决这个问题?(扯了个无锁队列,被面试官直接否了 www,然后又扯了几个,面试官就笑了,说这个问题 pass 吧。事后查了下说是内核态关中断可以实现一个无锁的 unordered_map)
-
编程:一个数组,一个长度为k的滑动窗口从左到右滑过这个数组,返回窗口在每一个位置时窗口中最大的值。
例如:3 -1 5 1 3 4 6 2 0,k=3,返回 5 5 5 4 6 6 6
很简单,直接手撕。
-
反问:组里做什么业务?自己做的还有什么不足的地方?
二面 3.12(60 min)
- 自我介绍
计算机网络
-
TCP 的三次握手和四次挥手?
-
HTTP 的无状态了解吗?说说在实际中无状态是如何解决的?
操作系统
-
进程和线程的区别是什么?
-
进程有哪些状态?
-
进程间通信的手段?实际中有用过哪些?
-
死锁是什么?死锁产生的原因?如何解决死锁问题?(内心 os:怎么又是这些问题。。。)
-
Linux 中查看当前进程运行状态的指令?
-
如果要查看一个具体的进程用什么命令?
Git 相关
这块我简历里写了熟练运用 Git 但自己忘了准备了。。纯靠自己平时的积累了,有点崩
10. git 把一个远程的仓库拉到本地用什么命令?答了 git pull,又问如果本地不存在这个代码呢?
-
如果现在我想提交一次改动并保存,但不想push远程仓库免得污染,只想保存一个快照到本地用什么命令?
-
如果想从远程仓库把一个代码拉到本地但是不与本地合并用什么命令?
-
git push是怎么用的?
-
svn了解吗?说说svn和git有什么区别?
数据库
-
Mysql中的锁有哪些?分不同粒度说说。
-
乐观锁和悲观锁了解吗?
-
事务隔离性级别了解吗?说说脏读,不可重复读和幻读。
-
说说mysql中的索引。
-
联合索引是什么?联合索引在B+树中会引起什么问题?
-
Redis了解吗?底层实现了解吗?
C++ 相关
-
说说C++中的多态?
-
堆和栈的区别?
-
代码手撕:气球问题
-
反问:组里做什么业务?自己做的还有什么不足的地方?(我是一个没有感情的复读机)
三面 3.15 (20 min)
三面应该是主管面,主管好像很忙的样子,先是改了一次面试的时间,面试的时候好像又急着去开会,感觉老是在催我回答问题
-
自我介绍
-
问了下我简历上半年的空白期是在干什么?(答:上预科orz)
-
之前的实习做了些什么?
-
挑一个自己的项目展开讲讲?
-
数据库的索引有哪些分类?聚簇索引和非聚簇索引的区别?
-
C++ 中将基类对象赋值给派生类指针这个操作是允许的吗?派生类对象赋值给基类指针呢?
-
C++ 中的内存泄露该如何避免?如果发生了内存泄露,该如何定位问题代码?
-
死锁是什么?如何避免?
-
反问:自己有什么做的不足的地方吗?组里做的具体是哪一个项目?
HR 面 3.17(30 min)
-
有什么问题吗?(一上来就让我反问了,有点反套路)
-
自我介绍
-
说一说自己以前的项目经历。
-
之前的实习经历展开讲讲,自己所做的主要贡献是什么?
-
实习中有遇到过什么困难吗?如何解决的?
-
觉得自己现在的技术栈有哪些不足,将来怎么去学习?
-
对具体做哪方面感兴趣?
-
实习的计划是什么?(就是问具体打算做什么方向,什么时候能过去,实习多久 blabla)
-
老家在哪?
-
父母对你来深圳是什么态度?
-
期望的实习薪资是多少?(实习居然就问我期望薪资,有点意外)
-
反问:面试通过的话 offer 什么时候能下来?
然后就又跟我具体介绍了下组里的业务,就说跟技术人员再沟通一下,尽快告知我结果,大概就是这么一个情况。
总而言之,整个面试流程体验还是非常不错的,问的也比较基础,手撕编程题也简单,作为自己第一个面的大厂,这么顺利还是挺开心的。
经验教训就是:一定要早点开始准备,我这种临面试才抓紧恶补基础的人注定会搞得自己很疲惫,现在自己的状态就是压根都不想去准备别家的面试了,那几天实在是太累了。还有就是投简历的话也最好自己准备的差不多了再投,不要还没准备好就去面试然后白给。
最重要的一条:努力了一定会有收获,真的下了苦了的话,一定能有不错的结果的,毕竟自己的努力永远不会背叛我们。
朋友们,我们一起加油!
感觉大厂比较注重基础,上面的很多问题都是课程学习中的基础知识,另外面试前尽量刷一遍操作系统、数据库和计算机网络。力扣要常刷!!!