面试题 - 目录

黄鹏宇 365 2023-02-05
无法显示图片时显示的文字
基于问题生成的词云

一、Java语言

1.1 Java基础

1.1.1 为什么Java代码可以实现一次编写、到处运行?简单
1.1.2 一个Java文件里可以有多个类吗(不含内部类)? 简单
1.1.3 说一说你对Java访问权限的了解 简单
1.1.4 介绍一下Java的数据类型 简单
1.1.5 int类型的数据范围是多少?
1.1.6 请介绍全局变量和局部变量的区别
1.1.7 请介绍一下实例变量的默认值
1.1.8 为啥要有包装类?
1.1.9 说一说自动装箱、自动拆箱的应用场景
1.1.10 如何对Integer和Double类型判断相等?
1.1.11 int和Integer有什么区别,二者在做==运算时会得到什么结果?
1.1.12 说一说你对面向对象的理解
1.1.13 面向对象的三大特征是什么?
1.1.14 封装的目的是什么,为什么要有封装?
1.1.15 说一说你对多态的理解
1.1.16 Java中的多态是怎么实现的?
1.1.17 Java为什么是单继承,为什么不能多继承?
1.1.18 说一说重写与重载的区别
1.1.19 构造方法能不能重写?
1.1.20 介绍一下Object类中的方法
1.1.21 说一说hashCode()和equals()的关系
1.1.22 为什么要重写hashCode()和equals()?
1.1.23 ==和equals()有什么区别?
1.1.24 String类有哪些方法?
1.1.25 String可以被继承吗?
1.1.26 说一说String和StringBuffer有什么区别
1.1.27 说一说StringBuffer和StringBuilder有什么区别
1.1.28 使用字符串时,new和""推荐使用哪种方式?
1.1.29 说一说你对字符串拼接的理解
1.1.30 两个字符串相加的底层是如何实现的?
1.1.31 String a = “abc”; ,说一下这个过程会创建什么,放在哪里?
1.1.32 new String(“abc”) 是去了哪里,仅仅是在堆里面吗?
1.1.33 接口和抽象类有什么区别?
1.1.34 接口中可以有构造函数吗?
1.1.35 谈谈你对面向接口编程的理解
1.1.36 遇到过异常吗,如何处理?
1.1.37 说一说Java的异常机制
1.1.38 请介绍Java的异常接口
1.1.39 finally是无条件执行的吗?
1.1.40 在finally中return会发生什么?
1.1.41 说一说你对static关键字的理解
1.1.42 static修饰的类能不能被继承?
1.1.43 static和final有什么区别?
1.1.44 说一说你对泛型的理解
1.1.45 介绍一下泛型擦除
1.1.46 List<? super T>和List<? extends T>有什么区别?
1.1.47 说一说你对Java反射机制的理解
1.1.48 Java反射在实际项目中有哪些应用场景?
1.1.49 说一说Java的四种引用方式

1.2 集合类

1.2.1 Java中有哪些容器(集合类)?
1.2.2 Java中的容器,线程安全和线程不安全的分别有哪些?
1.2.3 Map接口有哪些实现类?
1.2.4 描述一下Map put的过程
1.2.5 如何得到一个线程安全的Map?
1.2.6 HashMap有什么特点?
1.2.7 JDK7和JDK8中的HashMap有什么区别?
1.2.8 介绍一下HashMap底层的实现原理
1.2.9 介绍一下HashMap的扩容机制
1.2.10 HashMap中的循环链表是如何产生的?
1.2.11 HashMap为什么用红黑树而不用B树?
1.2.12 HashMap为什么线程不安全?
1.2.13 HashMap如何实现线程安全?
1.2.14 HashMap是如何解决哈希冲突的?
1.2.15 说一说HashMap和HashTable的区别
1.2.16 HashMap与ConcurrentHashMap有什么区别?
1.2.17 介绍一下ConcurrentHashMap是怎么实现的?
1.2.18 ConcurrentHashMap是怎么分段分组的?
1.2.19 说一说你对LinkedHashMap的理解
1.2.20 请介绍LinkedHashMap的底层原理
1.2.21 请介绍TreeMap的底层原理
1.2.22 Map和Set有什么区别?
1.2.23 List和Set有什么区别?
1.2.24 ArrayList和LinkedList有什么区别?
1.2.25 有哪些线程安全的List?
1.2.26 介绍一下ArrayList的数据结构?
1.2.27 谈谈CopyOnWriteArrayList的原理
1.2.28 说一说TreeSet和HashSet的区别
1.2.29 说一说HashSet的底层结构
1.2.30 BlockingQueue中有哪些方法,为什么这样设计?
1.2.31 BlockingQueue是怎么实现的?
1.2.32 Stream(不是IOStream)有哪些方法?

