文章374
标签215
分类51

张小凯のJava面试笔记

Le vent se lve, il faut tenter de vivre.

風立ちぬ、いざ生きめやも ———— 《風立ちぬ》

面试总结

本页面创立于: 2019年11月21日

页面成立原因: 总结博主准备Java面试的一路心酸史

面试内容来源:

再次感谢以上作者提供的面试相关资料!


Java基础

基础部分主要包括的内容有:

  • 基本语法
  • 类相关的内容
  • 内部类的内容
  • 继承相关的内容
  • 异常的内容
  • 线程的内容
  • 集合的内容
  • io的内容
  • 虚拟机方面的内容
文章索引 文章发布日期 问题内容
Java基础总结之一 2019-11-21 1. 一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制?

2. Java有没有goto?

3. 说说&和&&的区别

4. 在JAVA中如何跳出当前的多重嵌套循环?

5. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

6. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

7. char型变量中能不能存贮一个中文汉字?为什么?

8. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

9. ==和equals方法究竟有什么区别?

10. 静态变量和实例变量的区别?
Java基础总结之二 2019-11-21 1. 是否可以从一个static方法内部发出对非static方法的调用?

2. Integer与int的区别

3. Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

4. 为什么使用STRING.equals(str)? 它与str.equals(STRING)的区别是什么?

5. 请说出作用域public,private,protected,以及不写时的区别

6. Overload和Override的区别。Overload的方法是否可以改变返回值的类型?

7. 构造器Constructor是否可被override?

8. 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的main方法?

9. 写clone()方法时,通常都有一行代码,是什么?

10. 面向对象的特征有哪些方面?
Java基础总结之三 2019-11-21 1. java中实现多态的机制是什么?

2. abstract class和interface有什么区别?

3. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

4. 什么是内部类?Static Nested Class和Inner Class的不同

5. 内部类可以引用它的包含类的成员吗?有没有什么限制?

6. Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

7. super.getClass()方法调用

8. String是最基本的数据类型吗?

9. String s = new String(“str”)创建了几个String Object?二者之间有什么区别?

10. String和StringBuffer的区别
Java基础总结之四 2019-11-22 1. 如何把一段逗号分割的字符串转换成一个数组?

2. 数组有没有length()这个方法? String有没有length()这个方法?

3. 下面这条语句一共创建了多少个对象:String s=”a”+”b”+”c”+”d”;

4. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

5. try中的return和finally中的return最终会返回哪个值?

6. final, finally, finalize的区别

7. 运行时异常与一般异常有何异同?

8. error和exception有什么区别?

9. Java中的异常处理机制的简单原理和应用。

10. 请写出你最常见到的5个runtime exception。
Java基础总结之五 2019-11-22 1. 在try块中可以抛出异常吗?

2. java中有几种方法可以实现一个线程?

3. 用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

4. sleep()和 wait()有什么区别?

5. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。

6. 同步有几种实现方法?

7. 启动一个线程是用run()还是start()?

8. 当一个线程synchronized方法后,其它线程是否可进入此对象的其它方法? 静态方法和非静态方法都声明为synchronized是否会发生锁竞争?

9. 线程的基本概念、线程的基本状态以及状态之间的关系

10. 简述synchronized和java.util.concurrent.locks.Lock的异同?
Java基础总结之六 2019-11-22 1. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1

2. 介绍Collection框架的结构

3. ArrayList和Vector的区别

4. HashMap和Hashtable的区别

5. 说出ArrayList,Vector, LinkedList的存储性能和特性

6. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

7. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

8. 字节流与字符流的区别

9. 什么是java序列化,如何实现java序列化?请解释Serializable接口的作用

10. 什么是assert?什么时候用assert?
Java基础总结之七 2019-11-25 1. 描述一下JVM加载class文件的原理机制? 类的加载过程?

2. 类什么时候才被初始化?类的初始化步骤?

3. 什么是双亲委派模型(PDM-Parents Delegate Model)? 为什么使用双亲委派模型?

4. 能不能自己写个类,也叫java.lang.String?

5. heap和stack有什么区别?

6. GC是什么?为什么要有GC?

7. 垃圾回收的优点和原理, 并考虑2种回收机制

8. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

9. 谈谈Java中的垃圾分代?为什么要垃圾分代?如何分代?

10. java中会存在内存泄漏吗,请简单描述
Java基础总结之八 2019-12-05 1. xml有哪些解析技术?区别是什么?

2. XML文档定义有几种形式?它们之间有何本质区别?

