阿里新零售C2M java研发面经(已意向书)
给自己两个多月的实习春招画上了句号,感谢牛客爸爸,发一个面经还愿~~~~
会议总结(可能有部分遗漏):
1面(简历评估面),3月10日:
太久远了,完全不记得内容了,不过就是一些java基础的问题以及分布式技术的问题,后续我的个人学习中会有介绍。
2面(主管面),3月17日:
这一面也太久了,嗨,当时忘了电话录音,很尴尬,也是一些和简历评估面类似的基础问题以及项目相关
这里重点讲一下项目相关:我当时很**,一直说自己项目里面没啥难度,完全没想到面试官为什么问项目,一直说很简单、没啥难度,大家千万别这样说,一定要从项目体现自己的价值
这一面能过多亏了内推人疯狂帮我说情,抬了一手才过。
问到了zk、redis、rocketMQ。当时面试官问的很笼统,我是从使用场景开始答,然后答如何实现功能(底层结构)这样答的,在下面学习路线中JavaGuide博客中都有,我也是根据那个来复习。
3面(boss面)1小时13分钟,4月8日:
首先自我介绍
- 项目相关
- 使用的java版本。jdk8
- jdk8默认垃圾回收器。G1。答错了hhh,感谢评论区大佬提醒了下,是Parallel Scavenge + Parallel Old
- 介绍G1。
- java8内存区域变化。方法区进入堆区
- linux机器上查看所有线程状态。没答出来,后面看ps -T top -H。
- while(true) new Thred会有什么现象。堆区OOM。(不知道对不对hhh,后来也去查了一下,没有找到满意的答案)
- 诊断java线程死锁,没答出来,后面查到 用jstack
- concurrentHashMap讲一下。讲了底层结构以及底层如何使用,(如插入的时候底层的原理)size函数的流程。jdk1.8之后的变化
- concurrentHashMap如何实现扩容。当时没回答出来,说不了解这个 但是了解HashMap的扩容,面试官让讲了HashMap的扩容原理。
- synchronized原理。同步代码块开始加一条monitorenter指令,获取对象锁,结束时加一条monitorexit指令,释放锁。如果同步方法就是方法头部加一个acc_synchronized标志位。
- volatile原理。只能加在变量上,主要为了保证可见性和有序性,添加内存屏障实现功能。写一个volatile变量后立即同步到主内存,都之前从主内存获取最新的值,都是通过内存屏障实现
- synchronized和reentrantlock区别。
- threadLocal原理。每个thred类有一个threadlocalmap变量,用来存放threadlocal,value键值对,这里的key为弱引用,在线程池情境下有可能发生内存泄漏问题。
- 快排原理以及堆排原理。
- 快排以及堆排是否稳定。
- OSI七层模型都有啥。
- TCP和HTTP属于哪一层。
- TCP和UDP区别。
- java中实现TCP和UDP的类了解吗。不了解。
- java的io。只答出来bio、nio,具体没答出来。
- java学习渠道,面试以外的。
- 有没有啥开源的博客什么的。
- 生活或者学习方面,个人经历过的一个最大的困难。
- 反问环节。1、实习生入职后日常流程。2、转正问题。3、boss眼中公司文化。
4面(交叉面)37分钟,4月9日:
- 之前有没有实习或者实验室项目经历。答实验室项目。
- 个人感兴趣计算机方面技术如何学习。实际上类似个人介绍
- 技术的实际应用场景。
- 简历上博客系统项目的技术栈。
- nio了解吗。这个boss面问过,我boss面之后就去查了,但是只看一天,担心说不好,就说不了解,导致这一面差点挂掉,最后评级评到B+,大家引以为戒,知道就说,哪怕说错了都别说不知道。
- concurrentHashMap在线程安全方面如何实现。答的和boss面差不多。
- 数据库的ACID特性。
- 数据库四种隔离级别。我自己多加了一些回答就是Innodb的默认隔离界别以及如何实现(MVCC)
- 快排以及堆排问题。和boss面一样回答。
- 快排最快以及最慢时间复杂度,在什么情况下会这样。
- 7的128次方有10的多少位。就是直接取对数。log 10底 7的128次方 就是答案。
5面(交叉面)39分钟,4月13日:
由于4面表现不太好,评级只有B+,boss大发慈悲,给我重新安排了一场交叉面。成功强行给我抬上A。这一面全程问项目。
6面(hr面)45分钟,4月20日:
从小学初中开始聊、到高中大学的经历,这样来了解我这个人。感觉这一面正常答就行,不要作死基本没啥问题。
最后加上我两个月春招实习的学习路线:
- 从头开始快速复习一遍java。https://how2j.cn/
- 粗读一遍深入了解java虚拟机。
- java以及后台开发基础。https://github.com/CyC2018/CS-Notes CyC2018博客,特别全面。刚开始复习就看这个,上面一面的问题基本都在这篇博客中覆盖到了。
- java深入以及分布式内容。https://github.com/Snailclimb/JavaGuide JavaGuide博客,CyC掌握的差不多了以后就开始看这个。
- 自己去搜了一份排序算法博客。https://blog.csdn.net/weixin_41190227/article/details/86600821
- redis深入学习。https://www.cnblogs.com/kismetv/p/8654978.html
- 各种刷面经。
最最后给部门招招人:
个人感受,内推人极为负责,全程跟进,任何问题随问随答。
面试难度不是特别大。
感兴趣可以私信我或者直接发邮件。