1.3 IO

1.3.1 介绍一下Java中的IO流
1.3.2 怎么用流打开一个大文件?
1.3.3 说说NIO的实现原理
1.3.4 介绍一下Java的序列化与反序列化
1.3.5 Serializable接口为什么需要定义serialVersionUID变量?
1.3.6 除了Java自带的序列化之外,你还了解哪些序列化工具?
1.3.7 如果不用JSON工具,该如何实现对实体类的序列化?

1.4 多线程

1.4.1 创建线程有哪几种方式
1.4.2 说说Thread类的常用方法
1.4.3 run()和start()有什么区别?
1.4.4 线程是否可以重复启动,会有什么后果?
1.4.5 介绍一下线程的生命周期
1.4.6 如何实现线程同步?
1.4.7 说一说Java多线程之间的通信方式
1.4.8 说一说Java同步机制中的wait和notify
1.4.9 说一说sleep()和wait()的区别
1.4.10 说一说notify()、notifyAll()的区别
1.4.11 如何实现子线程先执行,主线程再执行?
1.4.12 阻塞线程的方式有哪些?
1.4.13 说一说synchronized与Lock的区别
1.4.14 说一说synchronized的底层实现原理
1.4.15 synchronized可以修饰静态方法和静态代码块吗?
1.4.16 谈谈ReentrantLock的实现原理
1.4.17 如果不使用synchronized和Lock,如何保证线程安全?
1.4.18 说一说Java中乐观锁和悲观锁的区别
1.4.19 公平锁与非公平锁是怎么实现的?
1.4.20 了解Java中的锁升级吗?
1.4.21 如何实现互斥锁(mutex)?
1.4.22 分段锁是怎么实现的?
1.4.23 说说你对读写锁的了解
1.4.24 volatile关键字有什么用?
1.4.25 谈谈volatile的实现原理
1.4.26 说说你对JUC的了解
1.4.27 说说你对AQS的理解
1.4.28 LongAdder解决了什么问题,它是如何实现的?
1.4.29 介绍下ThreadLocal和它的应用场景
1.4.30 请介绍ThreadLocal的实现原理,它是怎么处理hash冲突的?
1.4.31 介绍一下线程池
1.4.32 介绍一下线程池的工作流程
1.4.33 线程池都有哪些状态?
1.4.34 谈谈线程池的拒绝策略
1.4.35 线程池的队列大小你通常怎么设置?
1.4.36 线程池有哪些参数,各个参数的作用是什么?

1.5 JVM

