Java开发校招求职-我的全部面试题目都在这里了
校招期间从7月份开始投简历面试到10月初基本结束校招,投递了大大小小一百家公司,面试了有几十家公司。到后面互联网,银行,拿了差不多十几个offer,拿到满意的offer后,就结束校招了。
拿到的offer(按拼音首字母排序):度小满,华为,keep,顺丰科技,58,宜信,其中不乏一些sp
银行:工商银行,交行,浦发等。
为校招我准备了许多,看了很多书,总结了很多笔记,准备的时间也很早。其实面试的多了,我有个体会,就是面试的问题都能回答上,并且回答好,面试基本就能通过了,所以我们不得不去记,大量的知识点,去为很多面试题自己去总结答案。所以能不能拿到offer,除了笔试通过以外,最重要的就是面试时候的表现了,只要你见过的面试题目越多,并且把见过的面试题目都自己总结出答案来,理解并记住消化为自己的,那么就会拿到满意的offer。
一、下面是我看过的书
1. 深入理解JVM第二版
2. Java编程的逻辑
3. Java核心技术
4. 疯狂Java讲义
5. 实战Java虚拟机JVM故障诊断与性能优化
6. Java多线程编程实战指南(核心篇) 黄文海
7. Java并发编程的艺术
8. 并发编程实战
9. MySq必知必会
10. 高性能MySql
11. MySql技术内幕InnoDB存储引擎 姜承宪
12. Redis设计与实现 黄健宏
13. 计算机网络 谢希仁
14. 图解http 日(上野宣)
15. 剑指offer
16. 程序员代码面试指南-it名企算法与数据结构题目最优解 左程云
17. headfirst设计模式
18. 图解设计模式
19. 深入分析Java Web 技术内幕 许令波
20. 看透SpringMVC
21. Effective Java 中文版
二、 下面是我为面试准备总结的面试题目
一、Java源码与JVM
1.1 Java语法及特性
1. java中接口和抽象类的区别
2. 抽象类和普通类的区别
3. 方法签名
4. 方法宗量
5. 注解
6. equals和==的区别
7. λ表达式
8. char可以存储汉字吗
9. java序列化
10. try catch finally return的情况
11. Java中的泛型擦除
12. 内部类
13. 接口的详细实验
14. 关于final的实验
15. 关于方法同步的实验
16. 一个方法参数是String类型的userid,我对userid加锁,能否实现线程安全
1.2 Java源码问题
1. HashMap源码问题
2. 当两个对象的hashcode相同时会发生什么,如何获取对象
3. HashMap的大小超过了负载因子定义的容量,怎么办
4. 你了解重新调整HashMap大小存在什么问题吗
5. 我们可以使用自定义的对象作为HashMap的键吗
6. 为什么String,Integer这样的包装类适合作为Map的键
7. 散列函数以及解决冲突的方法
8. HashMap的容量为什么设置为16
9. HashMap中的tableSizeFor方法
10. HashMap是线程安全的吗,为什么
11. 哪些是线程安全的容器
12. Hashtable和HashMap的区别
13. HashMap多线程处理之快速失败机制
14. jdk7和jdk8的HashMap实现的区别
15. java集合
16. ArrayList和LinkedList的区别
17. 写出Collections的6个方法
18. Arrays类是做什么的,写出它的常用的6个方法
19. HashMap与LinkedHashMap和TreeMap的区别
20. 如何对一个对象排序,有几种方法
21. 怎么把一个集合转化为数组,或把数组转化为集合
22. 在List里面有几种排序
23. 什么类可以实现有序存储(除ArrayList以外)
24. HashSet的理解
25. ArrayList集合加入一万条数据,应该怎么提升效率
26. Map接口又哪些实现类
27. set为什么是不允许重复的
28. 什么是for each 循环,它可以循环哪些数据类型
29. 怎样遍历List,Set,Map
30. 请说出Java中的散列表,树所对应的容器类
31. Integer缓存问题
32. String,StringBuffer,StringBuilder的区别
33. jdk7和jdk8的区别
34. Jdbc的详细连接过程
35. Statement和Prestatement的区别,以及Callable Statement接口
36. ResultSet结果集接口
37. Optional类
38. String为什么设置成不可变类
39. 不可变对象的好处
40. Map的put过程,可以为空吗,为什么
1.3 Java并发
1. 并发与并行
2. 竟态
3. 竟态的两种模式
4. 原子性
5. java实现原子性
6. 可见性
7. 重排序
8. 锁的概述
9. 锁的分类
10. 锁的作用
11. 使用所保证线程安全是有条件的
12. 锁的几个概念
13. 内部锁
14. 显示锁与内部锁的比较
15. 锁的选用
16. 改进锁(读写锁)ReadWriteLock
17. 锁的使用场景
18. 线程同步的底层助手:内存屏障
19. 锁与重排序
20. 轻量级同步机制volatile
21. volatile的作用
22. CAS与原子变量
23. 字段更新器
24. 对象初始化线程安全:重放final和static
25. 线程数的设置
26. 等待与通知:notify/notify
27. wait,notify的开销及问题
28. 多线程编程的硬件基础与java内存模型
29. volatile关键字的实现
30. Java实现生产者消费者的三种方法
31. 启动线程
32. volatile关键字的作用
33. final域的内存语义
34. 双重检查加锁与延迟初始化
35. 线程优先级
36. 什么是线程安全
37. 线程池线程数量
38. 线程池超负载了怎么办(jdk内置的拒绝策略)
39. sleep和wait的区别
40. Java中的NIO,BIO,AIO分别是什么
1.4 JVM面试题
1. 简述JVM内存布局
2. java对象创建的过程
3. 对象在内存中中存储的布局
4. java重载与重写的区别
5. java中init和clinit方法
6. 简述可达性分析算法
7. 简述垃圾回收算法
8. 垃圾回收器
9. 在垃圾回收器回收对象的时候,程序的逻辑是否可以继续执行
10. 绑定,动态绑定,静态绑定
11. 垃圾回收器在什么时候,对哪些对象,做了什么
12. 简述minor GC,与full GC
13. Java中的引用
14. 逃逸分析
15. 静态类型
16. 静态分派
17. 动态分派
18. 说一下java中的类加载机制
19. 简述虚拟机栈中的各个部分
20. jvm如何控制方法区的大小以及内存溢出的原因和解决
21. jvm outOfMemory种类
22. java垃圾回收分代,以及何时发生minor gc,以及full gc
23. java创建子类实例时,会创建父类实例吗
24. finalize
25. jstack用过吗,是干嘛的,怎么用:查看线程堆栈
26. 说说类加载,有哪些类加载器,为什么有双亲委派模型,如果没有怎样
27. JVM可以配置哪些参数
28. 虚拟机的工作模式:二选一
29. jdk性能监控工具
30. 栈的内存是怎么分配的
31. 用什么工具可以查看内存泄漏
32. 用什么工具调试程序,JConsole用过吗
33. 为什么要实现内存模型
二、数据结构
2.1 排序算法和树
1. 散列函数
2. 冒泡排序
3. 选择排序
4. 插入排序
5. 希尔排序
6. 快排
7. 归并
8. 堆排序
9. 总结
10. 二叉树的性质
11. 求二叉树的最短深度
12. 广度优先遍历
13. 二叉树前中后序遍历,递归非递归
14. 二叉树
15. B-树
16. 红黑树
2.2 位运算
1. 与或非,异或
2. 数字存储形式
3. 移位运算
三、网络
3.1 HTTP面试题
1. 返回结果的http状态码
2. 1XX
3. 2XX
4. 3XX
5. 4XX
6. 5XX
7. 各层对应的协议
8. OSI七层对各层协议
9. 保存会话状态,有哪些方式,它们的区别
10. session和cookie的区别
11. Http和https的区别
3.2 网络其它面试题
1. http协议
2. IPX网络地址
3. TCP如何保证可靠传输,三次握手过程
4. 为什么TCP连接需要三次握手,两次不可以吗,为什么
5. 如果客户单不断的发送请求连接回怎么样
6. get和post的区别
7. TCP与UDP的区别,以及如何改进TCP
8. TCP的拥塞控制
9. 从输入网址到获取网页的全过程
10. DNS协议
11. DNS解析的过程/浏览器输入一个url,敲下回车后网络的全过程
12. HTTP和HTTPS的区别
13. 为什么不一直使用HTTPS
14. 介绍下https,是如何加密的,加密算法
15. UDP怎么实现可靠传输
四、数据库
4.1 MySq面试题
1. 数据库索引的优缺点,以及什么时候数据库索引失效
2. 脏读,不可重复读,幻读
3. 事务隔离级别
4. 数据库中范式有哪些
5. 范式
6. 数据库中的索引结构
7. 在什么情况下建立索引
8. 数据库中分页查询语句怎么写
9. 数据库的ACID
10. MyISAM和InnoDB的区别
4.2 Sql笔试题
1. 查找最晚入职员工的所有信息
2. 查找入职员工时间排名倒数第三的员工的所有信息
3. 查找各个部门当前领导当前薪水详情以及其对应的部门编号
4. 查找所有已经分配部门的员工的last_name和first_name
5. 查找所有员工的last_name和first_name以及对应编号dept_no
6. 查找所有员工入职时候的薪水情况,给出emp_no以及salary,并按照emp_no进行逆序
7. 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
8. 查找所有员工具体的当前薪水情况
9. 获取所有部门的当前manager的当前薪水情况
10. 获取所有非manager的员工emp_no
11. 获取所有员工当前的manager
12. 获取所有部门中当前员工薪水最高的相关信息,给出emp_no...
13. 从titles表获取按照title进行分组,每组个数大于等于2...
4.3 Mysql基础知识
1. 基本概念
2. 主键
3. SQL
4. DBMS分类
5. 了解数据库和表
6. 所支持的其他show语句
7. SELECT语句
8. 检索单个列
9. 结束sql语句
10. 检索多个列
11. 检索所有列
12. 使用通配符
13. 检索不同的行
14. 限制结果
15. 使用全限定的表名
16. 排序数据
17. 按多个列排序
18. 指定排序方向
19. 区分大小写和排序顺序
20. 使用order by和 limit组合,找到一个列中的最高和最低的值
21. 使用WHERE子句
22. where子句操作符
23. 检测单个值
24. 何时使用引号
25. 范围值检查
26. 控制查询
27. 组合where子句
28. and操作符
29. or操作符
30. 计算次序
31. in 操作符
32. in or 比较
33. not 操作符
34. 通配符
35. 下划线(_)通配符
36. 使用通配符的技巧
37. 正则表达式
38. 拼接字段
39. 聚集函数(AVG,COUNT,MAX)
40. 创建分组
41. HAVING支持所有的WHERE操作符
42. 索引组织表
43. InnoDB存储引擎
44. B+树数据结构和聚簇索引
45. MySql添加删除索引的过程
46. 什么时候添加B+书索引
47. B+树索引的使用141
48. 全文索引
49. 什么是锁
50. lock与latch
51. InnoDB存储引擎的锁
52. 锁的算法
53. 查询执行基础
54. 优化count查询
55. MySql有哪些存储引擎,有什么区别
56. MySql底层的数据结构
57. MySql索引
58. having与where的区别
五、设计模式
5.1 设计模式与设计原则
1. 设计原则(9条)
2. 设计模式(10种)
3. 七种单例模式
4. 享元模式
5.2 设计模式面试题
1. 你所了解的设计模式,单例模式的注意事项,jdk源码哪些用到了你说的设计模式
2. 简述***模式的设计与实现以及使用场景
3. 简述***工厂模式的设计与实现与策略模式的区别
4. 简述简单工厂模式和工厂方法模式的区别
5. 原型模式以及深拷贝和浅拷贝
6. 简述命令模式
7. 简述责任链模式
8. 简述抽象工厂模式
9. 适配器模式
10. 迭代器模式
六、Linux常用命令
6.1 常用命令
1. 常用命令清单及释义
后面我又加了一些面试的经验,技巧和Java开发学习方法路线在里面。有需要完整面试笔记的,抠抠:583880994
#校招##度小满##秋招##面经##Java工程师#