Java校招八股文 - 2020年秋招记录
@zhang 有朋友要看。没写完,先放上来,慢慢填坑。
作者在面试时遇到这样的情况,明明这个知识点学习过,但因为没有及时加深记忆,导致面试卡壳。比如,CMS收集器的流程,这种知识在实际开发中不可能使用到,非常容易忘记,需要及时加强学习。
本文记录面试常考的知识点,供面试前查漏补缺,加强记忆。点到即止,不对知识进行展开,具体内容可面向搜索引擎学习。
部分内容来源于牛客网,如有侵权可联系作者删除。
目录
小厂考题
Java基础知识
数据结构
二叉树前序中序遍历。
哈夫曼树。
手撕快速排序。
Springbuffer和Springbuilder的区别
异常的分类。
包装类的装箱拆箱,享元模式
深克隆与浅克隆
有字节流为什么还要有字符流
集合
特别喜欢考。
HashMap:底层结构,扩容
HashMap初始容量10000,插入10000条数据,会不会扩容
TreeMap的特点
数据库
基本CURD语句
索引
MyISAM与InnoDB 的九个区别
为什么要用B+树
聚簇索引和非聚簇索引
联合索引和全文索引,索引命中问题
回表
索引下推
包含 order by 和 group by 的语句,应该怎么使用索引
各种join的区别,性能之间有什么差异
事务
ACID是什么
隔离级别
四种隔离级别以及会导致的问题
锁
锁分类
什么时候会触发行锁
乐观锁和悲观锁
间隙锁
手撕个死锁
数据库会解决死锁吗
开源框架
Spring
IOC如何实现
AOP如何实现
Java的动态代理
Spring Security的权限实现原理
Bean的生命周期
AOP怎么实现事务
Spring常用注解
Spring事务传播机制
Spring事务隔离级别
SpringMVC
Mybatis
mybatis的缓存
接口怎么跟mybatis的xml产生关联?Java接口能直接调用吗?
mybatis的#和{}
SpringBoot
SpringCloud
对微服务的理解、使用微服务的优点
设计模式
单例模式, 代理模式,工厂模式,观察者模式,策略模式等
大厂加试(内卷模式)
算法
几个经典的算法:
01背包
手撕LRU
手撕堆排序 / TOP K问题
最长公共子序列
最大子序列和
股票买卖问题
问一个整数的二进制表示有几个1
单调栈问题
ipv4和int32互转
数据结构
JDK1.8的Hashmap有什么区别
红黑树
ConcurrentHashMap底层原理
JVM
如何将类的字节码加载进内存:load、link、initializing
什么是类加载器,双亲委派和打破
Java内存模型
方法区:线程共享。存放加载好的类。常量池就在这个区。
PC:程序计数器。每个线程都有自己的PC。
栈:同样是线程独占。存放栈帧。一个方法对应一个栈帧。
堆:线程的共享数据区。面试重灾区。
String常量在哪个区
如何判断一个对象需要回收
三种回收算法:标记清楚,拷贝,标记整理
堆的逻辑分代,哪个代用什么回收算法
有什么垃圾回收器,CMS和G1有什么不同
JDK1,8内存模型的变化
什么叫STW
四种引用类型:强软弱虚
ThreadLocal的原理
常见JVM参数
了解最新的ZGC回收器吗???
并发
进程、线程、纤程、协程的区别
创建线程的三种方式
volatile的两个特性:内存可见性,禁止指令重排
CAS是怎么做的
手撕线程池
sychronized锁升级的过程
可重入锁
实现Runnable和Callable的区别
直接调用run方法不行吗?为什么要调用start方法
synchronized和ReentrantLock的区别
ReentrantLock如何实现公平锁
ThreadLocal会发生内存泄露吗
HashMap多线程下会出现的问题
线程发生死锁怎么查
网络IO
三次握手
四次挥手
socket编程
多路复用
epoll
项目部署在HTTPS环境下,要访问HTTP的资源能访问吗
RPC 和 Rest API
https的加密和解密如何实现
http2.0和http1.0区别
证书怎么签发的
状态码的分类
网络拥塞一定会导致丢包吗
DNS过程中,一个域名只可以映射一个IP吗
Linux命令
中间件
Redis、Mysql、ES的区别?
点赞量用的redis里面的哪种数据结构?
阻塞队列是线程安全的吗?
Redis常用数据结构
Redis中删除过期key的策略
Redis的穿透、击穿,以及对应的策略
如何保证Redis和Mysql中的数据一致性
Redis集群的场景
sorted set底层数据类型
Redis分布式锁流程,如何解决缓存雪崩问题
多路IO复用原理
Redis锁是可重入的吗
场景题
- 统计字符串出现的次数
- 一张数据表非常大,几千万上亿数据,然后要将这个表的数据复制到另一张表中怎么实现
- A生产消息,到消息队列,B消费消息,出现消息积压,如何定位问题
- 目前有三个子系统(生产、销售、人员),上层有个管理系统,原有的三个子系统有各自的权限控制模型,权限设计上如何增加新的管理系统,并兼容下面的子系统
- 有100w个url,检测上述url返回的状态码是否是200;讨论具体实现
- 12306买票,一段从杭州到北京路程,中途可分为多段买票,如何设计数据库表结构
- 数据库数据海量的时候需要进行分库,怎么设计主键形式(雪花算法)
- 10亿个数字找最大的500个
源码
看过哪些源码