1.5.1 JVM包含哪几部分?
1.5.2 JVM是如何运行的?
1.5.3 Java程序是怎么运行的?
1.5.4 本地方法栈有什么用?
1.5.5 没有程序计数器会怎么样?
1.5.6 说一说Java的内存分布情况
1.5.7 类存放在哪里?
1.5.8 局部变量存放在哪里?
1.5.9 介绍一下Java代码的编译过程
1.5.10 介绍一下类加载的过程
1.5.11 介绍一下对象的实例化过程
1.5.12 元空间在栈内还是栈外?
1.5.13 谈谈JVM的类加载器,以及双亲委派模型
1.5.14 双亲委派机制会被破坏吗?
1.5.16 请介绍一下分代回收机制
1.5.17 JVM中一次完整的GC流程是怎样的?
1.5.18 Full GC会导致什么?
1.5.19 JVM什么时候触发GC,如何减少FullGC的次数?
1.5.20 如何确定对象是可回收的?
1.5.21 对象如何晋升到老年代?
1.5.22 为什么老年代不能使用标记复制?
1.5.24 为什么要设置两个Survivor区域?
1.5.25 说一说你对GC算法的了解。
1.5.26 为什么新生代和老年代要采用不同的回收算法?
1.5.27 请介绍G1垃圾收集器
1.5.28 请介绍CMS垃圾收集器
1.5.29 内存泄漏和内存溢出有什么区别?
1.5.30 什么是内存泄漏,怎么解决?
1.5.31 什么是内存溢出,怎么解决?
1.5.32 哪些区域会OOM,怎么触发OOM?

二. 数据库

2.1 SQL

2.1.1 介绍一下数据库分页
2.1.2 介绍一下SQL中的聚合函数
2.1.3 表跟表是怎么关联的?
2.1.4 说一说你对外连接的了解
2.1.5 说一说数据库的左连接和右连接
2.1.6 SQL中怎么将行转成列?
2.1.7 谈谈你对SQL注入的理解
2.1.8 将一张表的部分数据更新到另一张表,该如何操作呢?
2.1.9 WHERE和HAVING有什么区别?

2.2 索引

2.2.1 说一说你对MySQL索引的理解
2.2.2 索引有哪几种?
2.2.3 如何创建及保存MySQL的索引?
2.2.4 MySQL怎么判断要不要加索引?
2.2.5 只要创建了索引,就一定会走索引吗?
2.2.6 如何判断数据库的索引有没有生效?
2.2.7 如何评估一个索引创建的是否合理?
2.2.8 索引是越多越好吗?
2.2.9 数据库索引失效了怎么办?
2.2.10 所有的字段都适合创建索引吗?
2.2.11 说一说索引的实现原理
2.2.12 介绍一下数据库索引的重构过程
2.2.13 MySQL的索引为什么用B+树?
2.2.14 联合索引的存储结构是什么,它的有效方式是什么?
2.2.15 MySQL的Hash索引和B树索引有什么区别?
2.2.16 聚簇索引和非聚簇索引有什么区别?
2.2.17 什么是联合索引?
2.2.18 select in语句中如何使用索引?
2.2.19 模糊查询语句中如何使用索引?

2.3 事务

2.3.1 说一说你对数据库事务的了解
2.3.2 事务有哪几种类型,它们之间有什么区别?
2.3.3 MySQL的ACID特性分别是怎么实现的?
2.3.4 谈谈MySQL的事务隔离级别
2.3.5 MySQL的事务隔离级别是怎么实现的?
2.3.6 事务可以嵌套吗?
2.3.7 如何实现可重复读?
2.3.8 如何解决幻读问题?
2.3.9 MySQL事务如何回滚?

2.4 锁

2.4.1 了解数据库的锁吗?
2.4.2 介绍一下间隙锁
2.4.3 InnoDB中行级锁是怎么实现的?
2.4.5 说说数据库死锁的解决办法

2.5 优化

2.5.1 说一说你对数据库优化的理解
2.5.2 该如何优化MySQL的查询?
2.5.3 怎样插入数据才能更高效?
2.5.4 表中包含几千万条数据该怎么办?
2.5.5 MySQL的慢查询优化有了解吗?
2.5.6 说一说你对explain的了解
2.5.7 explain关注什么?

2.6 其他

2.6.1 介绍一下数据库设计的三大范式
2.6.2 说一说你对MySQL引擎的了解
2.6.3 说一说你对redo log、undo log、binlog的了解
2.6.4 谈谈你对MVCC的了解
2.6.5 MySQL主从同步是如何实现的?

三. Web 开发

3.1 Spring Boot

