面经概述
面经概述
第一步——准备简历
简历是求职过程中很重要的一步,好的简历可以提高初筛的通过率,也方便面试官及时发现你的亮点。通常,简历会按照如下几点进行构建:
-
个人基本信息:包括个人信息、联系方式、教育背景等
-
实习 / 工作经历:考虑到大部分人在找实习的时候应该还没有实习 / 工作经历,所以这一点就略去了,有的话写上即可,主要概括一下自己做了什么,取得了什么结果等
-
项目经历:对于没有实习经历的同学来说,项目经历就是简历中最重要的一部分了,基本上面试官在面试的过程中也会重点针对项目进行提问,所以项目千万不能被问穿,不会的东西一定不要往上写,可以有意的在项目经历中写一些自己熟悉的技术来引导面试官往自己熟悉的领域上提问
关于项目经历可以写哪些,有以下选择供参考:
a. 课程大作业,可以包装美化一下,变成一个成熟的项目 e.g. 软工2的项目(
b. 比赛项目
c. 自己复现的一些经典开源项目
d. 一些偏底层的项目,比如简单操作系统、网络协议栈等
e. 如果有同学提前进了实验室体验科研,自己跟着做的的一些成熟项目深入了解之后也可以写上去
f. 保底方案,如果真的真的没有拿得出手的项目,去GitHub上找一个别人写好的开源项目 / 找同学的项目,从头到尾读一遍代码了解技术栈之后
这就是你的项目了,不过这样做切记不要被问穿,不然就露馅了 -
竞赛经历:一般是加分项,有就可以写,没有也无所谓,具体写参加了什么比赛,取得了什么结果,不是重点,不要说废话
-
获奖情况:加分项,有就写,主要是自己什么时间获得了什么奖,比如奖学金荣誉称号之类的
-
论文发表:加分项,有就写,做的什么工作,第几作者(如果是n作可以不写)
-
校园生活(可选):如果简历很空或者自己这方面经历很丰富可以考虑写一下
-
个人爱好(可选)
-
技术栈:自己熟悉的技术,比如编程语言、编程框架、英语水平、数学水平等,不熟悉的不要写。
e.g. 熟悉Java,Python,C/C++,熟悉SpringBoot框架,熟练使用MySQL,CET-6 xxx分
-
自我陈述:主要是对自己的性格、技术水平做一个总结,要向别人传达出你是一个积极向上、热爱工作的人
简历总结一下,最重要的部分就是项目经历(如果有一段硬核的工作/实习经历就是工作/实习经历),篇幅有限,切记不要说废话,最好控制在一页,不要超过两页;不会的东西一定一定一定不要往简历上写,被问穿就是极大的减分项;简历上可以重点强调自己熟悉的技术,但一定要是非常熟悉,否则一笔带过即可。
第二步——收集信息
本人只参与了一段时间的春招实习求职,所以这里以春招时间线为例。
一般2月中旬就会有各大公司陆陆续续放出招聘需求,各个岗位也会有hc(录用名额),所以如果你有实习需求,二月份开始就可以关注各大公司官网或者微信公众号或者牛客网等招聘平台的信息,尽早投递简历,机会更大。如果你没有需求,提前准备制作一份简历也不亏,毕竟秋招 / 保研都会用到。
小红书也可以多关注一些招聘相关的信息,hr一般会在上面疯狂撒网,也会有很多志同道合的同学在上面分享自己的面经,很有参考意义。
等到了大三,多关注辅导员发出来的面试信息,大部分都是可以内推的,直通笔/面试,帮你省去简历筛(虽然呢喃也不太会被筛掉((
第三步——准备笔试
对于参加过算法竞赛的同学来说可以忽略这一步,没有系统刷过算法题的同学可以考虑开始刷一刷经典算法题了。可以从leetcode-hot100开刷,刷一遍对于常见的算法和简单数据结构基本都有了认知,应付面试的手撕代码基本没有问题;不过需要ak笔试的话还是需要一个长期的积累,短期速成比较困难,不过做出大部分笔试题也是没有问题的(做不出来也可以骗分,参考CPL机试),要有信心。可以重点关注如下算法和数据结构:
- 动态规划,贪心,最短路,二分,前缀和,搜索,滑动窗口,排序,最小生成树(考得不多)
- 链表,二叉树,优先队列(堆),栈,哈希表,并查集(考得不多),图
- 对于C++选手,最好熟悉stl库的使用,包括各种排序、插入删除、字符串操作等
笔试基本全是ACM模式(需要自己处理输入输出,取最高分,和CPL机试很像)
第四步——准备面试
顺利走到这一步已经很不容易了,给自己加个油吧。关于实习面试的准备,我个人认为六分靠实力,四分靠运气,没错,运气也是面试过程中不可或缺的重要属性。首先你不可能熟悉所有知识点,也不可能深入了解企业内部用到的技术栈,所以和面试官看对眼,他没有问到太多自己不会的东西、不刻意刁难自己是很重要的。当然,个人实力过硬才是真正的决定性因素。
面试的准备我个人认为可以分为三部分:项目、八股、手撕代码。当然不是所有面试都会有这三个环节,但是大部分是这样的。
项目部分需要你对自己的项目足够熟悉,最好不要被问穿(为什么这里变成最好了呢,因为面试官比较喜欢针对某一个技术不断发散,那很有可能会遇到自己不会的,这很正常),而明确写在简历上的一定不能被问穿(比如你写了自己熟悉Java,但是连什么是多态、继承都不知道)。熟悉包括了解自己的项目做了什么、为什么做、取得了什么效果、自己做了什么贡献等,比起项目整体的成果,面试官可能更关注你做了什么、学到了什么。典型的提问方式是:你在项目中有遇到过什么困难吗,怎么解决的?/ 这个项目有哪些亮点?/ 你负责了哪些模块的实现?等。
八股可以认为是考研408(计网 + 操作系统 + 数据结构) + 一些项目常用的中间件 / 经典框架(比如MySQL,Redis,SpringBoot等) + 编程语言(比如Java语法、基本思想(比如对象继承多态)、部分结构底层实现(比如哈希表)、JVM等),问题的典型特征是基本概念,比如:xxx你了解吗?xxx的实现是什么样的?xxx解释一下?等。八股没有什么好办法,背就完事了,但是全背下来也是不现实的,可以重点挑和自己项目相关的看,比如你应聘后端开发岗,你的软工2项目用的springboot开发,那就要重点看看java+springboot的八股,再比如面试Java岗/C++岗,那就要重点看Java/C++语法及部分功能的底层实现。其实大部分内容翻来覆去就是那几样,不同公司不同人都喜欢问,可以多关注小红书 / 牛客网上的面经,和常问的八股混个脸熟。特别的,面试官很喜欢问多线程的知识(可能是上线服务肯定会用到),而学校的项目很难会涉及多线程及线程安全的问题,所以可以人为包装一下自己的项目,提前了解多线程编程的实现。
手撕代码的话,刷刷算法题,leetcode-hot100基本够用了,不放心可以把面试经典150也做了,基本上足够应付手撕代码了。ps:手撕代码大部分都是leetcode原题,所以从来没做过算法题的同学一定一定要刷一刷leetcode-hot100。面试的时候实在没有思路也不要慌,可以大胆问面试官有没有提示或者换一道题,最后有bug没de出来也不用着急,和面试官说清你的思路也是有希望的。
总结一下,面试的准备是比较耗时的,需要经验的积累,多面几次你就有感觉了。基本素养的培养只能靠多看多背,算法题有空就做一做。面试的时候遇到不会的大方承认,不要含糊其辞东拉西扯,可以直接说自己不太了解或者往自己熟悉的领域上引导面试官。
关于资料的获取,贴几个网站:
总结
找实习是一个被拉得很长的战线,一定要有耐心,对于大三的同学而言可能一边要找实习,一边要准备保研,所以一定要平衡好自己的时间和精力,拿到一个心仪的offer就可以收手了。大二的同学也不用着急,可以先把简历做一做,积累下经验,等有新的成果再把简历更新,到了大三直接一键投递,省时省心(
我本人也只是一个大三的学生,所以没办法提供过多的帮助,只能分享一下自己的个人经验和心得,不当之处、不全面之处还请谅解,一切言论仅供参考。
欢迎访问我的博客,上面应该大概会有一些面经 / 凉经分享