Github点这里

2019面经总结

网络收集的2019大厂面试总结

2019java面试分模块总结

设计模式

1、用到哪些设计模式?怎么用的

2、单例模式的不同写法

JDK

1、聊一下java的集合类

2、HashMap底层数据结构,以及解决hash碰撞的方法

3、Hashmap为什么要使用红黑树

4、集合类怎么解决高并发问题

5、队列的使用问题

6、自定义异常的应用场景

7、Object类中的方法

8、1.8的新特性

9、Java中的静态方法只有一个实例,如果想用多个实例怎么办?

10、Java面向对象的基本特征,继承、封装与多态

11、重写和重载是什么意思

12、怎样声明一个类不会被继承

13、HashMap中jdk1.7与jdk1.8的区别

14、concurrenthashMap 的底层实现原理,是如何实现线程安全的?

15、Java中的自增是线程安全的吗,如何实现线程安全的自增

16、Jdk1.8种的stream有用过吗,stream的并行操作原理,stream并行的线程池是从哪里来的

17、Jdk1.8的completableFuture有用过吗?

18、Java种的代理有几种实现方式

JVM

1、jvm内存模型,以及这些空间的存放内容

2、堆内存划分的空间,如何回收这些内存对象,有哪些回收算法

3、jvm调优,如何解决线上gc问题

4、class初始化过程

5、内存溢出的原因,如何排查线上问题

6、jvm有哪些垃圾回收器,

7、类加载模型

8、JVM为什么要增加元空间?

9、堆G1垃圾收集器有了解么,有什么特点

多线程

1、多线程之间是如何通信的

2、synchronized底层实现,和lock的区别

3、synchronized关键字加在静态方法和实例方法的区别

4、countdownlatch的用法

5、线程池

​ (1)Executor提供了几种线程池

​ (2)线程池的参数

​ (3)拒绝策略

​ (4)任务放置的顺序过程

​ (5)任务结束后会不会回收线程

​ (6)未使用的线程池中的线程放在哪里

​ (7)线程池线程存在哪

​ (8)cache线程池会不会销毁核心线程

6、Java多线程的几种状态及线程各个状态之间是如何切换的

7、Java中的wait和sleep的区别与联系

8、如何在方法栈中进行数据传递?

9、ThreadLocal的底层实现形式及实现的数据结构?

10、Sychornized是否是公平锁

11、Sychronized和ReentryLock的区别

12、服务器CPU数量及线程池数量的关系

mysql

1、Mysql的索引类型,底层索引数据结构,叶子节点存储的是什么,索引失效的原因

2、如何优化sql,查询计划的结果中看哪些些关键数据

3、innodb和myisam的区别

4、mysql默认隔离级别,

5、mysql的乐观锁和悲观锁,锁的种类

6、如何用sql实现乐观锁和悲观锁

7、mysql如何分库分表

8、MySQL为什么选择B+树作为它的存储结构,为什么不选择Hash、二叉、红黑树

9、Mysql数据库的事务与锁的理解

10、数据库临时表有没有用过,是怎么用的?

11、多数据源情况下如何进行事物的管理

12、Union和union all有什么区别

13、dateTime和timestamp有什么区别

14、mysql主从模式的实现

15、如何解析sql语句;即explain关键字的使用

16、Mysql的主从同步原理,mysql主从复制主要有几种模式

Spring

1、spring的底层代码,

2、bean的生命周期

3、循环引用问题,以及spring中用到的设计模式

4、spring和springBoot的区别

5、spring的AOP的底层实现原理

6、spring的事务是如何回滚的

7、Spring 是如何解决循环依赖的问题的?

8、Spring IOC的理解,原理与实现

9、Bean Factory与FactoryBean有什么区别?@Bean这个注解时如何实现Bean的注入的?

Mybatis

1、hibernate的区别

2、mybatis的缓存,都缓存些什么,session缓存存在哪

3、mybatis的执行流程,需要了解源码

4、mybatis如何防止sql注入

redis

1、redis的数据结构类型,一般都用在什么场景下

2、sortedSet的底层数据结构

3、利用redis实现分布式锁

4、redis使用单线程的好处

5、redis中如何控制多线程并发

6、redis删除key的策略

7、redis的主动缓存,被动缓存

8、如何保证数据一致性问题

9、集群环境下如何处理,解释一下一致性哈希

10、解释一下缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题