3.1.1 说说你对Spring Boot的理解
3.1.2 Spring Boot Starter有什么用?
3.1.3 介绍Spring Boot的启动流程
3.1.4 Spring Boot项目是如何导入包的?
3.1.5 请描述Spring Boot自动装配的过程
3.1.6 说说你对Spring Boot注解的了解

3.2 Spring

3.2.1 请你说说Spring的核心是什么
3.2.2 说一说你对Spring容器的了解
3.2.3 说一说你对BeanFactory的了解
3.2.4 说一说你对Spring IOC的理解
3.2.5 Spring是如何管理Bean的?
3.2.6 介绍Bean的作用域
3.2.7 说一说Bean的生命周期
3.2.8 Spring是怎么解决循环依赖的?
3.2.9 @Autowired和@Resource注解有什么区别?
3.2.10 Spring中默认提供的单例是线程安全的吗?
3.2.11 说一说你对Spring AOP的理解
3.2.12 请你说说AOP的应用场景
3.2.13 Spring AOP不能对哪些类进行增强?
3.2.14 JDK动态代理和CGLIB有什么区别?
3.2.16 Spring如何管理事务?
3.2.17 Spring的事务传播方式有哪些?
3.2.18 Spring的事务如何配置,常用注解有哪些?
3.2.19 说一说你对声明式事务的理解

3.3 Spring MVC

3.3.1 什么是MVC?
3.3.2 DAO层是做什么的?
3.3.3 介绍一下Spring MVC的执行流程
3.3.4 说一说你知道的Spring MVC注解
3.3.5 介绍一下Spring MVC的拦截器
3.3.6 怎么去做请求拦截?

3.4 MyBatis

3.4.1 谈谈MyBatis和JPA的区别
3.4.2 MyBatis输入输出支持的类型有哪些?
3.4.3 MyBatis里如何实现一对多关联查询?
3.4.4 MyBatis中的和#有什么区别? 3.4.5 既然不安全,为什么还需要$,什么时候会用到它?
3.4.6 MyBatis的xml文件和Mapper接口是怎么绑定的?
3.4.7 MyBatis分页和自己写的分页哪个效率高?
3.4.8 了解MyBatis缓存机制吗?

3.5 其他

3.5.1 cookie和session的区别是什么?
3.5.2 cookie和session各自适合的场景是什么?
3.5.3 请介绍session的工作原理
3.5.4 get请求与post请求有什么区别?
3.5.5 get请求的参数能放到body里面吗?
3.5.6 post不幂等是为什么?
3.5.7 页面报400错误是什么意思?
3.5.8 请求数据出现乱码该怎么处理?
3.5.9 如何在SpringBoot框架下实现一个定时任务?
3.5.11 了解Spring Boot JPA吗?

四. 中间件

4.1 Redis

4.1.1 Redis可以用来做什么?
4.1.2 Redis和传统的关系型数据库有什么不同?
4.1.3 Redis有哪些数据类型?
4.1.4 Redis是单线程的,为什么还能这么快?
4.1.5 Redis在持久化时fork出一个子进程,这时已经有两个进程了,怎么能说是单线程呢?
4.1.6 set和zset有什么区别?
4.1.7 说一下Redis中的watch命令
4.1.8 说说Redis中List结构的相关操作
4.1.9 你要如何设计Redis的过期时间?
4.1.10 Redis中,sexnx命令的返回值是什么,如何使用该命令实现分布式锁?
4.1.11 说一说Redis的持久化策略
4.1.12 如何实现Redis的高可用?
4.1.13 Redis的主从同步是如何实现的?
4.1.14 Redis为什么存的快,内存断电数据怎么恢复?
4.1.16 请介绍一下Redis的过期策略
4.1.17 缓存穿透、缓存击穿、缓存雪崩有什么区别,该如何解决?
4.1.18 如何保证缓存与数据库的双写一致性?
4.1.19 请介绍Redis集群的实现方案
4.1.20 说一说Redis集群的分片机制
4.1.21 说一说Redis集群的应用和优劣势
4.1.22 说一说hash类型底层的数据结构
4.1.23 介绍一下zset类型底层的数据结构
4.1.24 如何利用Redis实现分布式Session?
4.1.25 如何利用Redis实现一个分布式锁?
4.1.26 说一说你对布隆过滤器的理解
4.1.27 多台Redis抗高并发访问该怎么设计?
4.1.28 如果并发量超过30万,怎么设计Redis架构?

