到今天差不多写了「二十多篇」面经文章,如果看了我的这些文章,我猜测应该知道去面试这些公司大概需要复习哪些知识以及哪些知识是重点。今天早上起来,看到读者的来信,真是高兴了一整天,理由很简单,他完成了自己一年前的目标,只是现在还在猿辅导,字节跳动,腾讯,B站SP之间徘徊,不管怎样,首先人家用功了,该看的书籍也看了,这些书和复习资料都是啥呢,我在文末给大家准备好了,希望有所帮助
拿到的Offer(岗位后台开发工程师)
- 腾讯(经历了4轮)
- B站(SP)
- 字节(面了4个部门,加起来一共15轮面试)
- 好未来(3轮)
- ucloud
- 小红书
- 亿联
- 部分银行和国企
可能以为是吹牛逼,还是放几个图
陆游说:“古人学问无遗力,少壮工夫老始成”,这句话啥意思,意思是很多年前那些人,通常需要老年才取得成就。当然不是绝对的,在现在看来,方法恰当,坚持下去,真是很有希望,所以很多时候有些读者说自己是双非,二本,想去大一些的公司就没得希望了?怎么可能嘛,希望总是给那些准备好了的人嘛,机会给你了但是你没准备好,这可咋整咯,因为不知道下一次机会在哪儿?什么时候才会有这机会了?
1 高中
大学之前都是吊儿郎当,学校学院出了啥事儿基本上就有我,上课很想认真学习,但是总是忍不住去扯前排菇凉头发,读高中的时候每周都可以出校门,自然少不了网吧的开黑顺便下点电影
身上没多少钱,但是有助学金,这个助学金你们都懂的,越有钱的人越喜欢申请,名额还有限制
几个室友凑点钱买了个大点的存储卡,这样可以多放点电影,晚上和室友可以一起看电影,摆龙门阵
浑浑噩噩高中三年就过去了,高考最后一天下起了大雨,现在都记得雨下的太大就打着赤脚去的考场
"宝剑锋从磨砺出,梅花香自苦寒来",我没有经历磨难也没有坚持好好学习,自然就去了二本院校,我认了。
2 大学
读大学之前老师告诉我们,“好好学习,去了大学就好玩了”。现在想来确实如此,你如果去了一个非常自由的大学,真的很好玩,当你毕业的时候你还想玩几年。
进入大学,一切都是那么的新鲜
到了大三,“沉鱼落雁鸟惊喧,羞花闭月花愁颤”,本来漂亮的菇凉,都开始了化妆,每次上课在电梯都会扑鼻而来的香味
到大四了,该出去实习的就出去实习,咋们学校也没几个单位来,要么自己出去找,要么就准备考研
大学四年很充足,虽然逃课成为了家常便饭,但是我加入了学校的acm团队,这也许是在现在看来对我后续的影响最大的吧
大学就没有谈恋爱?
大学少不了谈恋爱的嘛,毕业的时候,原因很多吧,各自安好了。
出去找工作,算法还行但是感觉没有用武之地,很多小公司很少让你笔试甚至写算法,然后通过百度,看看在哪些网站找工作,哪些网站又可以看到人家的面试经验,他们是什么水平,自己差多少
嗯,大厂是少不了算法,但是我的简历首先得投出去嘛,投出去人家能看中哇,当时的胆子挺大的,去投递了大公司,就从来没收到面试的通知,当时的我无动于衷也没啥办法
行吧,考研吧,可是时间又比较短了,那就看看西部的高校,无外乎就是重邮,云南大学,贵州大学,广西大学,云南理工大学等,然后通过微博,贴吧找相关的真题开始复习
上天眷顾了我,我以总成绩第一的成绩考上了这所211,找了一位年轻的老师,想着年轻老师有冲劲,可能接触的东西比较新,比较符合市面上企业的技术,这一赌我赌赢了,学到了不少东西。
由于没有实习,按照自己的情况,知道应该早点复习了,于是开始整理资料,刷题,完善自己的简历,于是乎,我的第一春给了字节跳动,没想到这一次的旅行伴随了我整个秋招
一直被字节挂了又捞,捞了又挂,从实习面到昨天通知终面通过,总共经历了15面,找工作第一面就是送给了字节,当时由于自己准备不足,还有就是信心不足,不知道怎么组织语言,所以前面几次面试基本都是一面就挂,后面随着时间推移,准备的越来越充足,算法题也进行了回炉重造,后面的面试还算比较顺利。
在此非常感谢暖蓝了(老脸都红了),是他让我们看哪些书,告诉我们校招来说,哪些东西是必须要学的,从参与校招的整个过程历程来看,觉得应届生的考察重点还是在coding、理论、场景题(设计)三个方面,有比较好的项目当然可以加分,但是学生有比较牛皮项目在少数,下面是我对字节面试的回忆,但是我已经分不清是哪个部门面的了。
我整理了我面试过程中被问到最多且次数最多的题目,你们可以测试下,如果看过我之前的文章应该对这些题目是可以理解的,如果没理解,可以文末我所推荐的书籍和资料
中断的处理流程,用的什么指令
伙伴系统
联通块的个数
内存置换算法
大页内存优缺点
逻辑地址到物理地址转换过程
O(n!), O(n^n),O(e^n),O(n^100) 时间复杂度比较
三次握手,第二次握手失败会怎么样
四次挥手,TIME-WAIT原因
数组90度顺时针旋转
旋转数组二分查找
二维数组行递增,列递增查找指定数
LRU
循环队列实现
Linux中进程与线程的区别
链表归并排序
对于一棵二叉树,是否存在两个子树的节点和相等
定时器任务设计
在浏览器输入一个网址发生了啥
arp通信过程
IP层有两个长度,全包长度,头部长度,为什么UDP还需要一个全包长度字段,而TCP就没有
硬中断与软中断的区别
DPDK的优势
数组往右循环移动K位
寻找第K大数
二维坐标上给出N个点,找出某种点,这种点的右上方没有点
SSL握手协议
Linux文件系统
VFS
进程间通信方式
回顾线程之间的同步和互斥的方法
进程的内存布局
DHCP的交互过程
DNS的传输层协议
dns查找过程
Syn泛洪攻击怎么解决
双向链表设计
TCP长连接与保活机制
短链接服务设计
2. 经验篇
回忆下整个准备期间,非常有感触,因为这期间有太多的不容易了,从面试过程来看,我觉得应届生的后台开发的面试考核,主要考察的是应届生的两个主要的方面
- 计算机基础
其中计算机基础主要是包括编程语言、操作系统、网络、数据库、算法这五个方面,针对应届生来说,个人觉得计算机基础比项目经验更加重要,因为学校的项目,往往不是那么的牛逼,甚至还存在很多的问题,而如果你基础可以,他可以培养你,不然他到时候想培养你,都心累。
还有就是考验你是否足够聪明,这个考核一般从算法题,智力题、以及你们的交流过程来考核,在基础的准备期间,一定要注重算法编程能力的培养,主要着重leetcode
简单题和中等题的总结,对于hard的题目,自己看面经积累,例如编辑距离、正则表达式匹配这种题目,再讲一次一定要训练算法题,我师兄其实理论基础很扎实,但是一到手撕代码就崩,最终与大厂无缘,替师兄感到可惜。(20+大厂的手撕合集放在文末了,自取)
- 项目两个方面
还有就是自我介绍,自我介绍把你在学校获得的所有荣誉(和计算机相关),你的绩点(如果排名比较靠前),还有你参与过的项目(自我介绍过程中,只需做简单的介绍,例如这个项目的背景),以及你擅长的技术栈,还有你不擅长的技术栈
例如我就说,我不擅长数据库,所以我从来没有踩数据库的雷,因为研究生阶段,我负责的项目部分,并没有使用数据库,我说基本都忘记的差不多了,然后面试官就主要问我网络、操作系统、编程语言的知识,但是基本上都进行了白板编程,我感觉大厂,其实主要关注你说你会的东西,你掌握的程度有多深,因为这个你肯定花的时间最多,如果你花的时间最多的地方都不过如此,那么可想而知,你到公司学习新东西的时候,可能会有些吃力,另外在面试的过程中要有自信,但是又不能拽(傲娇),有个公司,我给面试官谈我做的东西,他估计并不懂,然后他当时又不断问下很奇怪的问题,所以我就急了,到后面我的态度就很差了,结果可想而知。
3. C/C++准备篇
下面我将我整个准备过程中的资料给大家过一篇,不保证都有用,但是我确实是看这些资料和练习走过来,主要看大家有没有时间或者毅力坚持下去
语言:C++ primer(多看几遍) 、 More Effective C++ 、STL源码剖析、C与指针、 深度探索C++对象模型
操作系统:现代操作系统、Linux内核源码剖析、深入理解计算机系统
Linux环境下的开发:Unix环境高级编程、Unix网络高级编程
网络:TCP/IP详解卷一、图解HTTP
数据库:MySQL必知必会、MySQL技术内幕、高性能MySQL
算法:算法部分我全部整理在百度云了,文末自己去拿,失效了直接加我微信,备注"面试"即可,因为现在太多的好友了,微信的坑位有限制了
也许很多人都觉得算要多刷,也不一定,我感觉刷题还是需要自己亲自动手去敲,然后一步步去优化,这样你明白一个题可能花费的时间很多,但是这样的效果和给你的印象是更加深刻的。
对于算法的训练最好别零散化,应该集中时间刷,这样才能找到感觉,例如一个星期或者两个星期都做算法题,我大概花了一个星期从早刷到晚,把链接里的300多道题刷完了,后面感觉面试白板编程基本没问题,写的非常流畅,当然我本科训练过ACM的题目所以有些算法编程的基础,但是leetcode简单和中等题目其实没有达到ACM的难度,所以不用害怕,没参加过ACM训练,如果平时编程还可以,我觉得从早上刷到晚上10点,应该两个星期也够了,主要看你能不能坚持了
看上述那些理论书籍要记得区分重点,重点就是牛客面经里经常问的那些问题,还有回答问题的时候,一定不要死板的回答,要注意这个东西的来源,为了解决什么问题,和其它类似的东西有什么区别这几个方向来回答,这样能体现你并不是在背书,而是系统的学过这个东西
在进行白板编程的时候,就算这个题目你做过,你也别马上就写出来了,这样他考你就没啥意义了,你可以把暴力求解方案和他讲下,然后你再说想下最优方案。
最后总结了面完所有公司后的高频手撕算法题和当时复习的书籍,相信你如果坚持做完这些题一定会比较自信的面试。最后,麻烦大家点个赞
手撕算法+复习书籍 提取码:xlan
全部评论
(3) 回帖