从3月下旬开始到处投简历到现在,陆陆续续面试了有很多次了,现在做一些总结。
笔试
笔试做了网易、阿里和腾讯3家公司的,总体上来说网易和阿里差不多,都是一些常见的java面试基础题,不过考的非常细致,多刷刷牛客上的java面试题应该就没多少问题了,还有一些计算机网络、操作系统、算法之类的题目。腾讯投的java岗,但是笔试做的c++的,太坑爹了,还好5年前的一些c++底子还在,像考sizeof()结果的题就出现了好几次。关于编程题腾讯的更贴近acm,网易和阿里贴近leetcode上一些题。
腾讯一面
一面基本都是面试的基础知识,没有怎么问项目相关,具体有:
非递归实现二叉树前序遍历(两种,stack压栈左右结点、或者一直先压左结点,准备就非递归的几个算法再写一篇博客);
死锁是什么,出现的条件,解决死锁的办法(银行家算法,资源排序,总之破坏死锁的四个条件);
hash实现,怎么解决碰撞冲突;
http协议长连接与短连接,http1.0怎么实现长连接(轮询、long poll、websocket,这个答的有点运气好,回来查了才知道websocket不是http协议上的,是一个基于http新协议,z这里找了一篇写的比较好的博客(https://www.cnblogs.com/Herzog3/p/5088130.htmlg3/p/5088130.html) ;
https协议(没了解过);
tcp握手、挥手过程,为什么有timewait;
有1000万以上的数,数的大小范围是1到100W,问排序算法(分治、快排、或者计数排序);
给定一个ip组,如1.1.1.235~1.1.2.10,给定一个ip,怎么使用O(1)的方法判断它在哪个组里(我给了trie树的方法,但是面试官好想不太满意)
final,finally,finallized的区别;
final可以用在什么地方;
sleep和wait的区别;
在try。。finally中,try中有return语句的话finally会执行吗;
面试的结果总体来说不太满意,tcp,http很久没看过了 ,忘得差不多了,https完成没怎么了解。
腾讯二面
刚开始就项目介绍,说了说去年在阿里实习做的项目(一个分布式数据迁移项目),提到用到了一些中间件。于是面试官问了一些中间件的问题,结果一面懵逼。问了了解哪些中间件,答rpc框架、消息中间件、缓存这些,我都只是用了用,只是稍微看了看原理和架构。面试官让我介绍这些中间件的优缺点以及zookeeper在其中的作用,都没答出来。
接着问了算法:
N个独立区域,共M条两点专线网络,判断是否所有N个区域都是互相联通的。一开始直接bfs,dfs,面试管显然不太满意,后来灵机一动,用并查集解决了;
gcd算法,辗转相除;
给定一个数n,求n!末尾0的个数。就是求小于等于n的数中因子5的个数;
还问了些什么有点忘了。。。。总之问了好几道算法题。。。
面试算法题都答出来了,面试结束时面试官让我准备hr面,并且告诉我多了解一些中间件的原理,更深入去挑战一下,不要单纯地看性能、看架构。
腾讯hr面
老规矩,自我介绍。。。
问了去年阿里的实习经历
大学期间做过什么项目
了解什么新的技术吗
什么时候对it感兴趣的,自学过什么吗
等等等。。问得小问题挺多的,最后面试官说表现不错,口头给了offer,但是几天过去了也没动静。。。
总体来说腾讯注重算法基础,看看《编程之美》《剑指offer》这些书很有帮助。
网易
杭州面试,来回路费得倒贴600,,还得两天住宿,没敢去。。
阿里
去年在阿里b2b部门实习,今年投了基础事业群,很具有挑战性的部门,确实也挺想去的,但是二面遗憾挂了,总结一下
一面
时间过得有点久了,记得不清了。。
java容器(答得比较详细,有List\Map\queue三大块,整体继承体系、各种容器的实现原理、工具类,concurrent包下的cas容器、阻塞队列等等,以前写过一篇相关博客(https://my.oschina.net/u/2248183/blog/1454433) )
final、finally、finallize
public、private、default、protected几种区别
抽象类和接口异同
项目介绍
二面
二面的面试官是当年同校大了三级的学长,居然碰到学长了,亲切地喊了学长。。
一上来问了去年实习做的项目、遇到的问题、怎么解决的
多台机器海量日志按时间戳先后顺序合并(感觉这个答的有点不好,当时想日志太大,不能同时读取,得用随机存取,结果下来查了查,看来对io还有点理解错误,随机存取和读取量无关,只是读取的顺序而已。然后每次读到时间戳,选择最先的放入新日志文件就行。)
动态规划和贪心算法的区别,用背包问题举例。(动态规划寻找全局最优解,每一步依赖上一步所有解,因为下一步的最优解可能不是上一步的最优解得到的,而是其他解。贪心算法寻找局部最优解,每次依赖上一步局部最优解得到下一步的解)
kmp算法原理、要在十亿个商品中搜索某类商品,kmp和完全匹配的区别、另外问什么kmp算法可能比完全匹配更慢。(没答出来,面试官说因为操作系统内存调度,kmp的next可能到处乱跳,频繁换页。这也行。。。)
在一个上亿次循环中,只有一个i++操作,为什么运行时间可能是几十ms,也可能是几十s。(完全答不出来,给了答案,和cpu优化有关,部分cpu会进行阵列计算优化。这。。。)
最后聊了区块链pow、hash计算的一些问题 (这。。。)
本来感觉还可以,最后查状态挂了,心里感觉一直不太好受,感觉面试官的问题有点刁难,可能基础平台与底层技术接触的比较多吧 T_T。