4.2 消息队列

4.2.1 MQ有什么用?
4.2.2 说一说生产者与消费者模式
4.2.3 消息队列如何保证顺序消费?
4.2.4 消息队列如何保证消息不丢?
4.2.5 消息队列如何保证不重复消费?
4.2.6 MQ处理消息失败了怎么办?
4.2.7 请介绍消息队列推和拉的使用场景
4.2.8 RabbitMQ和Kafka有什么区别?
4.2.9 Kafka为什么速度快?
4.2.10 RabbitMQ如何保证消息已达?

4.3 搜索引擎

4.3.1 说说ElasticSearch put的全过程
4.3.2 说说ElasticSearch的倒排索引
4.3.3 说一说你对solr的了解

五. 分布式

5.1 分布式

5.1.1 什么是CAP原则?
5.1.2 说一说你对高并发的理解
5.1.3 如何实现分布式存储?
5.1.4 说一说你对分布式事务的了解
5.1.5 分布式系统如何保证最终一致性?
5.1.6 谈谈你对分布式的单点问题的了解
5.1.7 HTTP和RPC有什么区别?

六. 操作系统

6.1 操作系统

6.1.1 Linux里如何查看一个想知道的进程?
6.1.2 Linux里如何查看带有关键字的日志文件?
6.1.3 说说你对grep命令的了解?
6.1.4 Linux修改主机名的命令是什么?
6.1.5 Linux开机自动执行命令如何实现?
6.1.6 Linux查看内存的命令是什么?
6.1.7 free命令有哪些选项?
6.1.8 Linux中压缩文件的命令是什么?
6.1.9 Linux查询连接数的命令是什么?
6.1.10 Linux中top命令有哪些参数?
6.1.11 Linux中,如何通过端口查进程,如何通过进程查端口?
6.1.12 请你说说ping命令?
6.1.13 什么是协程?
6.1.14 为什么协程比线程切换的开销小?
6.1.15 线程和进程的区别?
6.1.16 进程切换为什么比线程更消耗资源?
6.1.17 介绍一下进程之间的通信。
6.1.18 介绍一下信号量。
6.1.19 说说僵尸进程和孤儿进程。
6.1.20 请介绍进程之间的通信方式。
6.1.21 请介绍线程之间的通信方式。
6.1.22 说一说进程的状态。
6.1.23 CPU调度的最小单位是什么?线程需要CPU调度吗?
6.1.24 进程之间共享内存的通信方式有什么好处?
6.1.25 如何杀死一个进程?
6.1.26 说一说kill的原理。
6.1.27 介绍下你知道的锁。
6.1.28 什么情况下会产生死锁?
6.1.29 说一说你对自旋锁的理解。
6.1.30 说一说你对悲观锁的理解。
6.1.31 说一说你对乐观锁的理解。
6.1.32 CAS在什么地方用到过吗?
6.1.33 谈谈IO多路复用。
6.1.34 谈谈poll和epoll的区别。
6.1.35 谈谈select和epoll的区别。
6.1.36 epoll有哪两种模式?
6.1.37 说一下epoll的原理,它的查询速度是O(1)的吗?
6.1.38 介绍域名解析成IP的全过程。
6.1.39 如何在Linux上配置一个IP地址,如果给定端口号如何解析出域名?
6.1.40 解释一下IP地址、子网掩码、网关。
6.1.42 操作系统的地址有几种,请具体说明。
6.1.43 Linux的静态网络怎么配置?
6.1.44 DNS用了哪些协议?
6.1.45 说一说你对Linux内核的了解。
6.1.47 Linux负载是什么?
6.1.48 Linux如何设置开机启动?
6.1.49 谈谈Linux的内存管理。
6.1.50 谈谈内存映射文件。
6.1.52 什么是物理内存和虚拟内存,为什么要有虚拟内存?
6.1.53 内存和缓存有什么区别?
6.1.54 请你说说缓存溢出。
6.1.55 深拷贝和浅拷贝的区别是什么,它们各自的使用场景是什么?
6.1.56 说说IO模型。
6.1.57 Linux中的软链接和硬链接有什么区别?
6.1.58 说说缺页中断机制。
6.1.59 软中断和硬中断有什么区别?
6.1.60 介绍一下你对CopyOnWrite的了解。
6.1.61 Linux替换文本该如何操作呢?

