书籍目录
必看
历史更新记录
建议阅读本文档的方式
前言
一 面试前的准备
1.1 如何准备一场面试
1.1.1 如何获取大厂面试机会?
1.1.2 面试必知
1) 准备自己的自我介绍
2) 关于着装
3) 随身带上自己的成绩单和简历
4) 如果需要笔试就提前刷一些笔试题
5) 花时间一些逻辑题
6) 准备好自己的项目介绍
7) 提前了解公司以及要应聘的岗位
1.1.3 提前准备技术面试
1.1.4 面试之前做好定向复习
1.1.5 面试之后复盘
1.2 简历该如何写
1.2.1 为什么说简历很重要?
先从面试前来说
再从面试中来说
1.2.2 这3点你必须知道
1.2.3 你必须知道的两大法则
1.2.4 项目经历怎么写?
1.2.5 专业技能该怎么写?
1.2.6 开源程序员简历模板分享
1.2.7 其他的一些关于写简历的小tips
1.3 如果面试官问你“你有什么问题问我吗?”时,你该如何回答
1.3.1 这个问题对最终面试结果的影响到底大不大?
1.3.2 真诚一点,不要问太 Low 的问题
1.3.3 有哪些有价值的问题值得问?
面对HR或者其他Level比较低的面试官时
面对部门领导
面对Level比较高的(比如总裁,老板)
1.3.4 来个补充,顺便送个祝福给大家
1.4 面试官问你的优点是什么,应该如何回答?
1.5 面试官问你的缺点是什么,应该如何回答?
1.6 七个大部分程序员在面试前很关心的问题
Question1:我是双非/三本/专科学校的,我有机会进入大厂吗?
Question2:非计算机专业的学生能学好Java后台吗?我能进大厂吗?
Question3: 我没有实习经历的话找工作是不是特别艰难?
Question4: 我该如何准备面试呢?面试的注意事项有哪些呢?
Question5: 我该自学还是报培训班呢?
Question6: 没有项目经历/博客/Github开源项目怎么办?
Question7: 大厂到底青睐什么样的应届生?
二 Java
2.1 Java 基础知识
2.1.1 重载和重写的区别
2.1.2 String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?
2.1.3 自动装箱与拆箱
2.1.4 == 与 equals
2.1.5 关于 final 关键字的一些总结
2.1.6 Object类的常见方法总结
2.1.7 Java 中的异常处理
2.1.8 获取用键盘输入常用的的两种方法
2.1.9 接口和抽象类的区别是什么
2.2 Java 集合框架
2.2.1 Arraylist 与 LinkedList 异同
2.2.2 ArrayList 与 Vector 区别
2.2.3 HashMap的底层实现
JDK1.8之前
JDK1.8之后
2.2.4 HashMap 和 Hashtable 的区别
2.2.5 HashMap 的长度为什么是2的幂次方
2.2.6 HashMap 多线程操作导致死循环问题
2.2.7 HashSet 和 HashMap 区别
2.2.8 ConcurrentHashMap 和 Hashtable 的区别
2.2.9 ConcurrentHashMap线程安全的具体实现方式/底层具体实现
JDK1.7(上面有示意图)
JDK1.8 (上面有示意图)
2.2.10 集合框架底层数据结构总结
Collection
1. List
2. Set
Map
2.3 Java多线程
一 面试中关于 synchronized 关键字的 5 连击
1.1 说一说自己对于 synchronized 关键字的了解
1.2 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗
1.3 讲一下 synchronized 关键字的底层原理
1.4 说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗
1.5 谈谈 synchronized和ReenTrantLock 的区别
二 面试中关于线程池的 4 连击
2.2 说说 synchronized 关键字和 volatile 关键字的区别
三 面试中关于 线程池的 2 连击
3.1 为什么要用线程池?
3.2 实现Runnable接口和Callable接口的区别
3.3 执行execute()方法和submit()方法的区别是什么呢?
3.4 如何创建线程池
四 面试中关于 Atomic 原子类的 4 连击
4.1 介绍一下Atomic 原子类
4.2 JUC 包中的原子类是哪4类?
4.3 讲讲 AtomicInteger 的使用
4.4 能不能给我简单介绍一下 AtomicInteger 类的原理
五 AQS
5.1 AQS 介绍
5.2 AQS 原理分析
5.2.1 AQS 原理概览
5.2.2 AQS 对资源的共享方式
5.2.3 AQS底层使用了模板方法模式
2.4 Java虚拟机
2.5 设计模式
三 计算机网络常见面试点总结
3.1 TCP、UDP 协议的区别
3.2 在浏览器中输入url地址 ->> 显示主页的过程
3.3 各种协议与HTTP协议之间的关系
3.4 HTTP长连接、短连接
3.5 TCP 三次握手和四次挥手(面试常客)
四 Linux
4.1 简单介绍一下 Linux 文件系统?
4.2 一些常见的 Linux 命令了解吗?
五 MySQL
5.1 说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解
5.2 数据库索引了解吗?
5.2.1 为什么索引能提高查询速度?
5.2.2 最左前缀原则
5.2.3 Mysql如何为表字段添加索引???
5.3 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:
5.4 事务隔离级别(图文详解)
什么是事务?
事物的特性(ACID)
并发事务带来的问题
事务隔离级别
实际情况演示
脏读(读未提交)
避免脏读(读已提交)
不可重复读
可重复读
防止幻读(可重复读)
参考
六 Redis
6.1 redis 简介
6.2 为什么要用 redis /为什么要用缓存
6.3 为什么要用 redis 而不用 map/guava 做缓存?
6.4 redis 和 memcached 的区别
6.5 redis 常见数据结构以及使用场景分析
1. String
2.Hash
3.List
4.Set
5.Sorted Set
6.6 redis 设置过期时间
6.7 redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
6.8 redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
6.9 redis 事务
6.10 缓存雪崩和缓存穿透问题解决方案
6.11 如何解决 Redis 的并发竞争 Key 问题
6.12 如何保证缓存与数据库双写时的数据一致性?
参考
七 Spring
7.1 Spring Bean 的作用域
7.2 Spring 事务中的隔离级别
7.3 Spring 事务中的事务传播行为
7.4 AOP
7.5 IOC
八 消息队列
8.1 什么是消息队列
8.2 为什么要用消息队列
(1) 通过异步处理提高系统性能(削峰、减少响应所需时间)
(2) 降低系统耦合性
8.3 使用消息队列带来的一些问题
8.4 JMS VS AMQP
8.4.1 JMS
JMS 简介
JMS两种消息模型
JMS 五种不同的消息正文格式
8.4.2 AMQP
8.4.3 JMS vs AMQP
8.5 常见的消息队列对比
九 Dubbo
一 重要的概念
1.1 什么是 Dubbo?
1.2 什么是 RPC?RPC原理是什么?
1.3 为什么要用 Dubbo?
1.4 什么是分布式?
1.5 为什么要分布式?
二 Dubbo 的架构
2.1 Dubbo 的架构图解
2.2 Dubbo 工作原理
三 Dubbo 的负载均衡策略
3.1 先来解释一下什么是负载均衡
3.2 再来看看 Dubbo 提供的负载均衡策略
3.2.1 Random LoadBalance(默认,基于权重的随机负载均衡机制)
3.2.2 RoundRobin LoadBalance(不推荐,基于权重的轮询负载均衡机制)
3.2.3 LeastActive LoadBalance
3.2.4 ConsistentHash LoadBalance
3.3 配置方式
四 zookeeper宕机与dubbo直连的情况
十 数据结构
Queue
什么是队列
队列的种类
Java 集合框架中的队列 Queue
推荐文章
Set
什么是 Set
补充:有序集合与无序集合说明
HashSet 和 TreeSet 底层数据结构
推荐文章
List
什么是List
List的常见实现类
ArrayList 和 LinkedList 源码学习
推荐阅读
Map
树
图
BFS及DFS
十一 算法
十二 实际场景题
十三 BATJ真实面试题
美团基础篇
1. System.out.println(3|9)输出什么?
2. 说一下转发(Forward)和重定向(Redirect)的区别
3. 在浏览器中输入url地址到显示主页的过程,整个过程会使用哪些协议
4. TCP 三次握手和四次挥手
为什么要三次握手
为什么要传回 SYN
传了 SYN,为啥还要传 ACK
为什么要四次挥手
5. IP地址与MAC地址的区别
6. HTTP请求,响应报文格式
7. 为什么要使用索引?索引这么多优点,为什么不对表中的每一个列创建一个索引呢?索引是如何提高查询速度的?说一下使用索引的注意事项?Mysql索引主要使用的两种数据结构?什么是覆盖索引?
8. 进程与线程的区别是什么?进程间的几种通信方式说一下?线程间的几种通信方式知道不?
9. 为什么要用单例模式?手写几种线程安全的单例模式?
10. 简单介绍一下bean;知道Spring的bean的作用域与生命周期吗?
11. Spring 中的事务传播行为了解吗?TransactionDefinition 接口中哪五个表示隔离级别的常量?
事务传播行为
隔离级别
12. SpringMVC 原理了解吗?
13. Spring AOP IOC 实现原理
美团进阶篇
1 消息队列MQ的套路
1.1 介绍一下消息队列MQ的应用场景/使用消息队列的好处
1)通过异步处理提高系统性能
2)降低系统耦合性
1.2 那么使用消息队列会带来什么问题?考虑过这些问题吗?
1.3 介绍一下你知道哪几种消息队列,该如何选择呢?
1.4 关于消息队列其他一些常见的问题展望
2 谈谈 InnoDB 和 MyIsam 两者的区别
2.1 两者的对比
2.2 关于两者的总结
3 聊聊 Java 中的集合吧!
3.1 Arraylist 与 LinkedList 有什么不同?(注意加上从数据结构分析的内容)
3.2 HashMap的底层实现
1)JDK1.8之前
2)JDK1.8之后
3.3 既然谈到了红黑树,你给我手绘一个出来吧,然后简单讲一下自己对于红黑树的理解
3.4 红黑树这么优秀,为何不直接使用红黑树得了?
3.5 HashMap 和 Hashtable 的区别/HashSet 和 HashMap 区别
美团终结篇
1. Object类有哪些方法?
1.1 Object类的常见方法总结
1.2 hashCode与equals
1.2.1 hashCode()介绍
1.2.2 为什么要有hashCode
1.2.3 hashCode()与equals()的相关规定
1.2.4 为什么两个对象有相同的hashcode值,它们也不一定是相等的?
1.3 ==与equals
2 ConcurrentHashMap 相关问题
2.1 ConcurrentHashMap 和 Hashtable 的区别
2.2 ConcurrentHashMap线程安全的具体实现方式/底层具体实现
JDK1.7(上面有示意图)
JDK1.8(上面有示意图)
3 谈谈 synchronized 和 ReenTrantLock 的区别
4 线程池了解吗?
4.1 为什么要用线程池?
4.2 Java 提供了哪几种线程池?他们各自的使用场景是什么?
Java 主要提供了下面4种线程池
各种线程池的适用场景介绍
4.3 创建的线程池的方式
5 Nginx
5.1 简单介绍一下Nginx
反向代理
负载均衡
动静分离
5.2 为什么要用 Nginx?
5.3 Nginx 的四个主要组成部分了解吗?
写在最后
没有回复内容