本文首发于微信公众号:程序员乔戈里
简历
1.首先说说简历,好多人都问过我,乔哥,进入bat这样的大厂是不是学历都需要211,985 其实,不是的,这次我面试的这个同学就是二本院校出生,我身边认识的 苦逼的码农 和 编程剑谱 的号主都是二本出身,也都拿下了BAT的offer,所以BAT这样的大厂并不是一定要211,985学历。继续说回到这位同学吧,这位同学虽然是二本,但是简历还是通过层层筛选,进入到了面试环节,肯定有一些过人之处。我看了看这位同学的简历,果不其然,还是很有料的。
我感觉可以用 光鲜亮丽 这四个字来形容,这位同学获得过蓝桥杯省赛一等奖、蓝桥杯国赛二等奖、计算机web大赛(具体名字忘记了)国赛一等奖、校级奖学金若干,在学校经历方面计算机团委、班长等(虽然这些经历对于技术面试并没有什么作用,但是还是可以看出来是个很积极的同学),熟悉掌握Java等之类的。
看完以后,首先是觉得这同学这经历可以,虽然蓝桥杯不如ACM有含金量,但是能拿省赛一等奖应该编程功底不差吧;另一方面也想了想HR的筛人标准:对于学历非985/211的学生,应该在某一方面有比较亮眼的成绩,简历筛选应该就不是问题吧。
约面试
看完简历后,就是约面试了,leader让我约面试,电话面试就行,但是我想得还是视频面试一下,也能看看在线编程,所以我自己去牛客网认证了一下,成为了牛客网的面试官,可以发起视频面试,可以看到面试者手写代码,也可以看到面试者有没有切出去浏览器界面,正常面试者应该不会频繁切除当前的视频面试界面,作用还是很大。
- 这是面试官的界面,主要讲讲在线编程题,面试官可以自己出题,也可以从牛客网的题库里面选一道题目出给面试者;
- 右下角的文字框可以输入文字,让面试者看见
- 右下角的输入框上面的框会提示面试者的浏览器状态,如果面试者切出去了当前页面,那么这里会提示面试者离开了当前页面。
面试
自我介绍和项目亮点
照例让面试者进行了一波自我介绍和项目亮点,这里建议大家自我介绍的时候尽量说一些和技术相关的,不要说一些和技术无关的内容,这位同学在面试时候说了自己的班委团委经历之类的,其实我是不感兴趣的,毕竟是招来做开发的,技术OK就行。
项目这里我问了问这名同学有什么亮点,(这个问题基本大多数面试官会问),这里他没说任何技术上的亮点,感觉只说了一些项目的背景,提出这个想法很好,这里感觉这样说不太好,这可是技术面试,说些技术上的亮点比较好。
具体思路可以参考一下这篇文章:可以作为你项目亮点的文章!
面试题
毕竟是第一面,主要还是考察计算机基础知识:计算机网络、操作系统、数据库、Java基础、Java集合、JVM虚拟机、Linux、手写算法这些。所以看他项目没啥说的,我就直接开始问这些了,这些如果答得好的话,基本一面是OK的。
我问的问题基本能是我之前准备面试的时候整理的别人面经上的问题,并自己总结了一份答案,具体这份面经和答案已经同步到我的的github:https://github.com/gzc426/Java-Interview (记得给个Star),掌握我这个github上的内容,不说我这一面了,99%的公司一面都难不倒你。
画外音:求求您给个Star吧!
Java基础
我首先问了Java基础,八种常见数据类型、拆箱封箱、重载和重写、String和StringBuffer/StringBuilder的区别、Object的方法/EQUALs和==的区别等都回答的不错,然后我问了int和Integer在输入框输入了一道题,让他做一下。
Integer a = new Integer(100);
Integer b = new Integer(100);
a == b
问他a和b是不是相等,他说相等,当时我内心OS:???
我就想问问他是怎么想的,我就说:“嗯,为啥是相等?”,他说,Integer是有个缓冲区(-128~127),100在这个缓存区以内,所以是相等的。
我当时就说:你再好好想想,然后再回答这个问题。(其实我这么说,是想让他说出正确的答案),如果面试官让你说你再想想,要想想自己是不是刚才说错了,因为我觉得这个问题,不应该搞错呀。
然后他又继续说了一遍刚才的回答,没有说出正确答案,然后我就和他说这个两个不相等,是比较的两个对象的地址,这里我有点失望。
OK,继续问问HashMap ,依次问了HashMap的原理、get、put方法、JDK1.7和JDK1.8的区别,回答的都不错,然后问了HashMap为啥是线程不安全的举个例子说明一下,没回答上来,那HashMap翻篇,这块还行。
继续问了ConcurrentHashMap,他说这块还没了解,OK,那Java这一块先这样吧,问点Linux、计算机操作系统、数据库、计算机网络吧,Java基础这一块还行勉强OK。
计算机基础
Linux
我:Linux 怎么打开一个文本
他:vi
我:怎么进入编辑模式进行编辑?
他:这块之前用过,现在忘了。。。
到这里,感觉他应该很长时间没用过Linux了,或者之前就没接触过Linux,这么基本的都不知道的,真的太伤了。
我继续问:怎么查看CPU,还是不知道,我继续问怎么查看内存,也不知道,怎么查看文件大小,还是不知道,看来Linuyx这一块真的是很欠缺,这都很基本的了,也没问啥复杂命令。
这里和大家要说的是,Linux基本大多数公司开发的时候都会用到,不会Linux的话一定要去学一学,这些Linux命令不会真的可能会让面试直接失败。
刚好最近双11,阿里云有活动,云服务器新用户只需要7元一个月就可以购买了,云服务器可以学习Linux搭建Web网站,拼团进入前100还可以瓜分100W现金,目前我的团已经在前100了,想买云服务器的可以扫码进入我的团,如果进入前100瓜分成功,我会联系加入我入团的朋友返红包给大家
画外音:原创不易,就当加个鸡腿吧~
计算机网络
好的,继续回来,既然Linux这块什么都不会,那问问其它的吧。
我:问点计算机网络,三次握手和四次挥手说一下
他:三次握手就是建立了连接,发送了三次,四次挥手就是断开连接。
我:能具体些吗?说一下状态,连接时候发送的SYN值的情况?
他:这个不知道。
这里和大家说的是,三次握手和四次挥手真的是面试必考的了,过程一定要熟悉,能在纸上完完全全的画出来的那种程度
我:为啥要三次握手不是两次握手和四次握手?
他:四次握手成本高,没必要,两次握手不了解。
嗯,这里之前有写过文章,这篇,【漫画】TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?
我:状态码3XX、4XX、5XX
他:不了解。。。
我:OSI七层说一下
他:七层不了解。。。。
操作系统
这块问了进场和线程的区别,同步异步的区别,都回答得不错,问了阻塞和非阻塞,没回答上。
数据库
问了ACID,这个竟然不知道,问了索引是什么,也不知道。。。。
问完计算机基础以后,感觉他计算机基础这块掌握的太差了。
手写面试题
看他简历上是得过蓝桥杯国赛二等奖,那么考一道手写算法题吧,我也没出很难的,出了一道合并两个排序链表。
然后他写了半个小时,也没写出来,好吧,那面试就到这里结束吧。
最后
要关闭页面的时候,我突然发现这些,额,在我和他面试的一个半小时期间,他大概切出去了这个面试页面有100多次
不知道他切出去页面干什么去了,咋也不敢说咋也不敢问,建议大家不要切出去页面,面试官都会看到的,反正切出去页面印象肯定会不好的。
如果他计算机基础能回答得不错,手写面试题能写出来,我这里会给他通过的。
如果是头条用户,可以在我的头条号程序员乔戈里后台回复 资源获取价值59998元的编程和考研资料
觉得文章不错的欢迎关注我的WX公众号:程序员乔戈里
我是BAT大厂后台开发工程师,,专注分享技术干货/编程资源/求职面试/成长感悟等,关注送5000G编程资源和自己整理的一份帮助不少人拿下java的offer的面经附答案,免费下载CSDN资源。
如果你对算法感谢趣,欢迎关注我的公众号 图解算法,使用Python/Java/前端/C++四种语言对Leetcode和剑指offer进行漫画讲解,帮助你快速搞懂算法!