3. 项目中用到了xml技术的哪些方面?如何实现的?

4. 用jdom解析xml文件时如何解决中文问题?如何解析?

5. 编程用Dom4j解析XML

算法部分

待更新, 敬请期待…

文章索引 文章发布日期 文章主要内容

数据库部分

文章索引 文章发布日期 文章主要内容
数据库总结之一 2019-12-04 一. 触发器与存储过程

二. 数据库三范式是什么?

三. 说出一些数据库优化方面的经验?

四. union和union all有什么不同?

五. 分页语句

六. 注册Jdbc驱动程序的三种方式

七. 用JDBC如何调用存储过程

八. JDBC中的PreparedStatement相比Statement的好处

九. 说出数据连接池的工作机制是什么?

十. 为什么要用 ORM? 和 JDBC有何不一样?
MySQL自定义函数 2019-12-04 创建并使用自定义函数

修改自定义函数

删除自定义函数
MySQL存储过程 2019-12-04 存储过程的创建

存储过程的参数

存储过程中的变量

存储过程的调用

存储过程的查询

存储过程的修改

存储过程的删除

存储过程的控制语句
MySQL触发器 2019-12-04 触发器简介

创建触发器

修改和删除触发器
MySQL变量 2019-12-04 系统变量

会话变量

局部变量

变量作用域
MySQL索引 2019-12-05 索引的管理

B+ 树索引的使用

索引的特点、优点、缺点及适用场景

Java Web部分

Java Web包括的知识主要有:

  • HTML + CSS + DIV
  • JavaScript
  • Ajax
  • JSP + Servlet + Tomcat
  • Strut2 + Hibernate(or JPA)Spring
  • Web Service

这里包括一些不经常使用(已经淘汰)的框架, 主流框架见框架部分

文章索引 文章发布日期 文章主要内容
JavaWeb总结之一 2019-11-25 1. Tomcat的优化

2. HTTP请求的GET与POST方式的区别

3. 什么是Servlet?Servlet的生命周期?

4. Servlet的基本架构

5. 两种跳转方式分别是什么?Servlet API中forward()与redirect()的区别?

6. Request对象的主要方法

7. request.getAttribute()和 request.getParameter()有何区别?

8. jsp有哪些内置对象?作用分别是什么?分别有什么方法?

9. JSP中动态INCLUDE与静态INCLUDE的区别?

框架部分

待更新, 敬请期待…

文章索引 文章发布日期 文章主要内容

JVM调优

待更新, 敬请期待…

文章索引 文章发布日期 文章主要内容

面试套题

这里收录一些BAT等公司的面试题目, 附上个人总结的答案:

文章索引 文章发布日期 文章主要内容
Java面试题总结之一 2019-12-24 1. ThreadLocal有什么缺陷?如果是线程池里的线程用ThreadLocal会有什么问题?

2. 类的加载机制,为什么要用双亲委托?如何打破双亲委托加载机制?

3. 你平时经常用到的设计模式有哪些?

4. 熟悉Reactive开发模式吗?

5. 你熟悉的分布式技术有哪些?了解他们底层的实现机制吗?

6. Spring Cloud 各个组件的运行机制是什么?

7. TreeMap与TreeSet实现原理是什么?

8. Array和ArrayList的区别?

9. JVM的数据区有哪些,作用是什么?
Java面试题总结之一续 2019-12-25 10. JVM堆内存结构是怎样的?哪些情况会触发GC?会触发哪些GC?

11. 数据库你们是怎么优化的?

12. synchronized 和Lock(ReentrantLock)有什么区别?

13. 用过反向代理服务器吗?用来做什么?nginx负载均衡有哪些参数?

14. 你熟悉的消息队列中间件的实现原理是什么?和其他消息中间对比,有什么优势?

15. select、poll、epoll的原理与区别

16. BIO、NIO与AIO有什么区别?

17. 你的职业规划?年薪期望薪资?
蚂蚁金服面试题-1-一面 2020-02-05 1. 序列化的底层怎么实现的

2. synchronized的底层怎么实现的

3. tomcat集群怎么保证同步

4. 谈谈Redis

5. 怎么解决项目中超卖的问题

6. int的范围
蚂蚁金服面试题-1-二面 2020-02-06 7. 你熟悉什么数据结构

8. 说说快排,复杂度

9. 乐观锁vs悲观锁

10. GC

11. ConcurrentHashMap分段锁的细节

12. 设计模式怎么分类,每一类都有哪些

13. 并发包里了解哪些

14. b树,b+树,b*树

