前言
字节跳动面试算法那是行业出了名的厉害。人狠话不多,上来就是一套算法“组合拳”,如果你不“抗揍”的话,连面试的机会都没有了。
面试字节跳动,拼多多这种大厂肯定躲避不了算法题的,相信面试过的小伙伴都知道,不管在现场面还是视频面肯定都会被问到算法,难度是要比笔试的时候容易些的。
不多扯,如果你是应届毕业生、学了一年多Java的知识或者是工作多年想回顾复习算法,我想你应该具备这些知识。这篇文档内容我花了一个多星期的时间来详解描述,经过不断的修改最终整理出这份精美的PDF。
分享第一份Java基础-中级-高级面试集合
- Java基础(对象+线程+字符+接口+变量+异常+方法)
- Java中级开发(底层+Spring相关+Redis+分布式+设计模式+MySQL+高并发+锁+线程)
- Java高级“程序猿”(高并发+Redis缓存+分布式+消息队列+高可用+微服务+分库分表+读写分离)
- 高并发系列(经典面试题:如何设计一个高并发系统?)
- Redis缓存系列
- 分布式系列
- 消息队列系列
- 高可用系列
- 微服务系列
- 分库分表系列
- 读写分离系列
- … …
Java高分面试指南-25分类227页1000+题50w+字解析
题目太多,我就不一一列举了,举例部分大家最感兴趣的
第一分类 JavaOOP面试题
第二分类 Java集合/泛型面试题
- 1、ArrayList和linkedList的区别
- 2、 HashMap和HashTable的区别
- 3、Collection包结构,与Collections的区别
- 4、泛型常用特点 (待补充)
- 5、说说List,Set,Map三者的区别
- 6、Array与ArrayList有什么不一样?
- 7、Map有什么特点
- 8、集合类存放于 Java.util 包中, 主要有几 种接口
- 9、什么是list接口
- 10、说说ArrayList(数组)
- 11、Vector( 数组实现、 线程同步)
- 12、说说LinkList(链表)
- 13、什么Set集合
- 14、HashSet( Hash 表)
- 15、什么是TreeSet(二叉树)
- 16、说说LinkHashSet( HashSet+LinkedHashMap)
- 17、HashMap(数组+链表+红黑树)
- 18、说说ConcurrentHashMap
- 19、HashTable(线程安全)
- 20、TreeMap(可排序)
- 21、LinkHashMap(记录插入顺序)
- 22、泛型类
- 23、类型通配符?
- 24、类型擦除
第三分类 Java中的IO与NIO面试题
第四分类 Java反射面试题
第五分类 Java序列化面试题
第六分类 Java注解面试题
第七分类 多线程&并发面试题
- 1、Java中实现多线程有几种方法
- 2、继承 Thread 类
- 3、实现 Runnable 接口。
- 4、ExecutorService、 Callable、 Future 有返回值线程
- 5、基于线程池的方式
- 6、4 种线程池
- 7、如何停止一个正在运行的线程
- 8、notify()和notifyAll()有什么区别?
- 9、sleep()和wait() 有什么区别?
- 10、volatile 是什么?可以保证有序性吗?
- 11、Thread 类中的start() 和 run() 方法有什么区别?
- 12、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
- 13、为什么wait和notify方法要在同步块中调用?
- 14、Java中interrupted 和 isInterruptedd方法的区别?
- 15、Java中synchronized 和 ReentrantLock 有什么不同?
- 16、有三个线程T1,T2,T3,如何保证顺序执行?
- 17、SynchronizedMap和ConcurrentHashMap有什么区别?
- 18、什么是线程安全
- 19、Thread类中的yield方法有什么作用?
- 20、Java线程池中submit() 和 execute()方法有什么区别?
- 21、说一说自己对于 synchronized 关键字的了解
- 22、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
- 23、什么是线程安全?Vector是一个线程安全类吗?
- 24、volatile关键字的作用?
- 25、简述一下你对线程池的理解
- 26、线程生命周期(状态)
- 27、新建状态(NEW)
- 28、就绪状态(RUNNABLE)
- 29、运行状态(RUNNING)
- 30、阻塞状态(BLOCKED)
- 31、线程死亡(DEAD)
- 32、终止线程 4 种方式
- 33、start 与 run 区别
- 34、JAVA 后台线程
- 35、什么是乐观锁
- 36、什么是悲观锁
- 37、什么是自旋锁
- 38、Synchronized 同步锁
- 39、ReentrantLock
- 40、Condition 类和 Object 类锁方法区别区别
- 41、tryLock 和 lock 和 lockInterruptibly 的区别
- 42、Semaphore 信号量
- 43、Semaphore 与 ReentrantLock 区别
- 44、可重入锁(递归锁)
- 45、公平锁与非公平锁
- 46、ReadWriteLock 读写锁
- 47、共享锁和独占锁
- 48、重量级锁(Mutex Lock)
- 49、轻量级锁
- 50、偏向锁
- 51、分段锁
- 52、锁优化
- 53、线程基本方法
- 54、线程等待(wait)
- 55、线程睡眠(sleep)
- 56、线程让步(yield)
- 57、线程中断(interrupt)
- 58、Join 等待其他线程终止
- 59、为什么要用 join()方法?
- 60、线程唤醒(notify)
- 61、线程其他方法
- 62、进程
- 63、上下文
- 64、寄存器
- 65、程序计数器
- 66、PCB-“切换桢”
- 67、上下文切换的活动
- 68、引起线程上下文切换的原因
- 69、同步锁
- 70、死锁
- 71、线程池原理
- 72、线程复
- 73、线程池的组成
- 74、拒绝策略
- 75、Java 线程池工作过程
- 76、JAVA 阻塞队列原理
- 77、Java 中的阻塞队列
- 78、ArrayBlockingQueue(公平、非公平)
- 79、LinkedBlockingQueue(两个独立锁提高并发)
- 80、PriorityBlockingQueue(compareTo 排序实现优先)
- 81、DelayQueue(缓存失效、定时任务 )
- 82、SynchronousQueue(不存储数据、可用于传递数据)
- 83、LinkedTransferQueue
- 84、LinkedBlockingDeque
- 85、在 java 中守护线程和本地线程区别
- 86、线程与进程的区别?
- 87、什么是多线程中的上下文切换?
- 88、死锁与活锁的区别,死锁与饥饿的区别?
- 89、Java 中用到的线程调度算法是什么?
- 90、什么是线程组,为什么在 Java 中不推荐使用?
- 91、为什么使用 Executor 框架?
- 92、在 Java 中 Executor 和 Executors 的区别?
- 93、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?
- 94、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
- 95、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
- 96、什么是 Executors 框架?
- 97、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
- 98、什么是 Callable 和 Future?
- 99、什么是 FutureTask?使用 ExecutorService 启动任务。
- 100、什么是并发容器的实现?
- 101、多线程同步和互斥有几种实现方法,都是什么?
- 102、什么是竞争条件?你怎样发现和解决竞争?
- 103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- 104、Java中,你怎样唤醒一个阻塞的线程?
- 105、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
- 106、什么是不可变对象,它对写并发应用有什么帮助?
- 107、Java 中用到的线程调度算法是什么?
- 108、什么是线程组,为什么在 Java 中不推荐使用?
第八分类 面试之JVM
第九分类 Mysql面试题
- 1、数据库存储引擎
- 2、InnoDB(B+树)
- 2、TokuDB( Fractal Tree-节点带数据)
- 3、MyIASM
- 4、Memory
- 5、数据库引擎有哪些
- 6、InnoDB与MyISAM的区别
- 7、索引
- 8、常见索引原则有
- 9、数据库的三范式是什么
- 10、第一范式(1st NF - 列都是不可再分)
- 11、第二范式(2nd NF- 每个表只描述一件事情)
- 12、第三范式(3rd NF- 不存在对非主键列的传递依赖)
- 13、数据库是事务
- 14、SQL优化
- 15、简单说一说drop、delete与truncate的区别
- 16、什么是视图
- 17、什么是内联接、左外联接、右外联接?
- 18、并发事务带来哪些问题?
- 19、事务隔离级别有哪些?MySQL的默认隔离级别是?
- 20、大表如何优化?
- 21、水平分区
- 22、分库分表之后,id 主键如何处理
- 23、存储过程(特定功能的 SQL 语句集)
- 24、存储过程优化思路
- 25、触发器(一段能自动执行的程序)
- 26、数据库并发策略
- 27、MySQL 中有哪几种锁?
- 28、MySQL 中有哪些不同的表格?
- 29、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
- 30、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 31、CHAR 和 VARCHAR 的区别?
- 32、主键和候选键有什么区别?
- 33、myisamchk 是用来做什么的?
- 34、MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 35、如果一个表有一列定义为 TIMESTAMP,将发生什么?
- 36、你怎么看到为表格定义的所有索引?
- 37、LIKE 声明中的%和_是什么意思?
- 38、列对比运算符是什么?
- 39、BLOB 和 TEXT 有什么区别?
- 40、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
- 41、MyISAM 表格将在哪里存储,并且还提供其存储格式?
- 42、MySQL 如何优化 DISTINCT?
- 43、如何显示前 50 行?
- 44、可以使用多少列创建索引?
- 45、NOW()和 CURRENT_DATE()有什么区别?
- 46、什么是非标准字符串类型?
- 47、什么是通用 SQL 函数?
- 48、MySQL 支持事务吗?
- 49、MySQL 里记录货币用什么字段类型好
- 50、MySQL 有关权限的表都有哪几个?
- 51、列的字符串类型可以是什么?
- 52、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
- 53、锁的优化策略
- 54、索引的底层实现原理和优化
- 55、什么情况下设置了索引但无法使用
- 56、实践中如何优化 MySQL
- 57、优化数据库的方法
- 58、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
- 59、数据库中的事务是什么?
- 60、SQL 注入漏洞产生的原因?如何防止?
- 61、为表中得字段选择合适得数据类型
- 62、存储时期
- 63、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题
- 64、解释 MySQL 外连接、内连接与自连接的区别
- 65、Myql 中的事务回滚机制概述
- 66、SQL 语言包括哪几部分?每部分都有哪些操作关键
- 67、完整性约束包括哪些?
- 68、什么是锁?
- 69、什么叫视图?游标是什么?
- 70、什么是存储过程?用什么来调用?
- 71、如何通俗地理解三个范式?
- 72、什么是基本表?什么是视图?
- 73、试述视图的优点?
- 74、NULL 是什么意思
- 75、主键、外键和索引的区别?
- 76、你可以用什么来确保表格里的字段只接受特定范围里的值?
- 77、说说对 SQL 语句优化有哪些方法?(选择几条)
- 78、什么是乐观锁
- 79、什么是悲观锁
- 80、什么是时间戳
- 81、什么是行级锁
- 82、什么是表级锁
- 83、什么是页级锁
第十分类 Redis面试题
- 1、什么是 Redis?
- 2、Redis 与其他 key-value 存储有什么不同?
- 3、Redis 的数据类型?
- 4、使用 Redis 有哪些好处?
- 5、Redis 相比 Memcached 有哪些优势?
- 6、Memcache 与 Redis 的区别都有哪些?
- 7、Redis 是单进程单线程的?
- 8、一个字符串类型的值能存储最大容量是多少?
- 9、Redis持久化机制
- 10、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
- 11、热点数据和冷数据是什么
- 12、单线程的redis为什么这么快
- 13、redis的数据类型,以及每种数据类型的使用场景
- 14、redis的过期策略以及内存淘汰机制
- 15、Redis 常见性能问题和解决方案?
- 16、为什么Redis的操作是原子性的,怎么保证原子性的?
- 17、Redis事务
- 18、Redis 的持久化机制是什么?各自的优缺点?
- 19、Redis 常见性能问题和解决方案:
- 20、redis 过期键的删除策略?
- 21、Redis 的回收策略(淘汰策略)?
- 22、为什么 edis 需要把所有数据放到内存中?
- 23、Redis 的同步机制了解么?
- 24、Pipeline 有什么好处,为什么要用 pipeline?
- 25、是否使用过 Redis 集群,集群的原理是什么?
- 26、Redis 集群方案什么情况下会导致整个集群不可用?
- 27、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
- 28、Jedis 与 Redisson 对比有什么优缺点?
- 29、Redis 如何设置密码及验证密码?
- 30、说说 Redis 哈希槽的概念?
- 31、Redis 集群的主从复制模型是怎样的?
- 32、Redis 集群会有写操作丢失吗?为什么?
- 33、Redis 集群之间是如何复制的?
- 34、Redis 集群最大节点个数是多少?
- 35、Redis 集群如何选择数据库?
- 36、怎么测试 Redis 的连通性?
- 37、怎么理解 Redis 事务?
- 38、Redis 事务相关的命令有哪几个?
- 39、Redis key 的过期时间和永久有效分别怎么设置?
- 40、Redis 如何做内存优化?
- 41、Redis 回收进程如何工作的?
- 42、都有哪些办法可以降低 Redis 的内存使用情况呢?
- 43、Redis 的内存用完了会发生什么?
- 44、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素
- 45、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
- 46、Redis 最适合的场景?
- 47、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 48、如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
- 49、使用过 Redis 做异步队列么,你是怎么用的?
- 50、使用过 Redis 分布式锁么,它是怎么回事?
总结
就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!**
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
[外链图片转存中…(img-32d1K7nk-1651031494234)]