七. 计算机网络

7.1 计算机网络

7.1.1 请介绍七层网络体系结构。
7.1.2 请介绍五层网络体系结构。
7.1.3 了解网络编程协议吗?客户端发送给服务器的请求,怎么确定具体的协议?
7.1.4 TCP、HTTP、FTP分别属于哪一层?
7.1.5 讲一下TCP/IP协议。
7.1.7 IP协议包含哪些字段?
7.1.9 应用层报文怎么传输到另一个应用层?
7.1.10 介绍一下tcp的三次握手。
7.1.11 介绍一下tcp的四次挥手。
7.1.12 为什么需要四次挥手?
7.1.13 为什么要有最后一次ACK?
7.1.14 介绍一下tcp粘包、拆包的机制。
7.1.15 介绍一下TCP和UDP的区别。
7.1.16 TCP和UDP对于网络稳定性有什么要求?
7.1.17 如何让UDP可靠一些?
7.1.19 TCP中的缓存有什么作用?
7.1.20 说一说TCP是怎么控制流量的?
7.1.21 HTTP2.0中TCP阻塞了怎么办?
7.1.22 TCP如何保证可靠性?
7.1.23 说一说TCP里的reset状态。
7.1.24 如何利用UDP实现可靠传输?
7.1.25 报文乱序怎么办?
7.1.26 说一说你对IP分类的了解。
7.1.28 IPV4和IPV6有什么区别?
7.1.29 说一下http和https的区别。
7.1.30 https为什么采用混合加密机制?
7.1.31 https支持什么加密算法?
7.1.32 说一说HTTPS的秘钥交换过程。
7.1.33 说一说HTTPS的证书认证过程。
7.1.34 HTTP请求头中包含什么内容?
7.1.35 HTTP是基于TCP还是UDP?
7.1.36 HTTP1.1和HTTP2.0有什么区别?
7.1.37 HTTP2.0和HTTP3.0有什么区别?
7.1.38 谈谈HTTP的缓存机制,服务器如何判断当前缓存过期?
7.1.39 介绍一下HTTP协议中的长连接和短连接。
7.1.40 介绍一下HTTPS的流程。
7.1.42 说一说你知道的http状态码。
7.1.43 301和302有什么区别?
7.1.44 302和304有什么区别?
7.1.45 请描述一次完整的HTTP请求的过程。
7.1.46 什么是重定向?
7.1.47 重定向和请求转发有什么区别?
7.1.48 介绍一下DNS寻址的过程。
7.1.49 说一说你对TIME_WAIT的理解。
7.1.50 TIME_WAIT、CLOSE_WAIT状态发生在哪一步?
7.1.51 有大量的TIME_WAIT状态怎么办?
7.1.52 请介绍socket通信的具体步骤。
7.1.53 服务端怎么提高处理socket连接的性能?
7.1.54 介绍一下流量控制和拥塞控制。
7.1.55 对路由协议是否有所了解?
7.1.56 直播可能需要使用到什么样的协议?
7.1.57 谈谈单工、双工、半双工的通信方式。

八. 设计模式

8.1 设计模式