11、排行榜功能的实现:使用redis的zset;zset的底层数据结构是什么样的;除了redis的zset还有什么其他的数据结构可以实现这个功能

12、Redis集群种类:主从模式、cluster模式及其应用

13、Redis种数据类型及应用场景

zookeeper

1、zookeeper如何保证可用性?

2、Zookeeper的原理

3、什么情况下会使用zookeeper,zookeeper如何监听生成的节点,zk内部是如何实现的

4、Zookeeper0、zookeeper1、zookeeper2,三个节点的集群描述一下从zk启动,到zk对外提供服务的整个过程

5、有一个key,往zk写入,到写入成功它的大体过程是什么样的

6、Zookeeper监听器的原理

MQ

1、mq的结构图

2、如何保证消费者是否消费

3、ack返回的种类

4、请求过程服务宕机如何处理

5、什么场景下会使用MQ;MQ的优势与劣势,什么时候不能用MQ

springboot

1、springboot启动过程中做了哪些事情?

2、Springboot 启动类上的注解 @spring boot Application说明?

3、Springboot如何判断当前应用是否时web应用?

4、Spring boot整合jsp的流程,需要注意哪些点

SpringCloud

1、SpringCloud和dubbo的区别

2、项目中用到了哪些组件

3、eureka的原理,如何保证高可用性,和Zookeeper有什么区别

4、feign如何调用的

5、处理生产环境上配置生效问题

6、hystrix的降级策略有哪些

7、Springcloud eureka是如何注册服务、如何监测心跳的,它注册的流程是怎么样的

8、在分布式环境中如何快速发现某一台服务有问题

9、分布式集群系统对外提供接口的时候如何验证对方的身份

10、Eureka和zookeeper作为注册中心有什么区别

Linux服务器

1、Linux如何查看应用占用内存情况

2、Linux脚本编写会么

架构设计

1、如何做一个秒杀系统

2、如何实现高可用、高并发、高吞吐的技术方案

3、A给B发请求,B执行往数据库insert的操作;设计一个架构,保证能够提供最大的并发量

其他小知识点

1、Nginx如何做限流?令牌桶算法与漏桶算法

2、Tomcat调优

3、为什么使用RPC框架,什么时候会使用http请求

4、tomcat启动原理

5、Http协议

6、epoll模型

7、如何实现调用远程服务的接口

阿里淘系面经

一面:

1、聊之前的项目经验,详细描述

2、Java知识体系中整体的集合框架

3、为什么hashmap在jdk8的时候要进行树化(泊松分布)

4、hashmap线程安全的方式(concurrenthashmap源码层次)

5、锁的分类

乐观锁、悲观锁、自旋锁、读写锁、排他锁、共享锁、分段锁的各种机制及实现方式

6、spring IOC的底层实现

XML、dom4j、工厂、单例

7、mysql索引的分类及实现机制

二面

1、介绍项目

2、线程池的创建方式、分类、应用场景、拒绝策略的场景

3、spring AOP的底层实现

动态代理、newProxyInstance、cglib、SAM

4、代理模式

静态代理、动态代理

5、详细介绍自己的设计模式

三面

1、千万级数据量的list找一个数据(抢红包案例)

四面

1、详细项目介绍

2、JVM内存管理

栈上分配->TLAB->新声代、老年代->可达性分析->GC算法->所有垃圾回收器及其优缺点和特点
那到底多大的对象会被直接扔到老年代
G1两个region不是连续的,而且之间还有可达的引用,我现在要回收其中一个,另一个会被怎么处理
CMS的并发预处理和并发可中断预处理

五面

1、百万级int数据量的一个array求和(fork/join)

六面

1、参加面试的是硕士,所以问了科研项目

七面

1、聊人生

百度面经

1、synchrnoized和reentrantlock的底层实现及重入的底层原理

2、锁的四种状态及升级过程

3、CMS和G1的异同

4、G1什么时候引发Full GC?

5、除了CAS,原子类,syn,Lock还有什么线程安全的方式

6、HashMap和Hashtable的异同

7、允许null键的map你知道哪些

HashMap,LinkedHashMap,WeakHashMap

8、为什么hashmap扩容的时候是两倍

9、红黑树的插入时间复杂度

10、解决hash冲突的方式

11、现在有1T的数据,但是只有1G内存,如何进行排序

12、Tomcat为什么要重写类加载器

13、tcp握手挥手过程及其状态转换

14、mysql隔离级别

15、B树和B+树的区别

