今天参加了TEG后端开发的处女面,感觉还可以,对今天的面试做个简短的总结,同时也为可能的后来人做个参考。
首先一开始就先问问你哪里人,在什么地方面试这种比较无关紧要的话题,缓和一下气氛。
接下来根据简历开始问,既然你参加了算法竞赛,那么你在队里是一个什么位置,主要做哪些题。
我说都有一些涉及,数论啊图论啊数据结构啊这些,面试官就抓住了数据结构这一点,开始进行数据结构的提问。提问问到了你都认识哪些数据结构,对于这些数据结构有什么特点。
当时太紧张了,把栈和队列都混起来了,还好面试官打了圆场提醒了一下,我才能继续接下去。下面又问了认识的排序算法,快排是不是稳定的排序,然后对于每个数据结构的复杂度,重点提问了红黑树的原理,和哈希表的坑(也就是哈希碰撞要怎么处理),这些都回答的还算到点,最后问了一个问题,怎么在很多数据里面找到最大的100个数,我脱口而出用优先队列,面试官让我再想想,但是我真的想不出来更好的方法了……然后就随便回答了一个用位图啥的,结束后一看发现还可以用分治的方法,然后还有一个hash去重,算了算了。。。(靠当初为什么没说并行化算法也可以啊)。
面完了数据结构就是计算机网络的提问,让我复述OSI七层模型,但是我只说出来了TCP/IP的五层(其他平时又用不到。。。),面试官也没有继续多问,让我说了一下从浏览器中输入一个URL按下回车发生了什么,然后还有traceroute的原理,以及如果你打不开网站你要怎么去排查网络故障这些基本都答上来了。
然后就到了操作系统,操作系统提问的比较少,就只是问了一下进程和线程的区别,然后线程并发处理的时候怎么去解决消息队列的冲突。我当时回答加锁,结果他说加锁效率太低了,有没有更好的方法,我想到那个哲学家进餐问题,搞个服务员,所以回答加入一个调度者代替每个线程去访问消息队列。
接下来是数据库,嗯,这部分比较惨,丢过来给我一个sql语句,带有where和group by语句的,问这个sql语句的执行顺序是什么,我当时回答的比较混乱,然后问了我都用过哪些数据库,我只用过mysql和sqlite(这个大概不算)。还有问了如何区分唯一索引和主键索引,这个我只回答上了主键索引只能有一个,但是唯一索引可以有很多个,没了。
最后由于简历上有写,于是还加入了一些安全方面的问题,问了我如何安全的存储网站的密码,就回答哈希加盐。还有让我讲讲HTTPS的原理(这我哪知道),回答了一些浏览器预置证书去验证网站身份啊,然后非对称密钥交换,最后对称加密传输数据。
大概能记起来问题的就这么多了,最后面试官问了一下有没有还有问的问题,就很普通的问了学习的建议之类的,就结束了这次面试。
总的来说,我对这次的面试还算满意,但是也体会到了自己仍然不少不足之处,总后面的面试也要加油!