转 1 年经验 Java 求职面试题
https://www.cnblogs.com/hemi1995/p/9195739.html
1 年经验 Java 求职面试题
从 17 年的大三暑假就在这家公司实习转正,在这家公司呆了快2年了,随着公司新一轮的融资,看起来公司离上市更近了一步,但期权池也进一步稀释,没有期权的我感觉回报更少了,另外在这家公司接触到的东西也有瓶颈了,工作也非常轻松,想要进一步提升,就有了离职的想法,严格来说,2017.6~2018.5 其实毕业还不到一年,姑且算 1 年经验吧。
先找了几个高端一些的岗位,挑些了自己懂的技术关键词(JVM\多线程\搜索什么的),放在了简历里面,在拉勾和传销BOSS上投了一个星期的简历后陆陆续续的收到了一些面试通知:
Day1:
上午:
某互联网大厂,反正是 top3 大厂中的一个,面试了2轮:
第一轮面试:
- 说下 Java 内存模型的组成和各部分的作用
- Java 类的加载机制
- 说下几个线程池的类别和特点以及实现原理
- 链表和 ArrayList 的区别
- Android 的消息机制
- Android 中需要更新 UI 需要做什么操作?
- TCP 握手挥手过程
- ……
基本上都答上了,还有几个多线程的问题具体的不太记得了
第二轮面试:
只有一个主要问题:
如何设计一个大文件下载系统的服务端和客户端,每次下载的文件大小约好几G,请设计好客户端和服务器端的实现。
拿到题目有点懵,不太清楚要考什么?没答上来,后面提示的考点是怎么处理并发问题和读写速率不一致、IO、OOM、线程占用。到现在也不知道到底怎么实现,
然后首战就跪了……
下午:
某初创企业,好像是建立初始团队吧?
- CPU 占用不高,服务假死,除了full Thread\连接数满 还会有什么原因
- 数据库的索引有什么用?是怎么提升效率的?底层数据结构是什么样的?两个字段同时查询是分开建索引还是一起建索引快?
- AQS 原理
- volatile
- 如何排查 OOM
- copyOnWrite是怎么保证并发的, 里面的 copy 是怎么实现的
- 垃圾回收算法
- 什么时候用有界队列\什么时候用无界队列
- 怎么手动实现一个缓存
- 说说你平时怎么 SQL 调优的,应该关注什么
- 说一下支付流程
- 数据库分表操作过长,在不停止服务的情况下,应该怎么操作
- 乐观锁悲观锁
依然好难……只回答了个70~80%
第一天面试结束,倍受打击,感觉公司不会因为你是1年经验就降低岗位要求,也让我觉得自己是不是在之前的公司太轻松了,什么都没学到。
Day2
没有面试,到处转了转。
Day3
某教育 C轮企业,知名度高,HR 小哥哥人很好,面试官一直黑着个脸
面试:
- TCP 握手挥手
- 数据库连接池
- 讲述你理解的JVM(从类的加载到逻辑执行到被垃圾回收)
- Linux怎么查看某进程CPU占用高是它的什么行为导致的,如 i/o等。
- 100w个数字取最大的100个的算法,以及算法复杂度
- 如何查看特定进程的连接数
- tcp/ip的过程,是如何保证数据有效性的。
- 如何查看order by 走了什么索引
- 同步方法和可重入锁的应用场景和区别
- 说一下object.wait()是干嘛的
- innodb的b+树的叶子节点上是什么
答上了一部分,面试官喜欢问 linux 的东西,我不是科班的,平时只会ssh、tail、less 、top、netstat 什么的一些常用的命令,对于其他的原理的都不知道,面试官一直黑着脸,答上来了没答上来都是冷冰冰的,感觉和他工作合作起来会很不舒服,另外了解到这里的HTML和CSS\JS 都要后端写,没有DBA和运维,都是开发自己写,也不喜欢。整体上来说,我和面试官都不舒服。
Day4
某知名博客,初创业务线,小程序方向(依然是后端开发)
笔试+面试
- Java 内存模型 GC 算法
- Session & Cookie 区别联系
- Session 生命周期
- 多服务器 Session 管理
- shell 编程细节
- Java 的静态域理解
- Hibernate 懒加载
- Hibernate 1、2级缓存区别
- Struts 2 与Spring MVC 的原理区别
- XSS
- SQL 安全
- 从0 开始实现秒杀系统如何设计
- 小程序分享码怎么设计
- 谈谈 JVM 加载类到GC的过程
- IOC 原理
- AOP 原理
- Spring MVC 原理
- 口述小程序支付流程
除了 Shell 编程细节没答上来,其他的基本上都回答的挺满意的,不过公司是996,但工资和我上家 965 的差不多,所以谈薪资的时候基本上没谈拢。
整体上来说,面试效果真的不好,每次面试都是一次打击,失落感满满,但通过这次面试发现自己有很多东西不会的,甚至有些后悔辞职了,或者说后悔在上家公司呆了2年太安逸了,如果能早点开始学习 JVM 等相关的知识点的话,这次面试也许会轻松一些,不过整体来说,还是能让自己找到一些学习的方向和动力,希望之后也能学习更多知识!
分类: JavaWeb