震精!京东T4大佬面试整整三个月,才肝了两份java面试笔记
前言
天之道,损有余而补不足,是故虚胜实,不足胜有余。
京东大佬在三个月之内参加过多场面试,应聘岗位均为 Java 开发方向。在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点。故总结两份资料,一份“Java核心知识总结”,一份为“面试题”。对于各位志在投身 Java 开发岗位的小伙伴们来说,本文所提到的知识点绝对是面试中的重点,希望各位可以有效掌握。
Java核心知识点总结
从形式上说,面试一般分为 2-3 论技术面试 +1 轮 HR 面试。但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。
技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试。只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。
也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。首先先说一下基础知识!
主要包括以下几个部分:
IO
集合
反射的思想及作用
代理模式
变量
深入理解 static 关键字
String、StringBuffer 和 StringBuilder
Comparator 和 Comparable
谈谈强引用、软引用、弱引用、幻象引用
Linux 命令相关
线程
同步容器类
Java 锁分类
IO
Java lO是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从Java的BIO开始,一步一步深入学习。
Java I/O
- 传统的 BIO
- BIO NIO 和 AIO 的区别
- 什么是流
- 流的分类
- 节点流和处理流
- Java IO 的核心类 File
- Java IO 流对象
- 字节流与字符流的转换
- 新潮的 NIO
- 缓冲区(Buffer)
- 通道(Channel)
- 选择器(Selectors)
- 选择键(SelectionKey)
集合
集合在我们日常开发使用的次数数不胜数。
Java集合全家桶
- 集合框架总览
- Iterator Iterable ListIterator
- Map 和 Collection 接口
- Map 集合体系详解
- Collection 集合体系详解
- Set 接口
- List 接口
- LinkedList
- Queue接口
- Deque 接口
图都画的如此精细
反射的思想及作用
反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射.....
- 反射的基本使用
- 反射的应用场景
- 反射的优势及缺陷
代理模式
- 静态代理与动态代理
- 常见的动态代理实现
- 动态代理的实际应用
变量
变量是我们经常用到的一种,我在刚学Java的时候,也经常被各种变量的概念折磨,当时并没有细抠,但是我在写一篇类似的文章中,想把变量作为一种小标题来简述一下,但是发现,变量这个概念还是比较繁琐的,下面就来认识一下这些变量。
- 变量汇总
- 实例变量
- 全局变量
- 静态变量
- 类变量
- 局部变量
- 成员变量
- 常量
- 验证过程
深入理解 static 关键字
- static 基础知识
- static 进阶知识
- 类的构造器是否是 static 的
String、StringBuffer 和 StringBuilder
- String
- StringBuffer
- StringBuilder
- 深入理解 String、StringBuilder、StringBuffer
- StringBuilder 和 StringBuffer 的扩容问题
Comparator 和 Comparable
- 对 Comparable 的解释
- 对Comparator 的解释
- Comparable 和 Comparator 的对比
谈谈强引用、软引用、弱引用、幻象引用
- 垃圾收集器
- Finalizers
- 对象的生命周期
并发历史
线程
- 什么是多线程
- 并发和并行的关系
- 优势和劣势
- 并发为什么会出现
- 线程带来的安全性问题
- 引起线程切换的几种方式
- 线程安全性
- 竞态条件和关键区域
- 并发模型和分布式系统很相似
- 认识两个状态
- 并发模型
- 函数性并行
- 创建并启动线程
- 继承 Thread 类来创建线程
- 使用 Runnable 接口来创建线程
- 使用 Callable 接口来创建线程
- 使用线程池来创建线程
- 休眠
- 优先级
- 作出让步
- 后台线程
- ThreadFactory
- 加入一个线程
- 线程异常捕获
同步容器类
同步容器主要包括两类,一种是本来就是线程安全实现的容器,这类容器有Vector、Hashtable、Stack,这类容器的方法上都加了synchronized锁,是线程安全的实现。
还有一类是由 Collections.synchronizedxxx实现的非线程安全的容器,使用Collections.synchronized会把它们封装起来变成线程安全的容器。
- fail-fast
- fail-safe
- 操作系统中的并发工具
- Java 并发工具包
- ConcurrentMap
- BlockingQueue
- BlockingDeque
- 同步工具类
Java 锁分类
Java中的锁有很多,可以按照不同的功能、种类进行分类,下面是对Java中一些常用锁的分类,包括一些基本的概述。
- 线程是否需要对资源加锁
- 悲观锁
- 乐观说
- 两种锁的使用场景
- 乐观锁的实现方式
- 乐观锁的缺点
- CAS与synchronized的使用情景
- 资源已被锁定,线程是否阻塞
- 自旋锁的提出背景
- 什么是自旋锁
- 自旋锁的原理
- 自旋锁的优缺点
- 自旋锁的实现
- 多个线程并发访问资源
- 锁状态的分类
- Java 对象头
- Synchronized锁
- Monitor
- 锁的分类及其解释
- 锁的公平性与非公平性
- 锁公平性的实现
- ReentrantLock 基本概述
- ReentrantLock 如何实现锁公平性
- 根据锁是否可重入进行区分
- 可重入锁
- 不可重入锁
- 多个线程能够共享同一把锁
- 独占锁和共享锁
面试题
这份面试题你不要只把它当成一个 PDF,你可以把它想象成一个非常美好的东西,它能让你在面试中所向披靡。
Java 基础篇
HTTP 篇
- HTTP 和 HTTPS 的区别
- HTTP Get 和 Post 区别
- 什么是无状态协议,HTTP 是无状态协议吗,怎么解决
- UDP 和 TCP 的区别
- TCP 三次握手和四次挥手
- 简述 HTTP1.0/1.1/2.0 的区别
- 请你说一下 HTTP 常见的请求头
- 地址栏输入 URL 发生了什么
- HTTPS 的工作原理
MySQL 篇
- 非关系型数据库和关系型数据库区别,优势比较
- MySQL 事务四大特性
- MySQL 常见存储引擎的区别
- MySQL 基础架构
- SQL 的执行顺序
- 什么是临时表,何时删除临时表
- MySQL 常见索引类型
- varchar 和 char 的区别和使用场景
- 什么是 内连接、外连接、交叉连接、笛卡尔积
- 谈谈 SQL 优化的经验
操作系统篇
一共将近 80 页,将近 3w + 字,希望可以帮到你们。
算法
上文说到算法,给你们补充一下!
这本书很强了,是左神左程云著作,强烈建议你们刷一下!
结尾
这是一篇很长的文章,然而,再长的文章也道不尽面试笔试的所有经历。找工作是一场持久战,坚持到最后的才是胜利者。
获取方式:由于篇幅过长,无法全部展示,需要这三本文档的朋友,麻烦点赞+关注,加助理VX:mxx2020666,即可免费领取