面经搜集1
作者:剑指MS链接:https://www.nowcoder.com/discuss/3873?pos=10&type=0&order=1来源:牛客网
面经搜集2
作者:平行世界
链接:https://www.nowcoder.com/discuss/69429
来源:牛客网
个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试。
一面 (简历评估):
1、自我介绍
2、TCP与UDP的区别
5、进程和线程的区别
6、ArrayList与LinkedList的区别
8、Java内存模型,方法区存什么
1、说一下Spring的IOC和AOP,底层什么原理
3、数据库三大范式
4、左连接和右连接说一下,内连接呢
5、数据库索引有几种
7、若hashcode方法永远返回1会产生什么结果
8、Error与RuntimeException的区别
9、引用计数法与GC Root可达性分析法区别
10、双亲委派机制说一下
2、看你项目用到策略模式和工厂模式,说一下区别
3、模板方法模式
4、开闭原则懂吗,说一下
9、你实习的本地缓存过期策略怎么设置,一致性怎么保证
10、分布式理论懂多少,说一下(这里我说了CAP,Base,paxos)
12、RabbitMQ消息队列丢失消息,重复消费问题
1、学习成绩
2、有参加过算法比赛吗
4、Redis集群宕机,数据迁移问题
5、看你项目用到Spring boot,那有用过Spring cloud吗
7、说一下你对微服务的理解,与SOA的区别
六面(HR面)
1、平常怎么学习的
2、兴趣爱好
4、除了Java还研究过其它什么技术(我说AI,区块链)
5、跟我介绍一下区块链~
8、问我还参加了什么公司的招聘
9、如果有网易游戏,腾讯,阿里的offer你会选择哪个
10、英语10分钟交流(瞬间懵了,这里估计是部门有英语交流要求)
HR说面试结果会在4月份中旬出来,估计是进备胎池了,慢慢等吧,继续复习,准备其他公司招聘。
有后续会继续更新~
面经搜集3
8月16号下午收到阿里一面的通知,距内推简历提交已经有三周了,还以为简历被刷了呢。通知8月17号上午进行一面,有些担心,有些激动。在4月份时,大家都忙着找实习时,我没找,一方面是实验室导师不让去实习,另一方面觉得自己没准备好,呵呵。第一次参加面试,完全不知道该怎么准备,于是晚上准备了个自我介绍,看了下JAVA面试宝典。
17号9点接到电话,面试官简单的介绍了下部门,是杭州淘宝搜索部的,然后开始步入正题,让做个自我介绍,接着就问问题,一面的问题相对是比较基础的,如下,顺序部分先后:
1.什么是网络虚拟化(我专业是SDN,项目上有涉及这个)
2.Java中HashMap和HashTable的区别
3.面向对象的特征
4.OSI七层协议
5.Java垃圾处理方法
6.线程池中线程的状态,如何转换的
7.实现多线程的方法
8.Hash算法中如何解决Hash冲突问题
9.使用过的Java开源软件有哪些
10.设计模式中的单例模式
11.我项目中的餐厅服务系统中,如果同时有100个人点菜,会造成a)资源不够,b)服务器端厨师调度压力过大;我是怎么解决的
我说当时做的时候没有考虑到这一点,面试官说没关系,不是什么知识点,就是想想怎么处理,于是我给出了两种处理方式,一是在客户端上给出当天餐厅还能够提供某种菜品的数目,而是设置一个队列缓存,将同时到达的以一定顺序逐个请求调度。两种方案的都是有问题的,记得之前看过淘宝对订单的处理方案:增加服务器个数,将请求分派到不同的服务器上,实施负载均衡,面试官估计是想得到这个答案,不过自己当时没想到。
12.我自己算法解决过什么问题
13.数据库和Linux简单问了下
我说不是很擅长,面试官有些惊讶,应该是觉得我们研究网络的应该擅长Linux吧;
时间已经过了有50多分钟了吧,随后给了个网址,让编程,四个问题
1.将一个字符串反转,要求空间复杂度低
我用了个StringBuffer将字符串从头到尾遍历一遍,得到新串。显然不是较好的方法,于是问面试官说这是最先想到的,可以改吧,他说没关系,写出你觉得更好的,然后我换成字符中点为对称点,两侧进行交换的方式,只需要额外的一个字符空间,也降低了时间复杂度
2.设计一个单例模式
我想了一会儿,说设计模式看过,但是不常用,就忘了,直接跳到有把握的第四题
3.实现一种解决hashCode 冲突的方法;
在之前问的时候我隐约记得链地址法,打算用这个写呢,有些卡顿,当时面试有近80分钟了,所以说了一下思路
4.快速排序算法
写完后有些小问题没注意,后来才想到的;1.分治法没有写结束条件,也就是start和stop相等时直接返回 2.基准值我选的array[start],写循环时应该先移动右边指针,再移动左侧的,但是写反了;
最终让我自己设计一道算法题目,然后写出来;我说在编程中遇到的动态规划法比较巧妙,讲了一下此类问题的大概做法。想了半分钟,没想到合适的,跟面试官说脑子有些混乱,一时想不到,面试官很理解的说没关系,已经面了一个多小时了,很正常。然后说面试就到这里吧,他会通知他的主管再面试,就这样结束了一面。
面试总结:一面感觉还是可以的,80%以上的都答出来了,面试官也相当nice,感觉你会但是一时想不起的会提示下,问到垃圾回收方法就是这样。平时学习的时候,尽量学的深一些,Java面试宝典只是罗列了下知识点,看了容易忘,还容易混,我真正在面试中加分的点应该是我之前看了很多技术博客,面试时虽然有些专业名词忘了,但是从实现原理上解释了一下,想来这也是他们乐意看到的吧。
18号下午,接到主管电话,约到19号早上9点进行视频二面;
二面问题明显比一面问题要深,而且有效的避免了我擅长的计算机网络和操作系统,呵呵~
跟主管打了个招呼,也没自我介绍,直接发个题让直播编程。
题目比较简单,n个人围成一圈报数1,2,3,报到3的人退出,找到最后留下的那个人。
花了十分钟左右写完的,有个小的编译错误;方法如下,建立一个boolean数组num表示退出情况,用temp++%n表示指针位置,在没有退出条件下,count++ == 3时,将num[temp]设为true表示退出; 让讲了下逻辑,语言没组织好,面试官勉强听懂了。
后来又问了单例模式中volatile,一面时候问过单例模式,没说好,结果二面这个又不会,只说了下volatile的作用;问了一些Java虚拟机的东西,基本都不懂,然后面试官给推荐了五本书:Java虚拟机精讲,Java编程核心技术,Java并发编程技术,深入理解Java虚拟机,实践Java虚拟机。我表示回头一定好好看看,呵呵~
由于和Java相关的项目基本没有,都是SDN相关的,因此没聊几句项目, 之后就是主观问题了,诸如做过自豪的一件事是什么,觉得自己的优点是什么,有什么问题要问面试官的等等。
主观的问题从来没想过,感觉讲的不太好,就这样面试了近七十分钟结束。
二面总结:面试的不好,有些问题虽然明白,但语言没组织好,比如编程题;主观问题上,从没有想过,答的也不好。Java只学了半年,很多东西都不了解,SSH框架不懂,Java虚拟机没看过,这些都是面试中的减分项;上一个面试官中不懂的问题,回头还得好好百度一下,第二次可能还会提到;面试中语言表达非常重要;关于自己优缺点,自己自豪的事等还是要想一想的,跟我这样听到后就懵逼了就不好了。
19号上午面的,过了个周末,结果这两天就出来了吧,