1. JVM
- JVM内存模型 G1和CMS垃圾回收器
- JVM的堆是如何分区的
- GC垃圾回收了解多少?新生代和老年代的区别是怎么样?
- 垃圾回收算法
- JVM为啥要有垃圾回收器
- 如何定位垃圾,那些是ROOT节点
- Java程序占用cpu100%如何排查解决
- JVM组成部分
- 虚拟机栈和本地方法栈区别(线程私有,每个线程都有一个)
- 可以用堆代替栈嘛(区别)
2. JAVA 基础
- Synchronized 1.8后做了那些优化
- volatile 关键字原理
- Java1.8了解哪些新特性?重点讲讲HashMap和CurrentHashMap
- Java类加载器有哪些种类,每种都用来加载什么
- 双亲委派,String 类是由那个类加载器加载的
- 如何中断线程,await和sleep区别
- Java线程池的参数有哪些
- 如果让你自己实现一个线程池,你会怎么实现
- 线程池运作过程是怎样的,这里面的队列有哪些,无界对列当任务很多的时候或发生什么?线程池默认的队列是什么
- 介绍下动态代理
- 微服务的优缺点
- 轻量级锁
- 可重入锁reentrantlock
- hashcode与equal
- juc中的countdownlatch,其概念,使用场景。
- java中如何查看线程状态,你知道那些java自带的命令。
- 有哪些编码格式(GBK,UTF-8,ISO-),有没有想过为什么会有这么多的编码格式。
- 了解哪些加密、解密算法?
- 乐观锁和悲观锁,以及CAS是什么,怎么体现在HashMap中?
- Java如何实现线程安全(synchronized,ReentrantLock,AtomicInteger,ThreadLocal,CAS)
- CAS如何解决ABA问题(版本号)
- AtomicInteger的原理(UnSafe类,底层是一句CPU指令,避免了并发问题)
- 可重入锁是什么,非可重入锁又是什么
- 二叉树的概念?红黑树又是什么,红黑树和其他平衡树的区别在哪
- 间隙锁是什么,具体什么时候会加锁
- SQLite如何加锁
- Java里的锁,有哪几种(synchronized和Reentrantlock)
- 当某个线程获取ReentrantLock失败时,是否会从内核态切换回用户态?ReentrantLock如何存储阻塞的线程的?(AQS,不断轮询前一个结点是否状态发生了变化)所以什么是自旋锁?
- 常用的 I/O 模型
- Java 中的多线程和操作系统中的多线程有什么区别
- 比较熟悉的 linux 命令有哪些
- 线程之间如何保证公共变量的一致性(锁的机制)
- 使用的JDK 版本;1.6、1.7、1.8 都有什么区别
- Java 内存模型,线程属于哪块区域
- 乐观锁和悲观锁
- lock 和 synchronized 区别
- 红黑树特性;和平衡搜索二叉树的区别;时间复杂度
- Java集合类有哪些
- ArrayList是线程安全的吗?如果想让ArrayList线程安全怎么做?
- 如何防止sql注入,mybatis里#和$的区别
- == 和 equals 区别
- Lambda
- LUA脚本有了解吗
- Linux断开SSH连接(窗口),如何让进程继续执行
- java里面hashcode的实现原理是什么,知道有哪些计算hash的算法
- 哈希地址冲突有哪些解决方式
- String 创建对象;intern() 方法
3. Spring
- spring生命周期,几种scope区别
- SpringCloud 组件介绍,及微服务之间是如何调用的
- Spring对象的SCOP 知道吗
- Spring中常用的设计模式举4例子
- Spring,AOP是什么,IOC是什么
- Spring的事务了解吗?
- 事务回滚怎么实现的呢?Hibernate,MySQL的都可以讲讲
- springcloud,注册中心原理,配置中心原理,dubbo服务发现,熔断限流。
4. 数据库
- 数据库 左连接、右连接、内连接、外连接区别
- 分库分表的话查一条数据怎么查
- SQL题(有一张考试分数记录表exam,包含字段(id,student,subject,score;)选出每个student的最高score记录,需要包含所有字段)
- 数据库的索引大多用的是B+树,为什么很少用B树
- 事务的ACID
- 介绍下Mysql的隔离级别,可重复读回出现什么问题(幻读)什么是幻读,怎么避免幻读
- 如何判断是否命中索引?如何优化索引?
- 索引:索引的分类,聚簇索引的概念,如何创建联合索引,有什么原则(最左前缀匹配原则),聚簇索引和非聚簇索引;怎么分配;为什么这样分配;
- 死锁的四个必要条件
- 如何避免死锁?
- 如何检测死锁?
- 数据库中是否会出现死锁?数据库中的死锁避免是否可用刚才说的方法来避免?
- 如果进程一次锁住数据库中的多条记录来避免死锁,会带来什么问题?你觉得应该怎样解决这个问题?
- 如果数据库中的确发生了死锁,应该怎么解决?
- 说一下数据库中左连接是怎么做的?
- 如何优化连接操作?
- 通用的数据库有哪些,mysql 存储引擎有哪些,innodb 底层存储结构是什么
- 有做过数据库优化吗
- varchar(35)的含义;中文在varchar中占几个字符;编码有哪些
- 数据库设计相关:分库分表的场景
- 讲一讲用到垂直分表的数据库的数据模型?
- mysql缓冲池有哪些东西
- 项目有没有mysql主备,知不知道mysql半同步
- mysql 事务并发的问题解决方法
5. 计算机网络
- OSI七层协议和TCP/IP五层协议有什么区别?TCP/UDP在哪一层?对TCP了解多少?
- Http和Https的区别?
- TCP三次握手、四次挥手的具体过程,以及TCP有哪些保护机制,具体是怎么样的?
- TCP和UDP的区别
- 计算机网络的七层模型
- TCP 保证可靠传输的机制
- 说一下OSI 模型,TCP/IP 模型说一下每一层的协议
- 在浏览器输入一个网址会发生什么
- session 和 cookie 是什么,有什么区别
- http常用状态码 502?
- 网络拥塞现象排查,为啥网络传递越来越快(慢开始算法)
- raft原理,一致性hash算法
- DNS 的过程,DNS 有什么安全问题?DNS 底层是什么(UDP,IPV4…)?DNS 会减缓访问速度吗?怎么解决?
- ip 报文是怎么发到目的地的?路由寻址。 怎么知道ip 对应哪个主机(arp)?
- Connection=keep-alive干嘛的
- 为啥用Websocket做实时通信连接, JSONP了解吗
- 长轮询机制不能做通信吗
- https 建立连接的过程
- http 状态码
- 重定向和转发区别
- Http cookie客户端能修改吗,服务端能修改吗,做什么的
- Http连接Time wait是啥意思
- TCP握手,timewait作用,TCP握手的时候要交换什么数据,拥塞控制控制的是什么
- DNS用的什么通信协议(DNS 是基于传输层的什么协议的)
- TCP 怎么保证到达的数据是有序的
6. 操作系统
- 线程和进程的区别?怎么创建线程?有哪些状态?有什么区别?
- 线程有哪些状态?阻塞状态又分为哪些,有什么区别?
- 线程进程,怎么进行上下文切换的,进程切换的过程?中断?谁去执行中断呢?
- 讲一讲内存分页,怎么进行内存分页
- 文件系统有没有了解
- 僵尸进程,怎么解决
7. Redis
- 删除Redis数据的时候没有删除成功怎么办
- Redis的两种持久化模式(RDB+AOF)
- Redis的数据结构有哪些?
- 为什么Redis那么快?
- RDB具体是如何实现的,RDB生成快照的时候,Redis会阻塞掉吗?(使用BgSave,fork一个子进程去并行生成快照,不会阻塞)
- 既然生成快照的中途依然可以执行Redis,那么从节点获取到快照是不完整的,如何同步?
- redis的备份机制
- redis分布式锁有啥问题
- Redis分布式锁先SETNX后,未来得及设置过期时间宕机了怎么办
- Redis内存不足时怎么样
- Redis如何查看大KEY
- Redis如果有大量Key同一时间失效怎么办
- Redis Pipeline
- epoll实现原理,为什么epoll比select快
8. Kafka
- Kafka顺序消费如何保证
- Kafka中Partion和Consumer对应关系
9. 分布式
- Seata的分布式事务介绍
- 如何设计一个高可靠的分布式锁
10. 设计模式
- 设计模式:写一写单例模式-懒汉模式,饿汉模式,线程安全型,双重校验锁型。为什么要使用双重校验锁的单例模式?
- 设计模式,说一下策略模式和装饰器模式。
11. Dubbo
- dubbo负载均衡,根据场景你选用哪种,为什么
12. Zookeeper
- 你谈谈你对zk的理解
13. 设计题
- 设计题:短链接服务设计。那新浪微博链接举例,长短链接要互相转换。有的短链接转长链接可能QPS会到十几万。
更多推荐
字节跳动社招Java常见面试题
发布评论