以力扣某用户分享的前端实习面试为例。面试前,面试官们一般会针对候选人的简历做一些面试题准备。
首先是会问简历上的实战项目,不过考虑到实习生没有工作经验,大部分项目都是课程设计或者跟着网课做的项目,所以这部分要求不是非常高,只要能说清楚自己做了什么,用了什么技术。
其次是计算机的基础,比如:数据结构、操作系统、网络、编译等等,这里面最重要的就是数据结构与算法,一般稍微好点的公司都会在面试的时候加上一两道手写算法题。
面试中考察的算法和数据结构内容主要包括下面这些知识点:
算法:
排序算法:快速排序、归并排序、计数排序
搜索算法:回溯、递归、剪枝
图论:最短路径、最小生成树、网络流建模
动态规划:背包问题、最长子序列、计数问题
基础技巧:分治、倍增、二分法、贪心算法
数据结构:
数组和链表
栈与队列
树和图
哈希表
大/小跟堆,可并堆
字符串:字典树、后缀树
最后,还包括你面试的岗位所涉及的知识点,如果你面的 Java 就会问你该项的知识点,同时还需要了解常见的后端框架,例如 Spring 、Django 等。
要是面前端那会就问 JavaScript 、 CSS ,以及常见的前端框架,例如 React 、Vue 等。所以,该背的八股还是要背,该刷的算法也还是得刷。
对自己的项目“心中有数”
写在简历里的项目,必须做到“心中有数”,可能很多同学做过不少项目,但是面试时被面问到却说的比较模糊,这是因为没有提前准备关于项目的问题,所以当你决定把一个项目写进简历时,应该提前提炼出项目难点和用到的技术栈,以免被问到时不知所措。
聊到自己做的项目主要是为了突显你的技术能力,能够说出自己遇到的一些问题并通过分析来解决以及优化的话,能够极大地提高印象分。
即使在项目里你做的事情比较基础,也可以深挖所做需求背后的原理和要点。
例如:写入数据的时候如何防止丢失、如何保持最终一致性、要扩展的话如何分库分表?会增删改查的虽然多,但是明白这些原理的面试者可能不多,有了这些过硬的基本功,相信面试官也会对你更有兴趣。这是面试中的加分项。
如果有参与过一些著名的开源项目、阅读过它的源码、了解一些核心功能的实现原理,在面试的时候能够巧妙的展示出来,也会有所帮助。
常见的问题包括:
这个项目遇到了什么技术难点,你是如何解决的?通过这个项目你积累了哪些经验?这个项目你学习到了哪些技术知识点?
由于每个人对于每个系统的理解都不一样,涉及的业务以及遇到的问题也各不相同,因此可以引导面试官向你熟悉的知识点提问,尽量能避开你不熟悉的业务场景或技术方向。
简历上尽量少出现或者不出现自己不熟悉的技术点,不然面试问到时会比较减分。如果面试中实在答不出来也没关系,可以主动向面试官提问,让其能给自己一些提示。
在一边提问一边思考解决的过程中,哪怕一开始思路比较乱也别担心,面试官很多时候只是想看候选人在面试难题时是如何思考的,并不是一定要你答出来。
实用的小建议
1、越简单的问题越要谨慎,力求答的全面而准确。
一般面试官设计面试题目,都是由浅入深,简单题代表着面试官心中的一条线,这种题没答好,有时候会直接影响面试结果。
同时还可以展示你解决问题的能力,解决问题的能力是程序员必备的能力之一,也是技术面试的重点之一。
a. 熟悉常见的问题类型和解决方法,比如死锁、内存泄漏、性能瓶颈等。
b. 掌握问题分析和解决的基本方法,包括问题定位、问题分析、解决方案的设计和实现等。
c. 学会利用各种工具和资源解决问题,比如调试工具、日志分析工具、Stack Overflow 等。
2、回答问题要简洁,突出重点。
面试官一般都会准备一组题,目标是要全部问完,所以每个问题都会控制时间。这里举几个反例:有的同学可能某方面知识复习的不到位或者是比较紧张,回答的时候会反复强调这一点,这种行为没有任何好处,停顿一下,深呼吸一下,都是更好的选择;
有的同学可能正好问到了准备的比较充分的问题,引申了很多不太相关的内容,这里有个技巧,在引申的时候可以提几个关键词询问面试官,如果他比较感兴趣,再继续说,这样会比你直接滔滔不绝最后被打断好很多。
3、不知道的问题不要强行回答。
直接告诉面试官就好了,当然也可能是没能理解面试官的问题,这种情况直接提问就好了。这样比你支支吾吾或者答非所问好很多,既能节约时间,方便在其他问题上延展,又显得更自信。
4、算法题可以先简单讲讲思路,不要闷头写代码。
这样既能早点发现思路中错误的部分,节约时间;又能避免最后代码还没写出来面试时间就到了,这种情况有的面试官会直接认为你这个题没做出来。
5、要善用提问环节。
一般不要问自己面试有没有过这种问题,除非特别好或者特别差,面试官也很难当场确定。比较推荐大家问下自己的回答的不足之处,借此积累经验教训;还可以问部门和工作情况,表达自己的意愿。
总之,到这个阶段,你的问题和回答都对面试结果影响不大了(尤其是技术面试),能获得一些指点是最好的。
面试后自我总结
无论面试结果如何,都要记得做好复盘,不要被一次两次的面试结果影响。面试是一半看实力一半看运气的事情,回想下自己哪里可以做得更好,简历哪个部分还可以修改的更好。
如果你有多种选择,那么也可以多面试几家。对比一下公司的优缺点,和你的好朋友聊聊,寻求他们的建议。如果没有拿到 Offer 也没关系,抵达的罗马的方式不止一种,我们要做的就是练好自己的基本功,在机会来临的时候抓住它,这就够了。