面试造火箭!连续轰炸 50 问,我却靠这些"java 复习宝典"一一攻克!
前言
985 学渣渣一枚,毕业一年,四处飘荡了几个月,最终决心从事后端开发工作。上周腾讯那边打电话过来叫我准备面试(提前批),有点香喷喷的呀。不过可能还是疫情原因吧,一面选择的是电话面,上来就开干,连续 50 问,人都傻了...不过幸好,我有复习宝典,一一攻克!
腾讯一面连环 50 问
1、个人履历简述
2、项目简述
3、SpringAOP 实现
4、AOP 用的哪种?
5、JDK 动态代理以及 CGLib 动态代理性能比较
6、Java 的线程池用过吗,具体参数讲一下
7、线程池的 Execute 和 Submit 区别
8、继续问,还有别的区别吗?
9、线程池如何保证当前线程获取池内的 worker 的时候不产生争用
10、volatile 的特性
11、内存屏障分几种?
12、除了在 volatile 当中使用了内存屏障,JAVA 还有哪里使用了内存屏障
13、你之前讲到了 CountDownLatch,你知道它的内部实现吗
14、简单讲一下 AQS
15、加锁之后 AQS 是如何响应中断的?
16、OK 问点别的,AQS 存在什么实现呢?
17、讲讲实现
18、听说过 ReadWriteLock 吗,你之前提到 AQS 当中只有一个 State 那你如何用一个 State 去支撑读写两种状态
19、Int 几个字节
20、你们用过缓存吗
21、你说说下分布式锁怎么做的?
22、除了 redis 还有什么可以做分布式锁?
23、如果让你用 Mysql 做分布式锁你怎么做
24、zookeeper 了解吗
25、那我们继续聊聊 Redis 吧,Redis 有什么数据结构?
26、Zset 怎么实现的?
27、什么是跳表?
28、如果我要找一个 score 为 A 的节点应该如何去找?
29、zrange 是如何实现的?
30、Redis 持久化
31、AOF 重写的时候会不会 block 主线程?
32、在载入的时候是怎么做的
33、Redis 有哪些多机部署方案?
34、在主备环境下,如果一个备库中途断链了,重新上线的时候怎么执行同步?
35、如果备库的 offset 过于落后已经不在 buffer 当中了呢?
36、cluster 如何做的故障转移?
37、Mysql 了解吗,里面有哪些锁?
38、行锁怎么实现的?
39、讲一下事务隔离级别吧
40、你们用的是哪个隔离级别
41、在默认隔离级别下会产生幻读问题吗?
42、描述一下幻读
43、MVCC 机制了解吗?
44、讲一下原理
45、慢 sql 怎么处理?
46、你关注 explain 的那些 col?
47、https 了解吗?
48、线上机器 cpu100%你怎么处理?
49、你们线上 JVM 一般调整什么参数?
50、反问
问题就是上面这些,关于每个问题的详细回答和解释有整理成如下:
复习学习笔记:知识大纲+面试刷题+并发编程+性能调优+Spring全家桶+缓存数据库+分布式&微服务docs.qq.com/doc/DVlhtRkhnbEtGTG9h
再看我的 java 复习宝典
可能有很多小伙伴说:面试造火箭,工作拧螺丝,这次的腾讯一面问题虽然多但是涉入的不是很深(那毕竟我是个渣渣吧)。虽然有很多是比较基础概念的东西,但是呢,涉及很广呀。所以,不得不面试造火箭呢!我自己有整理一套我的 java 复习宝典,从知识脑图出发,一步一步深入,面试+学习+复习,不漏掉任何一个细节。
先来看面试题(从基础-中级-高级),再来看具体知识点的知识脑图与笔记
比如基础部分:
面向对象和面向过程的区别?
Java 语言有哪些特点?
关于 JVM JDK 和 JRE 最详细通俗的解答
Oracle JDK 和 OpenJDK 的对比
Java 和 C++的区别?
什么是 Java 程序的主类?应用程序和小程序的主类有何不同?
Java 应用程序与小程序之间有哪些差别?
字符型常量和字符串常量的区别
构造器 Constructor 是否可被 override?
重载和重写的区别?
Java 面向对象编程三大特性: 封装 继承 多态
String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?
自动装箱与拆箱
在一个静态方法内调用一个非静态成员为什么是非法的?
在 Java 中定义一个不做事且没有参数的构造方法的作用?
import java 和 javax 有什么区别?
接口和抽象类的区别是什么?
成员变量与局部变量的区别有哪些?
创建一个对象用什么运算符?对象实体与对象引用有何不同?
什么是方法的返回值?返回值在类的方法里的作用是什么?
一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 ?为什么?
构造方法有哪些特性?
静态方法和实例方法有何不同?
对象的相等与指向他们的引用相等,两者有什么不同?
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
== 与 equals(重要)
hashCode 与 equals(重要)
为什么 Java 中只有值传递?
简述线程,程序、进程的基本概念。以及他们之间关系是什么
线程有哪些基本状态?
关于 final 关键字的一些总结
Java 中的异常处理
Java 序列化中如果有些字段不想进行序列化 怎么办?
获取用键盘输入常用的的两种方法?
中级部分:
HashMap 底层实现原理,红黑树,B+树,B 树的结构原理,volatile 关键字,CAS(比较与交换)实现原理
Spring 的 AOP 和 IOC 是什么?使用场景有哪些?Spring 事务,事务的属性,传播行为,数据库隔离级别
Spring 和 SpringMVC,MyBatis 以及 SpringBoot 的注解分别有哪些?SpringMVC 的工作原理,SpringBoot 框架的优点,MyBatis 框架的优点
SpringCould 组件有哪些,他们的作用是什么?(说七八个)微服务的 CAP 是什么?BASE 是什么?
设计模式(说五六个)
Redis 支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透
线程是什么,有几种实现方式,它们之间的区别是什么,线程池实现原理,JUC 并发包,ThreadLocal 与 Lock 和 Synchronize 区别?
分布式事务(不同系统之间如何保证数据的一致性(A 系统写入数据,B 系统因为某些原因没有写入成功,造成数据不一致))
安全性问题(数据篡改(拿到别人的 URL,篡改数据(金额)发送给系统))
索引使用的限制条件,sql 优化有哪些,数据同步问题(缓存,数据库数据同步)
初始化 Bean 对象有几个步骤,它的生命周期
JVM 内存模型,算法,垃圾回收器,调优,类加载机制(双亲委派),创建一个对象,这个对象在内存中是怎么分配的?
如何设计一个秒杀系统?(高并发高可用分布式集群)
悲观锁,乐观锁,读写锁,行锁,表锁,自旋锁,死锁,分布式锁,线程同步锁,公平锁,非公平锁分别是什么?
堆溢出,栈溢出的出现场景以及解决方案
说出几种 MQ 之间的区别,以及为什么使用这种 MQ,消息重复发送(幂等性),消息发送失败,消息掉包,长时间收不到消息,发送的消息太大造成接收不成功
单点登录实现原理
假如有上亿条数据,你如何快速找到其中一条你想要的数据(几种简单的算法)
Dubbo 的运行原理,支持什么协议,与 SpringCould 相比它为什么效率要高一些,Zookeeper 底层原理
假如你带一个团队,让你设计一个系统,你需要考虑哪些?
高级部分(消息队列+Redis 缓存+分库分表+读写分离+分布式系统+高可用+微服务架构)
再看:并发编程+性能调优+Spring 全家桶+缓存数据库+分布式 &微服务等知识点脑图与笔记
第一个是并发编程
知识汇总(思维脑图)
并发编程的手写笔记:并发编程+并发编程_原理+并发编程_应用+并发编程_模式
(1)并发编程
(2)并发编程_原理
(3)并发编程_应用
(4)并发编程_模式
第二个是性能调优
Java 性能调优实战:Java 编程性能调优+多线程性能调优+JVM 性能监测及调优+设计模式调优+数据库性能调优+实战演练)
第三个是 Spring 全家桶(关注这一部分,我将 Spring、MVC、Cloud、Boot 归整在一块了)
Spring:思维脑图+笔记
SpringCloud:思维脑图+笔记+面试
SpringBoot:思维脑图+笔记
SpringMVC
第四个是缓存架构
第五个是分布式 &微服务
总结
虽然这次去腾讯,也是抱着试水的心态的,一连 50 问我也的确有点懵逼的,不过很庆幸之前朋友有赠我这份JAVA面试复习宝典:基础-中级-高级的面试+并发编程+性能调优+Spring全家桶+缓存数据库+分布式&微服务等等全都有,一个不落(上面全都有一一解说),也比较顺利的在等待二面。
评论