8.1.1 说一说设计模式的六大原则
8.1.2 说一下六大原则中的开闭原则
8.1.3 手写一个单例模式
8.1.4 手写一个线程安全的单例模式
8.1.5 说一说你对工厂模式的理解
8.1.6 简单工厂模式和抽象工厂模式有什么区别?
8.1.7 如何实现工厂模式?
8.1.8 说一说你策略模式的理解
8.1.9 说一说你对观察者模式的了解
8.1.10 说一说你对责任链模式的了解
8.1.11 说一说装饰器模式和适配器模式的区别
8.1.12 Spring框架中用到了哪些设计模式?

九. 场景应用

9.1 场景应用

9.1.1 微信红包相关问题
9.1.2 秒杀系统相关问题
9.1.3 扫码登录流程
9.1.4 如何实现单点登录?
9.1.5 如何设计一个本地缓存?

十.数据结构与算法

10.1 哈希

10.1.1 请谈一谈,hashCode() 和equals() 方法的重要性体现在什么地方?
10.1.2 请说一说,Java中的HashMap的工作原理是什么?
10.1.3 介绍一下,什么是hashmap?
10.1.4 讲一讲,如何构造一致性哈希算法。
10.1.5 请问,Object作为HashMap的key的话,对Object有什么要求吗?
10.1.6 请问 HashSet 存的数是有序的吗?

10.2 树

10.2.1 TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
10.2.2 如何打印二叉树每层的节点?
10.2.3 如何知道二叉树的深度?
10.2.4 二叉树任意两个节点之间路径的最大长度
10.2.5 算法题:二叉树层序遍历,进一步提问:要求每层打印出一个换行符
10.2.6 怎么求一个二叉树的深度?手撕代码?
10.2.7 请你说一下,B+树和B-树?

10.3遍历

10.3.1 二叉树 Z 字型遍历
10.2.3 编程题:写一个函数,找到一个文件夹下所有文件,包括子文件夹

10.4链表

10.4.1 现在有一个单向链表,谈一谈,如何判断链表中是否出现了环
10.4.2 谈一谈,bucket如果用链表存储,它的缺点是什么?
10.4.3 有一个链表,奇数位升序偶数位降序,如何将链表变成升序
10.4.4 随机链表的复制
10.4.5 如何反转单链表

10.5 数组

10.5.1 写一个算法,可以将一个二维数组顺时针旋转90度,说一下思路。
10.5.2 一个数组,除一个元素外其它都是两两相等,求那个元素?
10.5.3 找出数组中和为S的一对组合,找出一组就行
10.5.4 求一个数组中连续子向量的最大和
10.5.5 寻找一数组中前K个最大的数

10.6 排序

10.6.1 用java写一个冒泡排序?
10.6.2 介绍一下,排序都有哪几种方法?请列举出来。
10.6.3 绍一下,归并排序的原理是什么?
10.6.4 介绍一下,堆排序的原理是什么?
10.6.5 谈一谈,如何得到一个数据流中的中位数?
10.6.6 你知道哪些排序算法,这些算法的时间复杂度分别是多少,解释一下快排?

10.7 堆与栈

10.7.1 请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。
10.7.2 说一说,heap和stack有什么区别。
10.7.3 介绍一下,堆与栈的不同是什么?

10.8 队列

10.8.1 什么是Java优先级队列(Priority Queue)?

10.9 高级算法

10.9.1 请你讲讲LRU算法的实现原理?
10.9.2 为什么要设计后缀表达式,有什么好处?
10.9.3 请你设计一个算法,用来压缩一段URL?
10.9.4 谈一谈,id全局唯一且自增,如何实现?
10.9.5 Design and implement a data structure for LeastFrequently Used (LFU) cache. It should support thefollowing operations: get and put. get(key) - Get thevalue (will always be positive) of the key if the keyexists in the cache, otherwise return -1. put(key,value) - Set or insert the value if the key is notalready present. When the cache reaches itscapacity, it should invalidate the least frequentlyused item before inserting a new item. For thepurpose of this problem, when there is a tie (i.e.,two or more keys that have the same frequency),the least recently used key would be evicted. Couldyou do both operations in O(1) time complexity?