> 文档中心 > JAVA后端面试经-三拳打死老师傅的那些套路问题,开卷你也不会

JAVA后端面试经-三拳打死老师傅的那些套路问题,开卷你也不会

下面那些问题都遇到过吧,知道面试官问你啥,包括下个问题也知道了。对,就是开卷, 你就是答不上来,咱先看看这些问题,只是Java直接关联的问题,都知道是面试造火箭工作CRUD,还照样会问,每次背八股文吗?没有一点价值,那些东西,看完一遍面试完会忘完的,如果只是为了面试可以,如果稍微想沉淀点啥,还需要看看那些不变的东西。

开卷考试划重点

ArrayList LinkedList (数组和列表)

HashMap (数组,链表,红黑树(二叉树,二叉搜索树,平衡二叉树,23树,红黑树))

Mysql索引(红黑树,B树,B+树),事务(特性,隔离级别),底层实现机制

事务可以引申到分布式事务 ……

ConcurrentHashMap(分段锁,Cas锁,引出各种锁(重排序,自旋锁,偏向锁,轻
量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁),并发控制)

并发势必:Jvm内存模型,可见性和同步,指令重排(操作系统), 并行和并发,内存屏障,happen-before

JVM模型,垃圾回收,类加载(ClassLoader),JVM调优参数惯例(比例),JVM检测工具,检测经验举例

JVM检测,jmap,jstack,top 还有啥其他命令

高并发解决Redis,redis数据类型,持久化和备份方案,高级点问: 为啥redis可支持那么高的并发 --> IO- NIO - AIO

设计模式(单例,代理&装饰者)

代理模式,SpringAOP, JDK代理,CGLIB,ASM(字节码增强,当然也可以引申出去Skywarking)

单例:双重校验 (并发),Enum,静态变量 -- 也可以引申 到 同步安全对象的发布(哪些发布方式安全)

Object 占用内存(JVM),哪些方法(hashCode,toString,equal -- (Compare接口,HashMap怎么判断冲突), wait,join,notify (线程状态,怎么切换,这几个方法怎么影响,再可以引申到 其他影响线程的锁Synchronized&Lock) )

有线程,线程池必然的,哪四种,使用场景,submit和execut区别,线程池初始化参数,放弃策略

其他:

redis,rocketmq,kafka,zk,dubbo,算法数据结构,es(Lucene),mongo

分布式架构问题:ACP理解,分布式缓存(冷启动,命中击穿雪崩,数据一致性问题),流控(削峰,降级,阿波罗),集群(redis,zk,mysql,es,mongo),分库分表(主从同步,分表策略和跨表查询),解耦MQ(顺序,幂等,事务,延迟消息),负载均衡,静态化

微服务: 怎么拆分微服务,怎么理解微服务

架构: 企业架构理论TOGAF

思维:抽象(多态,OO),DDD,TDD,产品思维

可以看出,如果上面的都精通,不可能的,只能是某一方深入,但一些基础必须明白

软件基础:作为一个软件人员需要死磕的是: 数据结构,必须搞到图的一般性操作;算法,常用的思想必须知道,如:列表双指针,快慢指针; 递归,动态规划思想等;必须掌握一个DB,如Mysql,熟悉其结构,数据结构&磁盘存储结合;算法理论基础是编译原理,不会直接用到,但要成为掌握算法核心的人员就必须掌握; 网络,操作系统,计算机组成原理 重要,但看你专注哪方面,比如你想成为IM专家,那网络比较精通。

Java基础:JVM:结构,类加载,垃圾回收,工具检测,调优;多线程并发,线程状态,影响线程状态的操作,同步锁机制,同步底层逻辑;IO网络编程; 

只要精通这两方面,上层及时是略懂略懂也能现场构建出来。比如ArrayList和LinkedList差别,就是数组和链表的差异,辅助会有些fast-faild机制,扩容机制等,这些都是细枝末节了。