三七互娱秋招提前批 java服务端
我是在6月5号参加了三七互娱的秋招的web后端线上笔试,第二天又参加了java服务端的线上笔试,之后去三七大楼参加open day,然后面试时一面,二面,HR面连着来 然而
我并没有直接拿到offer,而是经过漫长的等待(半个的时间啊)后才拿到HR的口头offer(还是我不断在微信里催HR的结果),这几天终于上班了.我也不知道是我能力不好,还是做错
了什么,或者等那么久是正常的(但是同校有同学6月25号就上班了)。
第一次笔试(web后端):都是些很基础的题目,刷下牛客网的选择题就会了,注意一下数据结构的问题。最后两道编程是要先写思路再写伪代码的,我不太会写伪代码,所以直接
用Python代码写。但是时间不够,导致第一道编程题没做出来。
第二次笔试(Java服务端):大部分是多线程并发相关的题目,还有TCP的题目。这个之前我是看《java核心技术卷一》的并发部分复习的。
一面:面试官很年轻,根据简历来问,我展示了一个在线答题的闯关游戏(其实很简单的Spring Boot增删改查完成的)。他看到我简历上Netty和Vert.x,就聊起了并发模型。为了引导他问我JVM的问题(那时我刚好看完周志明的《深入理解Java虚拟机:JVM高级特性与最佳实践》),我主动让他相关问题。之后解释了一些知识点。
- JMM(java内存模型)
- 年轻代老年代
- java GC(我竟然完了G1垃圾回收器叫什么名字。)
- CAS机制和锁。问我死锁,我其实没有答出官方的四个原因,只是自我理解的回答。
- 设计一个死锁,这个我也说得很模糊(不过他也很难判断我有没有说错,因为有点抽象)。
- 怎么避免死锁。我的回答是确保加锁得顺序。他又问怎么确保呢?我就说认真思考资源并发顺序。(其实还是没有回答到他想要的答案。事后回忆,可能他想要的回答是同步器(倒计时门闩、循环屏障)?)
感觉他对我很满意,之后回去一楼等了一下就是二面了。
二面:这个面试官应该是老油条了。因为我没有预料到会那么快二面,所以没什么准备。刚才一面想说的都说了,所以有点不知所措。
- 继续展示那个在线答题游戏。
- 看到我有一个基于Spring Could的云服务项目。就让我介绍一下。
- Spring Boot与Spring的区别 。。问我Spring Boot 与它带Tomcat是什么关系。。(能有什么关系啊,包含关系吧,,但是他不满意我的回答)
- 我作死在简历了写看了Spring源码,他问我Spring的启动过程,我转移话题到Spring怎么从Tomcat里启动,他反问如果没有Tomcat呢?我之后含糊了,他也不满意回答。
- 他看到我在简历上写着会Scala,python,kotlin,还有一个大数据分析的项目,我一顿各种语言的学习程度介绍后,他问我以后的发展方向,我说肯定时Java后端啦。
- Lock的实现,synchronized,并发集合的使用 (我收了一下AQS,他不知道为什么有点意外,可能AQS很少被提起)
- ConcurentHashMap的实现(这题我当时真不会,恰好看Core Java看到这里没看完就去面试了,所以就是扯去Hashtable),然后他就问为什么抛弃Hashtable,我就说可能是设计太落后了,他很不满意。。(现在觉得自己当时为什么这么基础的问题都没有去看啊 )
- 问我有没有看过Netty源码,我直接说没有。(面试前知道他们做游戏是用Netty的,所以恶补了下怎么写Netty程序,所以还是讲了下写Netty的主要过程和组件) (现在回想起来,其实他应该不是问源码实现,而是问NIO模型,Neety的时间循环,管道,处理器之类的概念)
-
最后,他觉得没什么好问了,就说看到我第一次笔试的算法做得不好,我说可能是因为我第一次做这种算法题不适应,而且直接用Python代码实现的原因。。他就叫我讲讲一下快速排序的实现方法,我就是胡乱说了一遍。(其实这说这些复杂算法的实现的时候,面试官不一定能听懂你是不是说错了,但是你也要硬说,因为你不说他就当你一点都不会)
- 最后,面试官说总结我学得东西很多但是都不精,java并发方面不好(没有回答出ConcurrentHashMap的原理)。
HR面:感觉说错什么了(工资,实习时间?),搞得HR一直拖时间不给offer。
总结:即使你会多门语言,多种技术,面试时也要把话题中心放在Java后端上,不然面试官可能以后学太多什么都不精。
很多面试知识点可以在面试前恶补。
要对简历上写的东西负责。