菜鸡的准备之路
3月开始准备找实习,现在4月一号,应该是能拿到阿里本地生活的Java研发岗offer。
这些天来也算是辛苦了,为了后人能够好避坑,写下些许面经。
接下来我将从数据结构与算法,语言基础,计算机网络,和操作系统四个主要方向讲起。
基础部分
数据结构与算法篇
推荐刷题网站:
这两个网站,大家应该都比较熟悉。也是必须要经常逛的。我最近,氪金开了一个leetcode学生会员49/天,主要是为了刷里面leetbook,按照专题来理解。
我觉得在刷题之前可以先看一下浙大翁帆老师的C语言基础,再看一下浙大的数据结构与算法,最后再花个一两天把黑马培训班
的c++课看一下。用c+STL的风格去刷题,还是挺舒服的。没有基础不要紧,当年我C语言在班上是垫底的存在。
打好刷题的语言基础后,接下来就可以开始干题了。
我是先把剑指offer刷了三遍,第一遍都是不懂就看题解,第二遍是按照类型刷,第三遍是无差别从头到尾把题打完。这期间感
谢K佬的陪伴,路飞永远滴神。
刷完三遍大概要花个80个小时左右,50->20->10。有时候,不会就先背下来,写着写着就有感觉了。
但是做完这些还不够,只是说对算法有了大致的感悟,知道自己哪里很菜了。
我个人建议还是针对,深搜dfs,动态规划dp这两个再精刷,现在我也在做这件事。
将做过的题,觉得有价值的可以归类,进一步可以按照难度分类,或者详细点儿放一下关键代码进去。
总之,题目虐我千百遍,我待题目如初恋。
语言基础篇
我面试的是java岗,但是java的面经太多了,所以我取巧,看了点儿c++去忽悠面试官。面向对象的一些特性,c++的虚函数,多态,继承。STL中vector,list,deque,map,set,unordered_map容器的使用以及底层的基本原理还知道。迭代器的分类与指针的区别。
当然要是问你一些java基础你也得会。比如包装类,hashmap,synchronized等。
语言这一块儿,我有点儿拉跨,大家好好看面经就够了,将牛客网那个面经汇总以及精华专题看完。
计算机网络
这个很重要,互联网公司还是很看重对网络的掌握。但是大多在应用层和传输层。比如HTTP协议和HTTPS协议的区别,TCP和UDP的
区别,socket编程。大家计网课好好上,把面经上的内容都整明白就行,面经基本上都会注意一些细节比如TIME_WAIT状态在四次挥手
中的作用…
操作系统
三大块吧
- 虚拟内存
- 进程和线程
- linux基础
上面都是骨架,我建议大家每个小专题,都建一个小文档做笔记,按照专题分类。牛客网分的很细致,你可以模仿他,找到自己的不懂的
地方,或者觉得重要的记下来。
进阶
项目
我们寝室因为没做过什么大型项目,就糊了一个HTTP代理服务器(计算机网络课的实验)上去,一般都会要求你优化,这个时候你就去网上搜搜,别人代理服务器设计的思想,装作自己能优化一样。简历上如果有自己不熟悉的项目,千万别写上去。
框架
这个会是加分项,我们寝室用过,但是不熟了,所以没写上去。一知半解的,千万别写到简历上去。
简历
简历尽量简洁,不要整太多东西了,体现自己基础扎实就好。
结语
大厂应该还是很看重基础的。和面试官友好交谈,理清自己的回答思路,回答问题宜层序遍历,不宜dfs。
自己准备还是太仓促,就畅谈一下我的理想状况吧。
算法部分,将每个专题都刷上50道题。用c/c++,java两种语言刷。
操作系统,找个B站的课程,跟着学习一周,看完。(学校没开这门课)
计算机网络,自己再优化一下那个项目。
语言部分,将Java高级和并发编程看完。
框架部分,找一个培训班结课作业,撸出来。
设计模式,将headFirst那本书看完。
再后悔一点儿,就是大一以及大二上都去整数学了,没好好编程。疫情居家成精神小伙儿,没好好学习软件构造,没用Java好好写实验。
欠的债总是要还的,这次面试我有深刻体悟。哪个时候醒悟,想清楚自己要什么,那就去干吧。
贴一个资源连接,大家要资源可以去这里下载。CS的书