15. 字节与字符的区别
蚂蚁金服面试题-1-三面 2020-02-06 16. 知道哪些服务器?区别?

17. java有什么后端技术

18. SpringIoC优点

19. jdk动态代理与cglib动态代理,他们底层分别怎么实现的

20. SynchronizedMap知道吗?他和ConcurrentHashMap分别使用于什么场景?

21. HTTPS过程?公钥能用公钥解吗?在客户端抓包,看到的是加密的还是没加密的?

22. 描述一下Java线程池

23. 怎么保证redis和DB中的数据一致

24. 类加载

JDK源码分析


注: 文章中的源码解析均基于JDK11.0.4

文章索引 文章发布日期 文章主要内容
为什么在Java中String被设计为不可变 2019-10-01 String源码简单分析

JVM内存模型

String在JVM中的常量池的解析: 字面量, new, +连接, intern()

String中的==和equals

什么是Java中的不可变? 不可变的好处与坏处?

证明回答String被设计成不可变和不能被继承的原因
Java集合一-Collection架构 2019-11-23 集合总体框架概述

Iterator源码分析

ListIterator源码分析

Collection源码分析

List源码分析

Set源码分析

AbstractCollection源码分析

AbstractList源码分析

AbstractSet源码分析
Java集合二-ArrayList 2019-11-24 ArrayList数据结构

ArrayList源码解析

ArrayList遍历方式(完整遍历, 子列表遍历, 并发遍历)

toArray()异常
Java集合四-LinkedList 2019-11-26 LinkedList介绍(构造函数, API等)

LinkedList数据结构(继承关系等)

LinkedList源码解析

LinkedList遍历方式(整表遍历, 子列表遍历, 并发遍历)

LLSpliterator与ArrayListSpliterator的区别(为什么不推荐使用LLSpliterator)
Java集合五-Vector 2019-11-26 Vector介绍(构造函数, API等)

Vector数据结构(继承关系等)

Vector源码解析

Vector遍历方式(整表遍历, 子列表遍历, 并发遍历)

Vector示例
Java集合六-Stack 2019-11-27 Stack介绍(构造函数, API等)

Stack源码解析(基于JDK11.0.4)

Stack示例
Java集合八-Map架构 2019-11-27 Map的整体架构

Map源码

Map.Entry源码

AbstractMap源码

SortedMap源码

NavigableMap源码

Dictionary源码
Java集合九-HashMap存储过程.png 2019-11-28 HashMap数据结构

HashMap源码深度解析

HashMap内部转换等总结
Java集合十-TreeNode与HashMap 2019-12-02 数据结构Tree的发展史

HashMap中TreeNode的源码分析

HashMap中的hash冲突

HashMap中的Rehash操作

HashMap遍历方式(整表遍历, 并发遍历)
关于JDK8添加的Spliterator的一些理解 2019-12-03 Spliterator源码解读

ArrayList中Spliterator的实现

LinkedList中Spliterator的实现

HashMap(Set)中Spliterator的实现
Java中自动拆装箱的陷阱 2019-12-12 为什么Integer(3) == Integer(3)就是true, 而Integer(321) == Integer(321)就是false?

为什么Integer(3) == Integer(1) + Integer(2)与Integer(3).equals(Integer(1) + Integer(2))都是true?

为什么Long(3) == Integer(3)是true, 而Long(3).equals(Integer(3))就是false?

拆装箱总结
深入剖析Java中的void和java.lang.Void 2019-12-12 void和java.lang.Void的比较

Void类的使用场景
ThreadLocal源码解析 2019-12-26 ThreadLocal介绍(构造函数, API等)

线性探测法(Hash表)解读

ThreadLocal源码解读

ThreadLocalMap到底存放在哪里

为什么使用0x61c88647进行Rehash操作

ThreadLocal源码中为了防止内存泄露做出的努力

在使用ThreadLocal时防止内存泄漏你应该做出的努力

ThreadLocal实例

请我喝Java

如果觉得博主面试内容对你有帮助, 可以对本博主打赏哦!

Alipay:

alipay

WechatPay:

wechat


赞助单

时间 捐助人 金额 赞助目标
2019-11-09 林❤ 5.20 张小凯
2020-01-18 angula2 20.0 张小凯

本人再次向以上对本站赞助的老爷们表示感谢, 你们是最棒的!

另外也感谢我的女朋友林妈妈, 在学习代码、准备面试期间,都没什么时间陪我们家小可爱。感谢她的包容和支持。



本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/interview/index.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可