淦!“忍一时越想越气,退一步越想越亏‘’ 三面阿里,被面试官怼得体无完肤

耗时三个半小时,考的是Java核心的基础。

大概说一下几个考点:Java并发的知识点、集合类、线程池、多线程之间的通信等

一面:(技术) 50分钟

1、自我介绍,直接技术栈。自我介绍很重要,围绕四个点去说。(自报家门,项目经验,技术栈,求职愿望)

2、分布式:问的还是挺多的。SpringCloud 的框架都问了点,还有Nacos,Sentinel做服务熔断限流降级持久化到数据库,分布式事务(TC二阶段提交)。分布式事务的其他解决方案也没有问。

3、JVM:类加载机制,沙箱安全。

4、然后问运行时数据区,我答漏了一个程序计数器。他就接着提问程序计数器。

然后问可达性分析,什么样的对象可以作为GcRoot、加载的时候把这些对象提前找好用的OopMap。

5、OOM,StackOverFlow,垃圾收集算法,垃圾收集器(G1),记忆集。

6、新生代几次对象几次到老年代?

7、有没有可能直接把刚new出来的对象放在老年代?(第一次遇到这个问题,我就说觉得有可能,毕竟有些垃圾回收器会有一个空间分配担保策略。)

8、多线程:volatile,CAS,总线嗅探,CPU缓存一致性协议

9、ReentrantLock、ThreadLocal、Lock和Synchronized的区别。

10、CountDownLatch,ABC三个线程怎么去保证顺序执行?

11、数据库优化:B+树,Hash索引,最左前缀,索引优化分析,一条龙服务,都问了一下。

12、Redis:一来就是分布式锁,然后别的就没问了,可能也是觉得我回答的还行就跳过了。

13、HashMap:我直接答错了,他问扩容的触发条件是什么,我说只是一个达到负载就扩容了。他告诉我是:负载和Hash冲突同时发生。这个我真不知道。

14、final 修饰一个变量String 怎么去改,我说改不了,他说用反射。我也不知道。

15、final 修饰一个对象Person,能不能去改对象的属性?

16、死锁怎么排查?

17、JVM调优什么做?

18、explain + sql 后面的列表都表示什么含义?

二面:(技术) 30分钟

1、自我介绍

2、HashMap & ConcurrentHashMap

3、数据库连接池

4、Spring和SpringBoot的区别

5、输入一个网址之后发生了什么?(我只知道域名要去DNS解析,找到ip,然后才进到后台端口服务。但是这个过程肯定要经历各种代理和负载均衡的调度。之后就是查数据库返回。)

6、数据库查询慢你怎么分析?(常规,把知道的说出来就行。慢查询日志,找到sql,用explain分析,对照索引看看建的怎么样。如果急用的话那就强制走一个,不急的话那就慢慢优化索引结构呗。)

7、问了几个索引题。字符串要写单引号,字符串查询怎么增加查询效率,字符串索引太大了那就截取几个做索引,叫前缀索引。怎么判断一个索引字段选的好不好,看不重复的和总数的比值,越大越好。

8、假如现在系统里面就是要模糊匹配怎么办?

9、大数据了解吗?(只看过一点Handoop,把HDFS文件系统做存储,MapReduce做计算说了一下。)

三面:(技术)120分钟

1、自我介绍

2、List 和 Set 的区别

3、HashSet 是如何保证不重复的

4、HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

5、HashMap 的扩容过程

6、HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

7、final finally finalize

8、强引用 、软引用、 弱引用、虚引用

9、synchronized 的实现原理以及锁优化?

10、volatile 的实现原理?

11、Java 的信号灯?

12、synchronized 在静态方法和普通方法的区别?

13、怎么实现所有线程在等待某个事件的发生才会去执行?

14、CAS?CAS 有什么缺陷,如何解决?

15、synchronized 和 lock 有什么区别?

16、Hashtable 是怎么加锁的 ?

17、HashMap 的并发问题?

18、ConcurrenHashMap 介绍?1.8 中为什么要用红黑树?

19、AQS

20、如何检测死锁?怎么预防死锁?

21、BeanFactory 和 FactoryBean?

22、Spring IOC 的理解,其初始化过程?

23、BeanFactory 和 ApplicationContext?

24、Spring Bean 的生命周期,如何被管理的?

25、Spring Bean 的加载过程是怎样的?

26、如果要你实现Spring AOP,请问怎么实现?

27、如果要你实现Spring IOC,你会注意哪些问题?

28、BIO、NIO和AIO

29、Netty 的各大组件

30、Netty的线程模型

31、TCP 粘包/拆包的原因及解决方法

32、Dubbo的底层实现原理和机制

33、描述一个服务从发布到被消费的详细过程

34、分布式系统怎么做服务治理

35、接口的幂等性的概念

36、消息中间件如何解决消息丢失问题

37、Dubbo的服务请求失败怎么处理

38、重连机制会不会造成错误

39、对分布式事务的理解

40、如何实现负载均衡,有哪些算法可以实现?

41、Zookeeper的用途,选举的原理是什么?

42、mysql分页有什么优化

43、悲观锁、乐观锁

44、组合索引,最左原则

45、mysql 的表锁、行锁

46、Redis用过哪些数据数据,以及Redis底层怎么实现

47、Redis缓存穿透,缓存雪崩

48、如何使用Redis来实现分布式锁

49、Redis的并发竞争问题如何解决

50、详细jvm内存模型

51、讲讲什么情况下回出现内存溢出,内存泄漏?

52、说说Java线程栈

53、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?

54、JVM 出现 fullGC 很频繁,怎么去线上排查问题?

55、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?

总结:

下面总结了一些问题,要注意自己一定要在自己的逻辑里面自洽,不能前后矛盾,前因后果要想清楚。也可以自己不要把所有问题都说满,可以故意漏下问题,等面试官提问(面试套路,自己主导问题方向)。总之,不然可能一个不是这个范围的问题把你问到了,你不知道如何回答,会给面试官一个不好的印象(为啥你自己的项目你都没有吃透?)

面试一定要自信。本来应聘就是双向选择的过程,面试的公司也不是非你不进,不要因为你是面试者就姿态很低,一种乞求面试官给你一份工作的姿态,这样是不对的。好的面试应该是你自信表达你自己的理解,即使不会也不要为难,不需要支支吾吾或者瞎说,这是大忌。不会就是不会,可以潇洒的回答,没有关系的,好的公司也不会就你不会的问题一直追问,这也没有意义。

需要以上面试题答案以及面试题里面讲解到的技术知识点的小伙伴,关注作者,后台【666】即可获取面试题答案

猜你喜欢

转载自blog.csdn.net/l688899886/article/details/126753399