写在前面
朋友8月阿里一次面试,听他说完后,整体感觉的面试体验是很好,每次回答问题,面试官都会有反馈。一二面整体感觉问的基础比较多,三面从项目入手的,调优/分布式及项目中的一些解决方案!,来看看他的面试问题!
01 支付宝一面
介绍一下自己。项目参与的核心设计有哪些ArrayList和LinkedList底层HashMap及线程安全的ConcurrentHashMap,以及各自优劣势Java如何实现线程安全Synchronized和Lock哪个更好?HashMap中的get()方法是如何实现的?HashMap可以用在哪些场景?JVM,垃圾回收机制,内存划分等SQL优化,常用的索引?还有什么问题需要问的。
02 支付宝二面
没有自我介绍,直接问做过哪些Java开发相关的项目。对哪些技术比较熟悉?多线程状态图,状态如何流转?死锁,死锁原因页锁、乐观锁、悲观锁?乐观锁如何保证线程安全?用过线程池吗,对应的好处,如何用?两个10G的文件,里面是一些url,内存只有1G,如何将这两个文件合并,找到相同的url?1000个多并发线程,10台机器,每台机器4核的,设计线程池大小。代码题:两个有序数组,数组中存在重复数字,合并成一个有序数组,去除重复数字。说一下自己的优点。
03 支付宝三面
jvm性能调优都做了什么数据库性能调优如何做分布式系统原理:CAP,最终一致性,幂等操作等高并发情况下,我们系统是如何支撑大量的请求的缓存雪崩,穿透等方案讲讲集群如何同步会话状态常用NOSQL,有做过比较?什么情况会出现雪崩,以及如何应对?负载均衡的原理数据库事务属性与同事沟通的时候,如果遇到冲突了如何解决?工作中觉得哪方面欠缺?有问题要问么?期望薪水?为什么要离开现在的公司?
面试经验总结
面试题目范围
面试主要考察候选人的基础知识、项目经验、技术深度,每个候选人被问到的题目及难易程度都略有不同。
一方面,要看面试官对你的第一感觉如何(还真有点像相亲),如果你能在面试前几分钟,能给面试官留下好印象,那么你在面试时得到的机会与包容,就会相对多一些。
另一方面,现场面试有60%-80%的题目,可能就出自于你的简历,面试官会依据你简历上提到的知识、经验、项目,去深挖你的技能掌握程度。因此,真的是切记:慎用精通,慎用精通,慎用精通。如果你只是接触、了解某个技术的皮毛,就在简历中说自己精通,保证你会被虐得很惨,最终反而得不偿失。
认真对待每一场面试
如果没有准备充分就去参加面试,既浪费彼此时间,也是浪费来之不易的机会,要知道得到好公司的面试机会不易,机会都是给有准备人的。我始终相信:当下所付出的每一分努力与坚持,都会在未来的某一天,得到丰厚的回馈。
我整理的后端面试解析汇总(已上传Github)
Java面试进阶核心知识点笔记地址,欢迎来Star学习!