首先自我介绍,非985,非211学校,主要从事Java后台开发,大一至现在做过两个项目(都不深),有一段去小公司的实习经历,今年刚到学校开始准备实习,陆续投了小米,阿里,华为,腾讯,京东,网易,今日头条等一系列互联网公司。
小米,腾讯,今日头条挂一面,网易笔试过了和华为冲突了,去华为面试了,只拿到了阿里的java后台offer,华为应该算是口头offer吧,然后其他几家公司就不打算去面试了。
小米
小米是最早的,向来重视算法出名。
准时电话打过来,首先自我介绍,然后倒着输出链表元素(压入占输出),然后问如果要修改链表元素呢(也就是3个指针翻转链表了),然后让手写链表倒数第k个数(两个指针跑,一个先跑k步,后面一个再跑),写好后发邮件给他,老实说以前面试都是说一说算法就行,第一次这样写代码发过去,有点紧张,哆哆嗦嗦打开eclipse写完了发过去。
第二题:给定一个字符串如果某个字符是? 后面可以表示任意多个字符,如果是.说明可以表示一个字符,现在给定两个序列,问第二个能否符合第一个序列,卡住了,想了个递归发过去了。
第三题:设计红包算法。这个想想不是简单么,每一个红包随机啊,最后一个总数减就是了,后来面试官提醒必须至少保证每一个红包为0.01,然后改成先每一个都放0.01,再随机,估计有更好的方法。
你还有什么想说的:
说了自己是米粉,买过小米4,小米5,小米耳机,小米充电宝,关注过小米b站账号,希望能加入小米.面试官来兴趣了,来说说对小米6有啥期待,希望用上澎湃么,一脸懵逼,说了句要是澎湃比晓龙835好就行,只听见面试官爽朗的笑声....
结果:再无消息,第二题和第三题答得都不好。
阿里(4面+hr)
1,自我介绍。
2,项目介绍。
3,实习介绍。
4,java基础(真记不得了,这个真不难)
5,java内存模型(撸完深入理解java虚拟机后都是菜)
6,java多线程(这个地方就问了同步锁,可重入锁,读写锁,3面问的比较深)
7,MySQL事务,存储过程,视图,索引,分区全家桶(问了很多点,老实说,答得不好,所以一面完恶补了下)
8,数据结构会哪些(我去,我还以为阿里会问些高大上的呢,答栈队列树图,问了树的定义....)
9,问会不会堆,怎么建堆,bilibala讲了两种方法,然后问堆排序怎么实现,bilibala讲完还说能用来做求第k大数.
10,第k大数还能用哪些方法,各自优缺点(编程之美上的)
11,说一下7层,4层协议,说一下各自每一层干啥的
12,tcp和udp区别,如何用udp实现tcp
13,操作系统全家桶(lru,磁盘寻道,死锁条件)
14,有啥想问的么
结果:感觉都是基础,问的非常细,但是数据库答得不好,后来恶补了下,总共问了1个半小时还要多....
二面:
二面爽歪歪,面试官说小伙子,你写博客啊,来来来,我们问几个你博客上写的问题,那绝壁都会啊..
然后问了设计迷宫游戏的时候怎么设计生成迷宫的算法,怎么设计游戏难度,拼图游戏怎么保证一定有解(n*m分奇偶性讨论)
然后没想到面试官也会计算智能,遗传退火蚁群禁忌搜索聊的都很开心,扯一扯退火的公式,遗传的流程,选择下一代的方式啊,禁忌表的生成
还和我说什么信息论,我擦,不会,不过没事,能感觉出来面试官已经挺满意的了.
半小时就结束了,感觉和面试官聊的挺开心的,当时就觉得这轮妥了。
三面:
疯狂问多线程与并发相关知识:
40多分钟吧,答的一般般,可能是源码答得比较好,其他的说真的也就是泛泛而谈.
四面:
hr面:
1,人生经历
2,人生最大挫折
3,在校除了学习还干什么(打乒乓球啊,扯一扯从小到大拿的比赛的奖)
4,有妹子没有,喜欢她什么
5,我要是挂了你,你会怎么样......(这个问题一出,我就感觉好虚)
等了一个月后于4月14日晚收到offer意向书,当时那种感觉,这辈子不知道还能不能有机会感觉到
总结:没有牛逼的项目,没有牛逼的学校,只能拿基础来填,注意他问你一个问题,你要找个角度展开,面试官可能比较满意这种.
多线程,数据库,java集合这几个都要了解到非常深的地步才能不变应万变.
腾讯
1,去面试官下榻的房间,上来做两道题目,生产者消费者问题,还有一个就是给一篇文章查敏感词汇的,很快写完了
2,问如果共享区空间溢出了呢,黑人问号,没听懂...
3,我们换个问题,如何判断某个端口是否开启,建立socket连接,发信息,面试官说如果是udp呢,无状态呢...不会
4,数据库索引hashmap和b+树区别
5,谈谈滑动窗口模型,扯了扯,问用什么数据结构设计滑动窗口...链表,数组,队列,所有线性结构都答了一遍
5,知道arp不,知道,先查表,后广播,再单播回去,再问,用什么数据结构设计这张表,建hashmap,空间不够,怎么维护,秒想到lru,答类似lru,把最远未使用的拿掉,维护一个时间,再次访问就更新时间,问还能优化么,想到o(n)一般优化成o(logn)么,想到建一个堆,每一个堆中元素指向hashmap的键,然后维护堆即可,面试官还不满意,答曰不会
结果:1面挂,可能是因为那个面试官是c++的,所以没聊一些java内容,聊起来有点吃力,计算机网络只知道东西,再问深一点就不行了
华为
编程题三题两道水题还有一道迪杰斯特拉加输出路径。http://blog.csdn.net/fengsigaoju/article/details/65934742
性格测试:这个感觉是华为面试中最难的环节,第一次没过,收到重测邮件第二次才过得,可以参考http://bbs.tianya.cn/post-516-150970-1.shtml
一面:去了先签到,然后等着喊你,问项目,现场还带笔记本演示了下 ,这就下一轮了...
二面:聊人生,聊了实习经历,学到了什么,对华为的认识,有没有兴趣搞信息安全,没了...
总结:华为面试1看人品,2看项目,有项目啥都好说。另外华为很多面试官不会注意问你技术问题,你可以自己表现自己,临走那个面试官说小伙子不错,5个工作日给你发offer,腿一踉跄,这就等offer了...