先自我介绍一下,本人来自西安的一所211计算机高校。17年研究生毕业,先面试了阿里,四面然后挂了,具体参考: https://blog.csdn.net/dlf123321/article/details/52659174后面面试腾讯,三面,过了。具体参考https://blog.csdn.net/dlf123321/article/details/52659174 。之后两年半就一直在腾讯做分布式KV存储的工作。一直到今年二月份。
阿里社招的整体感觉
1 70%看项目
2 20%看基础知识
3 10%看个人性格
因为是找在阿里的师兄做的内推,因此整个面试流程都很快。基本上一周内就走到hr面了
2-18日给师兄简历,请求内推。
2-19日一面
- 1 自我介绍
个人履历
主要项目(一两句话)
个人评价(自己在分布式系统上的经验和喜欢写文章,喜欢总结) - 2 换工作的原因
进入舒适区了,最近都是在重复工作,对自己的发展不好 - 3 讲讲核心系统的模块
三五句话把系统讲清楚。 - 4 两年里,那个项目,挑战最大
说说自己修复的最复杂的一个bug
主要说自己的分析过程,和后续的反思,具体的解决方案其实不是最重要的 - 5 具体项目里面的一个小问题
面试官很专业,问了如果数据写失败如何
因为写失败的问题,我引出了关于raft协议 - 6 你现在java掌握的怎么样
我知道JVM的内存组成,垃圾回收机制,根追溯逻辑,JDK源码,多线程相关。(大概有2分钟把自己知道的都说了一遍) - 7 这些知识是你自己在项目里学的还是自己在读博客知道的
都是自己看博客学的 - 8 java io和nio
不知道
太惭愧了
https://blog.csdn.net/dlf123321/article/details/47010255
我自己之前写过的东西,但是当时确实想不起来了 - 9 某个模块,在某个时间夯住,你怎么排查
先确定是谁在请求我
是否是因为请求量特别大
先确定如果在别的时间调用它,是否有问题
把具体逻辑展开,看具体是哪个流程出问题了 - 10 怎么确定任务是cpu的问题还是io的问题
Top命令,perf命令 - 11 spring你都知道什么
说说我对Ioc和aop的理解 - 12 spring事务的原理
说说你知道的,不要对你不知道的地方说太多 - 13 你接到的项目需求都是什么样的
项目已经完成了,但是我觉得模块的速度太慢,引入了内存文件系统 - 14 了解业务系统么?
聊到对业务看法
要想到用户所没有想到的东西
项目做完之后,从性能,可用性,可靠性上再反思一下
区分业务和技术。有的时候,不是所有的问题都需要用技术去解决 - 15 你还有什么问题问我
阿里加班么? - 16 在线写代码
//实现一个通用的本地缓存的代码片段,要求。
1、使用方可以指定缓存中最大的元素个数。
2、使用方可以指定缓存中单个元素的缓存失效时间。
3、缓存中元素的淘汰策略采用最近最久未使用的策略(LRU)
我看完题目后就直接给面试官说用LinkedList
然后开始写代码
实现完主要逻辑后我还新增了几个特性:
1 性能 加上了读写锁
2 如果进程死掉,要可以从硬盘恢复,当然默认是不恢复的
3 允许用户直接remove某个元素
具体的代码可以参考
https://www.cnblogs.com/think90/p/11443367.html
关于定期删除,使用timetask即可
另外上面的实现,其实不算是缓存,你缓存,总得有个k和v吧?但是我当时在写代码的时候,问过面试官,他说可以不用key。
如果想用key的话,key参见linkedhashmap
如果大家还想继续优化的话,建议参考google的guava。
如果还想挖,还有CaffeineCache
一面感想
作为社招,其实大家默认你二叉树反转或者基本的数据结构什么都是知道的,主要问的也是项目。再大家面试前准备的时候,要着重做反思。要反思,我的这个项目还有什么可以优化的?性能上优化,可用性优化,伸缩性优化等等(其实我校招的时候,就已经这么做了)
其次,项目里,你自己做的部分要很熟悉,面试官很有可能会问你,你印象最什么的模块是什么?这个时候你就要说说你的工作,出现问题的时候,你是怎么分析的,怎么解决的,怎么在解决的时候不引入新的问题,解决之后,还可以做什么反思?
总之就像《叶问3》里甄子丹说的这个世界不是属于有权人的,也不是属于有钱人的,是属于有心人的。,或者像《三体》里章北海的父亲说的那句:要多想!
另外还有一点,你得明白面试的时候,你需要展示出你知道什么,而不是你不知道什么。
所以碰到一个问题后,先三两句话把问题的核心解释清楚。然后在面试官不反对的情况下,适量延展一下别的问题。
还是那句话你要展示出你知道什么
2-20日二面
- 1 一些闲聊,具体是在哪个部门,什么时候复工
- 2 项目和redis有什么区别
- 3 项目有几个人,你的定位是?核心人员还是附属
- 4 说说项目的结构
- 5 数据一致性的理解
三种数据一致性,强一致性,弱一致性,最终一致性
https://blog.csdn.net/dlf123321/article/details/51352103
再说说项目里关于一致性的实现方式
引出了对可靠性,可用性,可扩展性和面向未来的理解 - 6 对网络了解么?tcp释放的时候是个什么状态
不了解 - 7 跟别的开源系统有没有比较过?
引出WAL - 8 系统里面是怎么使用跳表的
- 9 项目里和新人是怎么协作的
- 10 说了一下自己写文章,沉淀技术的事情
- 11 如果来阿里是想干底层技术还是说想干上层业务
- 12 java还能回忆多少,现在主要是做c++
- 13 腾讯开源的存储和你们的项目有什么关系
面试官直接说 你通过我的面试了
然后二十分钟之后,有个小姐姐和我约三面
二面感想:
把项目好好总结总结
把项目好好总结总结
把项目好好总结总结
2-22日三面
三面,我这边面试的不是很好,或者说比较糟糕
三面一共50分钟前40分钟都是聊项目,聊得很开心。然后面试官说你主要是做c++,那就问问c++吧
- 1 说说c++的内存模型吧
额,不知道 - 2 说说static的作用吧
隐藏变量的实现,不让外部访问
区分实例对象的变量和类的变量 - 3 某个关键词的使用
额,不知道 - 4 char *a[10], char (*b)[10] a和b有啥区别
我刚好答反了 - 5 写代码
单链表反转
当时前几个问题把我问的直接就跪了,整个心态就崩溃了
面试官刚说了问题,我就开始写代码,然后越急越写不出来,越写不出来越急。当时心态崩了。当时卡在这个题目上,大概有5分钟
面试官看我之前代码一直没有写出来,也就先放过我了。说下一个问题 - 6 如果有1000个苹果,放到10个篮子里,具体每个篮子放几个苹果,由你来定。然后我给出一个数,肯定小于1000,你要告诉我,哪几个篮子里面的苹果数量之和等于我给的数字
我说第一个篮子放1个苹果,第二个篮子放2个苹果,第三个篮子放4个苹果,然后8个… 我还没有说完,面试官就说ok了我知道了 - 7 你想来杭州么?
想
三面感想
- 1 我师兄是P7,三面的面试官是我师兄的领导的领导。感觉至少P9。果然是高级别的领导,身处java栈的公司,依然还记得c++的知识
- 2 我自己并不清楚c++的那些基础知识,是我自己的不足,我没有什么好说的。不足就是不足。
- 3 最关键的一点,面试官让写代码的时候千万不要一上来就写代码,先说说自己的思路,然后在纸上画一画,涂一涂,然后再和面试官边说思路,边开始写我当时因为心态崩溃了,直接就开始写代码,哎。一紧张连大二的基础知识都忘了。
- 4 心态很重要,心态不能崩!
当时面试完,感觉自己完了
结果第二天,2-23日,师兄给我电话,说过了,等hr面吧
2-25日 hr面
Hr面试的时候,基本就是谈人生聊理想
- 1 他们对我的评价
对分布式很熟悉 对c++和网络不熟 - 2 职位变动的核心原因
舒适区
没有太大的进步空间了 - 3 说说内部的活水计划
我自己没有试过 - 4 花了快5分钟讲新零售
然后说如果领域现在竞争很激烈,咱们有一个项目,眼瞅着要上线,但是发现还有一些bug
作为领导,你有两个方案
项目整体delay,修改完之后再上线
先上线,再修复
请问你怎么选择?
我是说先上线,再修复,然后原因blala…
Hr说,这个问题其实没有最终的答案,只是想听听你的思路 - 5 上线之后,用户投诉说不好用怎么办
先让产品分门别类归类问题
找出重要的的问题 先修复(就是那个重要和紧急的四个象限) - 6 阿里讲究帮助别人,你有帮助别人的案例么?
写博客 帮助别人
互联网的分享精神 - 7 有什么业余爱好,讲讲
我说我喜欢看中国古代史
给他讲了这个故事,这个博客也是我写的
http://blog.sina.com.cn/s/blog_14e200ad40102yu2j.html
谈谈忍耐
面试官很喜欢这一点,说自己一个好朋友也喜欢读历史,balbal,以后介绍你们认识 - 8 说说你目前的收入情况 你希望涨幅是多少? 婚姻情况
- 9 我还有一个问题 关于竞业协议
Hr面试感想
Hr面试本身没有什么好总结的,就是谈人生聊理想
但是也还有几个要说的
你为什么离职?你为什么来我们公司?
这两个问题,hr基本都会问,你得好好想想。
另外关于和面试官聊历史的是,我只能说,伙计们要注意积累,注意总结,当时如果没有写那个博客,面试的时候就回忆不起来.总之一句话: 凡是你认真记录过的东西,都不会辜负你的
关于内推
社招的时候,找工作有3种方式,直接投简历,通过猎头和找朋友内推。(其实我校招也是走的内推)
其中找朋友内推也分两种:
- 其一 内推的职位就是帮你内推的小伙伴的部门
- 其二 内推的职位和帮你内推的小伙伴的部门没有关系
个人觉得最好的方式就是,你找准某个职位,然后让这个部门的朋友帮你内推。
很多朋友可能会说,我不认识大厂的朋友呀?
其实,互联网就是一张网,你的朋友的同事,你的同事的朋友,你上司的前同事,都是你的资源。
可能还有小伙伴说,我真不认识那些朋友,我周围的朋友也都是小厂的……
那么我问你,你真的努力找了么?
我自己就是从腾讯跳到阿里的,算是在两个公司都认识一点点朋友了。你看了我的文章,咱们也算是有点缘分了,如果你给我发私信,说你想去某个公司,balabal….请求我帮忙做个推荐。你说我会不会帮忙呢?你说,我把你捞到阿里来,说不定你还能请我吃顿烧烤呢,多好的事情呢。我何乐而不为呢?
伙计,办法总比困难多,只是看你想不想去做!!
2020-03-13拿到offer
感谢
一本好书对人的影响是很大的。
尤其感谢李智慧老师,他的<<大型网站技术架构–核心原理与案例分析>>三年前帮我拿到了腾讯的offer,现在又帮我拿到了阿里的offer。
我建议看到此处的朋友,最好自己买一本这本书。不要用电子版,就买实体书,花不了多少钱。
我自己的博客也有这本书的读书笔记。