前言
先说一下自己的个人情况,21届应届生,通过校招进入到了国内某二线城市传统互联网公司,然后一待就待了差不多2年多的时间,可惜的是去年4月份受疫情影响遇到了大裁员,而我也是其中一员。好在早有预感,提前做了准备(在公司裁员前,本人就有了想离开传统行业,进入互联网龙头企业的想法,毕竟传统行业局限性太大,没有太大的发展空间),所以在离职之前就已经在做准备了,这场持久战拉得很长,最终以我花费一年的时间取得胜利。
在踏入腾讯,办理入职手续的那一天,作为一个男子汉,确实是落泪了。特地分享一波我的真实经历,共勉。
PS:其实一个公司要进行裁员通常都会出现一些前期征兆:业务发展遇到较大瓶颈,并且难以突破、频繁调整战略目标、高管开始陆续离职、开始严抓考勤、开始部分同事劝退,如果你现在的公司也开始出现这些症状,别想了,是时候开始做准备了。下面分享我奋战一年成功逆袭主要啃的面试资料。
一、Java基础 44 道
\
- 解释下什么是面向对象?面向对象和面向过程的区别?\
- 面向对象的三大特性?分别解释下?\
- JDK、JRE、JVM 三者之间的关系?\
- 重载和重写的区别?\
- Java 中是否可以重写一个 private 或者 static 方法?\
- 构造方法有哪些特性?\
- 在 Java 中定义一个不做事且没有参数的构造方法有什么作用?\
- Java 中创建对象的几种方式?\
- 抽象类和接口有什么区别?\
- 静态变量和实例变量的区别?\
- 12、short s1 = 1;s1 = s1 + 1;有什么错?那么 short s1 = 1; s1 += 1;呢?有没有错误?\
- Integer 和 int 的区别?\
- 装箱和拆箱的区别\
- switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?\
- 16、final、finally、finalize 的区别\
- == 和 equals 的区别?\
- 两个对象的 hashCode() 相同,则 equals() 也一定为 true 吗?\
- 为什么重写 equals() 就一定要重写 hashCode() 方法?\
- & 和 && 的区别?\
- Java 中的参数传递时传值呢?还是传引用?\
- Java 中的 Math.round(-1.5) 等于多少?\
- 如何实现对象的克隆?\
- 深克隆和浅克隆的区别?\
- 什么是 Java 的序列化,如何实现 Java 的序列化?\
- 什么情况下需要序列化?\
- Java 的泛型是如何工作的 ? 什么是类型擦除 ?\
- 什么是泛型中的限定通配符和非限定通配符 ?\
- List 和 List 之间有什么区别 ?\
- Java 中的反射是什么意思?有哪些应用场景?\
- 反射的优缺点?\
- Java 中的动态代理是什么?有哪些应用?\
- 怎么实现动态代理?\
- static 关键字的作用?\
- super 关键字的作用?\
- 字节和字符的区别?\
- String 为什么要设计为不可变类?\
- String、StringBuilder、StringBuffer 的区别?\
- String 字符串修改实现的原理?\
- String str = "i" 与 String str = new String("i") 一样吗?\
- String 类的常用方法都有那些?\
- final 修饰 StringBuffer 后还可以 append 吗?\
- Java 中的 IO 流的分类?说出几个你熟悉的实现类?\
- 字节流和字符流有什么区别?\
- BIO、NIO、AIO 有什么区别?
\
二、Java异常 9 道
\
- finally 块中的代码什么时候被执行?\
- finally 是不是一定会被执行到?\
- try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?\
- try-catch-finally 中那个部分可以省略?\
- Error 和 Exception 的区别?\
- 运行时异常与受检异常有何异同?\
- throw 和 throws 的区别?\
- 常见的异常类有哪些?\
- 主线程可以捕获到子线程的异常吗?
\
三、Java集合 24 道
\
- Java 中常用的容器有哪些?\
- ArrayList 和 LinkedList 的区别?\
- ArrayList 实现 RandomAccess 接口有何作用?为何 LinkedList 却没实现这个接口?\
- ArrayList 的扩容机制?\
- Array 和 ArrayList 有何区别?什么时候更适合用 Array?\
- HashMap 的实现原理/底层数据结构?JDK1.7 和 JDK1.8\
- HashMap 的 put 方法的执行过程?\
- HashMap 的 get 方法的执行过程?\
- HashMap 的 resize 方法的执行过程?\
- HashMap 的 size 为什么必须是 2 的整数次方?\
- HashMap 多线程死循环问题?\
- HashMap 的 get 方法能否判断某个元素是否在 map 中?\
- HashMap 与 HashTable 的区别是什么?\
- HashMap 与 ConcurrentHashMap 的区别是什么?\
- HashTable 和 ConcurrentHashMap 的区别?\
- ConcurrentHashMap 的实现原理是什么?\
- HashSet 的实现原理?\
- HashSet 怎么保证元素不重复的?\
- LinkedHashMap 的实现原理?\
- Iterator 怎么使用?有什么特点?\
- Iterator 和 ListIterator 有什么区别?\
- Iterator 和 Enumeration 接口的区别?\
- fail-fast 与 fail-safe 有什么区别?\
- Collection 和 Collections 有什么区别?\
四、Java并发 42 道
\
- 并行和并发有什么区别?\
- 线程和进程的区别?\
- 守护线程是什么?\
- 创建线程的几种方式?\
- Runnable 和 Callable 有什么区别?\
- 线程状态及转换?\
- sleep() 和 wait() 的区别?\
- 线程的 run() 和 start() 有什么区别?\
- 在 Java 程序中怎么保证多线程的运行安全?\
- Java 线程同步的几种方法?\
- Thread.interrupt() 方法的工作原理是什么?\
- 谈谈对 ThreadLocal 的理解?\
- 在哪些场景下会使用到 ThreadLocal?\
- 说一说自己对于 synchronized 关键字的了解?\
- 如何在项目中使用 synchronized 的?\
- 说说 JDK1.6 之后的 synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗?\
- 谈谈 synchronized 和 ReenTrantLock 的区别?\
- synchronized 和 volatile 的区别是什么?\
- 谈一下你对 volatile 关键字的理解?\
- 说下对 ReentrantReadWriteLock 的理解?\
- 说下对悲观锁和乐观锁的理解?\
- 乐观锁常见的两种实现方式是什么?\
- 乐观锁的缺点有哪些?\
- CAS 和 synchronized 的使用场景?\
- 简单说下对 Java 中的原子类的理解?\
- atomic 的原理是什么?\
- 说下对同步器 AQS 的理解?\
- AQS 的原理是什么?\
- AQS 对资源的共享模式有哪些?\
- AQS 底层使用了模板方法模式,你能说出几个需要重写的方法吗?\
- 说下对信号量 Semaphore 的理解?\
- CountDownLatch 和 CyclicBarrier 有什么区别?\
- 说下对线程池的理解?为什么要使用线程池?\
- 创建线程池的参数有哪些?\
- 如何创建线程池?\
- 线程池中的的线程数一般怎么设置?需要考虑哪些问题?\
- 执行 execute() 方法和 submit() 方法的区别是什么呢?\
- 说下对 Fork和Join 并行计算框架的理解?\
- JDK 中提供了哪些并发容器?\
- 谈谈对 CopyOnWriteArrayList 的理解?\
- 谈谈对 BlockingQueue 的理解?分别有哪些实现类?\
- 谈谈对 ConcurrentSkipListMap 的理解?
\
五、Java JVM 42 道
\
- 说一下 Jvm 的主要组成部分?及其作用?\
- 谈谈对运行时数据区的理解?\
- 堆和栈的区别是什么?\
- 堆中存什么?栈中存什么?\
- 为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?\
- Java 中的参数传递时传值呢?还是传引用?\
- Java 对象的大小是怎么计算的?\
- 对象的访问定位的两种方式?\
- 判断垃圾可以回收的方法有哪些?\
- 垃圾回收是从哪里开始的呢?\
- 被标记为垃圾的对象一定会被回收吗?\
- 谈谈对 Java 中引用的了解?\
- 谈谈对内存泄漏的理解?\
- 内存泄露的根本原因是什么?\
- 举几个可能发生内存泄漏的情况?\
- 尽量避免内存泄漏的方法?\
- 常用的垃圾收集算法有哪些?\
- 为什么要采用分代收集算法?\
- 分代收集下的年轻代和老年代应该采用什么样的垃圾回收算法?\
- 什么是浮动垃圾?\
- 什么是内存碎片?如何解决?\
- 常用的垃圾收集器有哪些?\
- 谈谈你对 CMS 垃圾收集器的理解?\
- 谈谈你对 G1 收集器的理解?\
- 说下你对垃圾回收策略的理解/垃圾回收时机?\
- 谈谈你对内存分配的理解?大对象怎么分配?空间分配担保?\
- 说下你用过的 JVM 监控工具?\
- 如何利用监控工具调优?\
- JVM 的一些参数?\
- 谈谈你对类文件结构的理解?有哪些部分组成?\
- 谈谈你对类加载机制的了解?\
- 类加载各阶段的作用分别是什么?\
- 有哪些类加载器?分别有什么作用?\
- 类与类加载器的关系?\
- 谈谈你对双亲委派模型的理解?工作过程?为什么要使用\
- 怎么实现一个自定义的类加载器?需要注意什么?\
- 怎么打破双亲委派模型?\
- 有哪些实际场景是需要打破双亲委派模型的?\
- 谈谈你对编译期优化和运行期优化的理解?\
- 为何 HotSpot 虚拟机要使用解释器与编译器并存的架构?\
- 说下你对 Java 内存模型的理解?\
- 内存间的交互操作有哪些?需要满足什么规则?
\
六、SSM框架 37 道
\
- 使用 Spring 框架的好处是什么?\
- 解释下什么是 AOP?\
- AOP 的代理有哪几种方式?\
- 怎么实现 JDK 动态代理?\
- AOP 的基本概念:切面、连接点、切入点等?\
- 通知类型(Advice)型(Advice)有哪些?\
- 谈谈你对 IOC 的理解?\
- Bean 的生命周期?\
- Bean 的作用域?\
- Spring 中的单例 Bean 的线程安全问题了解吗?\
- 谈谈你对 Spring 中的事物的理解?\
- Spring 中的事务隔离级别?\
- Spring 中的事物传播行为?\
- Spring 常用的注入方式有哪些?\
- Spring 框架中用到了哪些设计模式?\
- ApplicationContext 通常的实现有哪些?\
- 谈谈你对 MVC 模式的理解?\
- SpringMVC 的工作原理/执行流程?\
- SpringMVC 的核心组件有哪些?\
- SpringMVC 常用的注解有哪些?\
- @RequestMapping 的作用是什么?\
- 如何解决 POST 请求中文乱码问题,GET 的又如何处理呢?\
- SpringMVC 的控制器是不是单例模式,如果是会有什么问题,怎么解决?\
- SpringMVC 怎么样设定重定向和转发的?\
- SpringMVC 里面拦截器是怎么写的?\
- SpringMVC 和 Struts2 的区别有哪些?\
- 谈谈你对 MyBatis 的理解?\
- MyBaits 的优缺点有哪些?\
- MyBatis 与 Hibernate 有哪些不同?\
- MyBatis 中 #{} 和 ${}的区别是什么?\
- MyBatis 是如何进行分页的?分页插件的原理是什么?\
- MyBatis 有几种分页方式?\
- MyBatis 逻辑分页和物理分页的区别是什么?\
- MyBatis 是否支持延迟加载?如果支持,它的实现原理是什么?\
- 说一下 MyBatis 的一级缓存和二级缓存?\
- Mybatis 有哪些执行器(Executor)?\
- MyBatis 动态 SQL 是做什么的?都有哪些动态 SQL?能简述一下动态 SQL的执行原理不?
\
七、MySQL 31 道
\
- 请说下你对 MySQL 架构的了解?\
- 一条 SQL 语句在数据库框架中的执行流程?\
- 数据库的三范式是什么?\
- char 和 varchar 的区别?\
- varchar(10) 和 varchar(20) 的区别?\
- 谈谈你对索引的理解?\
- 索引的底层使用的是什么数据结构?\
- 谈谈你对 B+ 树的理解?\
- 为什么 InnoDB 存储引擎选用 B+ 树而不是 B 树呢?\
- 谈谈你对聚簇索引的理解?\
- 谈谈你对哈希索引的理解?\
- 谈谈你对覆盖索引的认识?\
- 索引的分类?\
- 谈谈你对最左前缀原则的理解?\
- 怎么知道创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?\
- 什么情况下索引会失效?即查询不走索引?\
- 查询性能的优化方法?\
- InnoDB 和 MyISAM 的比较?\
- 谈谈你对水平切分和垂直切分的理解?\
- 主从复制中涉及到哪三个线程?\
- 主从同步的延迟原因及解决办法?\
- 谈谈你对数据库读写分离的理解?\
- 请你描述下事务的特性?\
- 谈谈你对事务隔离级别的理解?\
- 解释下什么叫脏读、不可重复读和幻读?\
- MySQL 默认的隔离级别是什么?\
- 谈谈你对MVCC 的了解?\
- 说一下 MySQL 的行锁和表锁?\
- InnoDB 存储引擎的锁的算法有哪些?\
- MySQL 问题排查都有哪些手段?\
- MySQL 数据库 CPU 飙升到 500% 的话他怎么处理?
\
八、Redis 12 道
\
- 谈下你对 Redis 的了解?\
- Redis 一般都有哪些使用场景?\
- Redis 有哪些常见的功能?\
- Redis 支持的数据类型有哪些?\
- Redis 为什么这么快?\
- 什么是缓存穿透?怎么解决?\
- 什么是缓存雪崩?该如何解决?\
- 怎么保证缓存和数据库数据的一致性?\
- Redis 持久化有几种方式?\
- Redis 怎么实现分布式锁?\
- Redis 淘汰策略有哪些?\
- Redis 常见性能问题和解决方案?
\
九、计算机网络 45 道
\
- 为什么需要三次握手?两次不行?\
- 为什么需要四次挥手?三次不行?\
- TCP与UDP有哪些区别?各自应用场景?\
- HTTP1.0,1.1,2.0 的版本区别\
- POST和GET有哪些区别?各自应用场景?\
- HTTP 哪些常用的状态码及使用场景?\
- HTTP状态码301和302的区别,都有哪些用途?\
- 在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?\
- HTTP 如何实现长连接?在什么时候会超时?\
- TCP 如何保证有效传输及拥塞控制原理\
- IP地址有哪些分类?\
- GET请求中URL编码的意义\
- 什么是SQL 注入?举个例子?\
- 谈一谈 XSS 攻击,举个例子?\
- 讲一下网络五层模型,每一层的职责?\
- 简单说下 HTTPS 和 HTTP 的区别\
- 对称加密与非对称加密的区别\
- 简单说下每一层对应的网络协议有哪些?\
- ARP 协议的工作原理?\
- TCP 的主要特点是什么?\
- UDP 的主要特点是什么?\
- TCP 和 UDP 分别对应的常见应用层协议有哪些?\
- 为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?\
- 保活计时器的作用?\
- TCP 协议是如何保证可靠传输的?\
- 谈谈你对停止等待协议的理解?\
- 谈谈你对 ARQ 协议的理解?\
- 谈谈你对滑动窗口的了解?\
- 谈下你对流量控制的理解?\
- 谈下你对 TCP 拥塞控制的理解?使用了哪些算法?\
- 什么是粘包?\
- TCP 黏包是怎么产生的?\
- 怎么解决拆包和粘包?\
- forward 和 redirect 的区别?\
- HTTP 方法有哪些?\
- 在浏览器中输入 URL 地址到显示主页的过程?\
- DNS 的解析过程?\
- 谈谈你对域名缓存的了解?\
- 谈下你对 HTTP 长连接和短连接的理解?分别应用于哪些场景?\
- HTTPS 的工作过程?\
- HTTP 和 HTTPS 的区别?\
- HTTPS 的优缺点?\
- 什么是数字签名?\
- 什么是数字证书?\
- Cookie 和 Session 有什么区别?
\
十、操作系统 32 道
\
- 简单说下你对并发和并行的理解?\
- 同步、异步、阻塞、非阻塞的概念\
- 进程和线程的基本概念\
- 进程与线程的区别?\
- 为什么有了进程,还要有线程呢?\
- 进程的状态转换\
- 进程间的通信方式有哪些?\
- 进程的调度算法有哪些?\
- 什么是死锁?\
- 产生死锁的原因?\
- 死锁产生的必要条件?\
- 解决死锁的基本方法?\
- 怎么预防死锁?\
- 怎么避免死锁?\
- 怎么解除死锁?\
- 什么是缓冲区溢出?有什么危害?\
- 分页与分段的区别?\
- 物理地址、逻辑地址、虚拟内存的概念\
- 页面置换算法有哪些?\
- 谈谈你对动态链接库和静态链接库的理解?\
- 外中断和异常有什么区别?\
- 一个程序从开始运行到结束的完整过程,你能说出来多少?\
- 什么是用户态和内核态\
- 用户态和内核态是如何切换的?\
- 进程终止的方式\
- 守护进程、僵尸进程和孤儿进程\
- 如何避免僵尸进程?\
- 介绍一下几种典型的锁?\
- 常见内存分配内存错误\
- 内存交换中,被换出的进程保存在哪里?\
- 原子操作的是如何实现的\
- 抖动你知道是什么吗?它也叫颠簸现象
\
十一、消息队列与分布式 26 道
\
- 消息队列的基本作用?\
- 消息队列的优缺点有哪些?\
- 如何保证消息队列的高可用?\
- 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?\
- 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?\
- 如何保证消息的顺序性?\
- 大量消息在 MQ 里长时间积压,该如何解决?\
- MQ 中的消息过期失效了怎么办?\
- RabbitMQ 有哪些重要的角***r /> 10. RabbitMQ 有哪些重要的组件?\
- RabbitMQ 有几种广播类型?\
- Kafka 可以脱离 zookeeper 单独使用吗?为什么?\
- Kafka 有几种数据保留的策略?\
- Kafka 的分区策略有哪些?\
- 谈下你对 Zookeeper 的认识?\
- Zookeeper 都有哪些功能?\
- 谈下你对 ZAB 协议的了解?\
- Zookeeper 怎么保证主从节点的状态同步?\
- Zookeeper 有几种部署模式?\
- 说一下 Zookeeper 的通知机制?\
- 集群中为什么要有主节点?\
- 集群中有 3 台服务器,其中一个节点宕机,这个时候 Zookeeper 还可以使用吗?\
- 说一下两阶段提交和三阶段提交的过程?分别有什么问题?\
- Zookeeper 宕机如何处理?\
- 说下四种类型的数据节点 Znode?\
- Zookeeper 和 Dubbo 的关系?
\
需要资料的小伙伴点赞+关注,无偿方式【查看小编主页】即可
总结
这次能够顺利入职腾讯,可以说是运气和实力参半,但我一直持有的一个观念就是:机会永远是留给有准备的人。
“纸上得来终觉浅,绝知此事要躬行”
所以,作为一名技术人,对大厂有着执念,那就要落实下来,相信自己付出是会有所回报的。在这,我也祝大家在接下来的金九银十里,面试顺利,过关斩将,拿下offer,共勉!