16、你知道哪些设计模式,它们在JDK源码中是怎么体现的

17、Java运行时数据区

18、常见的垃圾回收算法有哪些

19、吞吐量优先和响应时间优先的回收器是哪些

20、类加载全过程

21、线程池7个参数

22、CAS的ABA问题怎么解决

23、Java内存模型

24、什么叫做阻塞队列的有界和无界

25、说明session和cookie的区别

26、说一下反射,反射会影响性能吗

27、说一些AQS

28、JUC包里的同步组件主要实现了AQS的哪些主要方法

2019菜鸟快递面经

阿里一面

1、java内存模型分为了几块区域?元空间里有些啥?

2、对象存在java内存的那块区域里面

3、string类的用法,string a="Hello" string a = new string("hello")创建的流程

4、NIO知道么? nio底层调用了啥?啥是非阻塞IO?

5、jdk hashmap 底层存储?红黑树的特点,为啥不用数组用红黑树?

6、数据库用过么?用的啥数据库,mysql用的啥引擎?为啥数据库底层用B+树不用红黑树?

7、多线程,AtomicInteger底层用的啥?cas的原理,AtomicInteger用了Voliate么?voliate的原理,变量加Voliate被修改了其他线程能立刻知道么?

8、HBase底层数据存储的结构,HRegion如何分裂?

9、UnSafe类知道么?

阿里二面

1、聊项目

2、由项目聊到高并发,C3P0数据库的优点,不加机器,单体应用怎么优化性能?

3、校园经历

4、一道设计模式的编码题

写代码实现以下业务场景:
“小明和小张去中介找房子,小明要3室2厅的房子但租金不要超过6000,小李的要求是租金不超过1500的都能接受。中介说没问题,你们留个电话,有房子我通知你们”
考察点:
1、面向对象建模
2、观察者或者Callback模式
3、策略模式

阿里三面

1、个人介绍

2、最难忘的项目

3、JVM加载类的过程,JVM的ClassLoading有几种,怎么改变ClassLoading的加载顺序?

4、如何解决Jar包冲突

5、继承的原理

6、对技术那方面感兴趣

7、如何学习一门新技术

2019滴滴面经

一面:

1、自我介绍

2、讲下快速排序,经典快排存在的问题

3、1000万个取其中最大的100个数

3、1 MapReduce的设计思想,但是有内排序的问题

3、2堆排序,堆排序的过程

4、树的中序遍历实现

​ 4.1递归

​ 4.2借助栈

5、介绍下osi7层模型

6、arp协议缓存的过程

7、TCP的控制位

8、TCP的状态

9、TCP建连的状态

10、TCP的头部信息

11、jvm监控系统是通过jmx做的么?再改进中,用的jdk自带的工具

12、java内存结构

13、jvm的栈跟线程关系

14、是每个线程都会创建一个栈还是共用一个栈?

15、介绍volatile的功能

16、总线锁的副作用

17、内存屏障的汇编指令是啥?

18、你有看过什么源码嘛?AQS

19、介绍一下AQS

20、扯到了CAS的原理

21、AQS怎么阻塞当前线程

22、locksupport的park在jvm怎么实现的?

23、你了解垃圾回收吗?

24、垃圾回收器让工作线程停顿下来是怎么做的?

25、GC ROOts对象有几种?

26、gc roots怎么判断一个对象没有被引用?

二面:

1、介绍项目

2、spark用的多吗?

3、在java开发平时做了哪些项目

4、看过源码吗?

5、介绍下ConcurrentHashMap

6、介绍下CAS

7、介绍下volatile

8、手写生产者和消费者

9、mysql的索引失效和优化问题

10、mysql的索引结构

11、回表操作分析

13、介绍下左连接、右连接、全连接查询

14、redis的应用场景

15、redis是单线程还是多线程

16、redis存在线程安全的问题吗?为什么

17、spring aop怎么使用及其原理

18、怎么实现远程rpc?

19、es的应用场景

20、服务被别人攻击,不断刷新页面,怎么解决这个问题

2019京东面经

1、总体说一下集合框架

2、你怎么看待接口和抽象类

3、索引的分类

4、主键索引的设计应该采用B-tree索引还是hash索引

5、设计模式

6、谈一谈DDD面向领域编程

7、说一下hibernate一级缓存和二级缓存

8、说一下你了解的MQ

9、谈一谈你对高并发的理解,你会从什么角度设计高并发程序

10、JUC包里的限流该怎么做到

