最新阿里 Java 面试题整理 + 进阶资料分享,看完直接收藏
关于设计模式,uml,jvm 内存回收机制问题
java 线程如何启动?java 中加锁的方式有哪些,怎么个写法?
对乐观锁和悲观锁的理解;
ORACLE 中的 SQL 如何进行优化,都有哪些方式?事务有哪些特性,在 ORACLE 中隔离有哪些级别?
介绍一下自己最近做的一个典型的项目;
在项目中遇到了哪些问题,自己是如何解决的 ;
目前系统支撑的用户量是多少,假如用户量提升 10 倍,系统会出现什么样的问题,如何重新设计系统【这里主要是想了解您的问题预见能力以及问题解决能力,考查思路】
使用 memcached 是一个什么样的原理
如何存放数据到 memcached 集群中,介绍一下这个过程。跟进的问题,讲一下一致性哈希算法的实现原理。
JVM 中堆是如何管理的,JVM 的内存回收机制,介绍一下
分布式事务实现方式
热点账户问题(项目中有就会问)
第一轮技术面试(电面)涉及 Java 基础点(可参考):
session
java 锁
gc 原理
hashmap
listlink arraylist 区别
aop 原理
多线程
kafka 原理和容错
spark hadoop 原理
redis 同步机制
classLoader 机制
Http 协议
cookie 的限制
HashMap key 的要求 , hashcode 一致两个对象是否相等
JVM 的原理
涉及面较广,包括谈到项目上遇到的问题,以此深入探讨。
XX:
介绍自己的工作职责、技术 or 管理怎么分配的
介绍项目,涉及的技术把整个流程说下。然后他感兴趣就会深入问
然后就是聊一些 jvm、nosql 之类的
假如服务器反应很慢,你应该怎么排查问题
怎么跟踪一个方法的用时,并且最小限度干涉业务程序
旁听面试-java:
人选介绍目前目前技术管理侧重;
对阿里推荐对应岗位的理解度;
系统设计是怎么样的;
做的一些架构,数据源来自于哪里并深入问;
模块边界,缓存机制;
选用技术选型时,A 和 B 的区别;
多线程如何用,有什么好处,和进程的区别;
多线程的过程;
多线程同步的方法,X 项目中如何去实现;
分布式架构在你目前项目中的体现;
跨主机通信用过什么,接口等;
大数据存储;
结尾:
你自己觉得你擅长什么,以后想走的路线,技术还是管理;
Java 面试题分享:
JMS 的两种模式是那些;
富客户端怎么更新;
自己设计类似 ESB 这样的企业数据总线应该有哪些功能;
系统架构设计;
集群中怎么控制 session;
怎么样知道 java 存中是哪一些模块消耗内存比较多;
应用服务器的参数调整。
B 学员
基础篇
面试题
junit 用法,before,beforeClass,after, afterClass 的执行顺序
分布式锁
nginx 的请求转发算法,如何配置根据权重转发
用 hashmap 实现 redis 有什么问题(死锁,死循环,可用 ConcurrentHashmap)
线程的状态
线程的阻塞的方式
sleep 和 wait 的区别
hashmap 的底层实现
一万个人抢 100 个红包,如何实现(不用队列),如何保证 2 个人不能抢到同一个红包,可用分布式锁
java 内存模型,垃圾回收机制,不可达算法
两个 Integer 的引用对象传给一个 swap 方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
aop 的底层实现,动态代理是如何动态,假如有 100 个对象,如何动态的为这 100 个对象代理
是否用过 maven install。 maven test。git(make install 是安装本地 jar 包)
tomcat 的各种配置,如何配置 docBase
spring 的 bean 配置的几种方式
web.xml 的配置
spring 的监听器。
zookeeper 的实现机制,有缓存,如何存储注册服务的
IO 会阻塞吗?readLine 是不是阻塞的
用过 spring 的线程池还是 java 的线程池?
能回答上百分之七十,基础的广度就算 OK 了。如果达不到,那么缺什么就赶紧补什么。广度达到了,还需要对个别热点问题有深度。每个人的精力都有限,可以适当挑选两个热点问题进行深入挖掘。比如 HashMap,要不仅仅能够说上来源码是什么去实现的,还要了解 JDK1.7 版本到 1.8 版本都做了哪些改进,为什么这么改进,ConcurrentHashMap 怎么实现的,针对并发场景都做了哪些优化措施,JDK1.7 和 1.8 的实现有什么差异。了解这些可能需要花费很大精力。但是,面试的时候一但问到了这个你非常精通的知识点,就基本进入你的主场了。这个能起到一锤定音的作用,给面试官留下极强的印象,甚至直接决定了此次面试的成败。因此,至少准备那么一两个非常精通的知识点,一定不要多,但要比面试官和其他求职者都要精通。这个赌的就是运气,只要在一个问题上能给面试官上一课,就能让对方产生“你很厉害”的错觉。
所有基础知识都要做好笔记,面试前多回顾下,在配合刷下题,问题就不大了。
项目篇
要回答好项目问题,核心就是要提前做好充足的准备。首先,仔细回顾自己做过的项目。然后挑选最有价值的部分,写一篇关于这个项目的总结性文档,要讲清楚这个项目的架构,设计思路。其次是努力回想当时遇到的难点,踩过的坑,以及自己怎么思考和应对的,还有对项目后续改进的思考。这个非常重要,一定写下来。文档写出来后,还要反复提炼和补充。面试的时候就以此文档为纲领,方能做到侃侃而谈,从容应对。
情商篇
面试的时候,可
能会穿插一些考察性格的问题。比如,问你为什么离职/想换工作,对技术和业务怎么看,对我们公司有什么了解,对我们的业务有什么了解,你有什么想问我的,你觉得自己有什么优点/缺点。做技术的同学往往在情商方面有所欠缺,如果没有准备的话,面试时一不小心说错一句话就可能导致前功尽弃。尤其在阿里,HR 是有一票否决权的。 那么,应对此类问题的第一点就是提前预防,可以提前拿张纸,猜想对方可能会问的问题,把标准答案写出来,反复推敲,然后背下来即可。比如,“你觉得自己有什么优点”这个问题,我当时的标准答案就是,“我觉得人最难了解的就是自己,所以我想借用我前领导对我的评价,XXX 是个…的人”。我的这个标准答案是基于 “第三方的评价更有可信度” 这个原理来设计的。第二点,回答问题的时候表现的谦虚一点即可,而且千万不要有负能量。比如“为什么离职/想换工作”,这个问题,不要去吐槽公司或者同事,或者表达情绪上的不满。要尽量展现出自己好学上进的一面,这一点很重要。面试官会把对你的印象记录在案的,包括你的优点和缺点。因此即便技术达不到要求,也尽量展现性格上的优点。
阿里面试流程
面试一般是四到五面,以电话面试为主。最后一轮面试时 HR 面试,所以只要挺过前面的技术面试一般就 OK 了。第一轮是考察基础,第二轮开始考察项目,沟通表达能力。第三四轮会可能有编程,要求现场写代码,或者线下完成一个指定的项目。面试官的级别在 p6-p9 之间,一般随着面试流程的推进而升高。技术面试通过后就是 HR 面了,这一轮主要考察价值观。所有面试结束后,就是一个漫长的等待了,期间会有体检,背景调查,然后发 offer。这个流程会有一个月的时间,比较久。需要注意的是,面试过程中一定要保证诚实,不能有半点弄虚作假。因为一但背景调查的时候发现说谎了,不但 offer 会取消,还会记录到人才库里。再有一点,约好了的面试不能随意爽约,这个也会永久记录。你的每次面试的过程都会详细的记录在人才库里的,因此尽量不要留下污点,以免影响以后的面试。
评论