11、索引不适用的条件

12、说一下NIO和AIO

13、AIO里用到什么设计模式

14、说一下select,poll,epoll

15、谈一下TCP的拥塞控制

16、你知道什么是as-if-serial语义吗,它和happen-before语义有什么区别

17、Executors创建线程池的方式

18、CachedThreadPool里面用的什么阻塞队列

19、那你知道LinkedTransferQueue吗,和SynchronousQueue有什么区别

20、你还知道什么阻塞队列,能具体说说它们的特点吗

21、线程池的线程数怎么设置比较好

22、你知道新出的LongAdder吗,和AtomicLong有什么区别

23、那你知道LongAccumulator吗

2019京东面经

一面:

1、zookeeper在项目中的使用及原理

2、SpringCloud的组件介绍

3、redis相关:

  • redis分布式锁的实现方式

  • redis为什么要使用setnx?set和setnx有什么区别?

  • setNx:系统在10:05 设置一个值,并给出5分钟的过期时间,系统刚刚set完之后redis集群崩溃,10:11分系统重启成功,那么redis中set的值是否还存在?

  • 刚刚set完数据之后,能否被持久化到快照或者binlog中

  • 假设redis被持久化,且系统重启事件超过了redis设置的过期时间,那么key是否会被清理?

4、zookeeper的实现方式

5、多线程的实现方式

1、继承thread类
2、实现runnable接口
3、实现callable接口
4、线程池可以进行创建,说明每个参数之间的逻辑关系

6、服务器CPU数量及线程池数量的关系

7、mysql调优

1、性能监控
2、schema与数据类型优化
3、执行计划
4、通过索引进行优化
5、查询优化
6、分区表
7、服务器参数设置
8、mysql集群方式的优化
详细细节可以参考mysql调优的视频

8、如何做一个秒杀系统?

9、对自己技术的认知程度

二面:

1、mysql是集群还是单节点?最大的表的数据量多大?

   在公司的环境中,一般都是集群的环境,单表的最大规模是没有上限的,但是考虑到查询性能的优化,一般在几千万左右,超过之后会大程度的影响性能

2、mysql主从同步机制的原理?主要有几种模式?

3、redis持久化的方式?在哪个版本允许分布式使用?

rdb
aof

4、nginx的使用场景

请求转发
负载均衡
反向代理

5、spark的应用场景

6、js闭包

闭包就是能够读取其他函数内部变量的函数

7、离职原因

2019美团面经

1、ConcurrentHashMap底层原理

2、手写一个LRU页面置换算法

3、HashMap底层数据结构

4、为什么用红黑树不用普通的AVL树

5、为什么在8的时候链表变成树

6、为什么在6的时候从树退回链表

7、线程池7个参数,该怎么配置最好

8、说一下volatile

9、volatile的可见性和禁止指令重排序怎么实现的

10、CAS是什么

11、PriorityQueue底层是什么,初始容量是多少,扩容方式呢

12、HashMap的容量为什么要设置为2的次幂

13、你知道跳表吗,什么场景会用到

14、CopyOnWriteArrayList知道吗,迭代器支持fail-fast吗

15、innodb的底层数据结构

16、为什么用B+树不用B树

17、为什么用B+树不用红黑树

18、coding:无序数组怎么寻找第k大的数,写一个二叉树层次遍历

19、不知道大小的数据流取其中100个数,怎样的取法能最随机

20、n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小

21、假设百度每个页面能放100个网页,每个页面都有一个评分,怎样快速找到第8页的所有网页

2019顺丰面经

1、线程池的设计里体现了什么设计模式

2、说说你了解什么设计模式,知道责任链设计模式吗

3、wait/notify体现了什么设计模式

4、线程池7个参数

5、谈一下spring事务传播

6、谈一下IOC底层原理

7、怎么判断内存泄漏

8、怎么在日志里排查错误,该用哪些Linux命令

9、mysql原子性和持久性怎么保证

10、怎么解决幻读

11、innodb和myisam区别

12、索引分类

13、对象的创建过程

14、对象在内存中的存储布局

15、对象头具体包括什么

16、对象怎么定位

17、堆的划分

18、对象怎么分配

19、具体讲一下CMS流程

20、锁的四种状态

21、Object obj = new Object()这句话在内存里占用了多少内存

22、synchronized和reentrantLock的异同

posted @ 2020-11-29 11:53  crud628  阅读(113)  评论(0)    收藏  举报