最新Java后端面经合集 | 阿里腾讯百度字节

最新Java后端面经合集 | 阿里腾讯百度字节

最新Java后端面经合集 | 阿里腾讯百度字节_第1张图片

java领域

阿里

面经1

1.简单介绍项目

2.知道哪些数据结构以及他们的特点

3.链表增删快,那如何提高其查询效率,有没有什么想法?

4.B+树了解吗?B+树如何范围查询?B+树退化的极端情况是什么?

5.跳表了解吗?

6.大顶堆、小顶堆了解吗?

7.实现长地址请求到服务端,然后服务端重定向短地址给客户端,如何实现长短地址的互相映射?

8.那我现在有10份数据,有1000个线程来争抢,你要怎么处理?

9.分布式是什么?为什么要分布式?分布式又会有哪些问题?分布式系统是如何实现事物的?

10.Redis集群了解吗?如何处理宕机的情况?Redis的同步策略?

11.LRU算法了解吗?你会如何实现它?这个算法可以应用在哪些场景下?

12.TCP为什么是三次握手?两次行不行?多次行不行?

13.TCP的安全性是如何实现的?两台服务器之间可以同时建立多条TCP链接吗?怎么实现的?

14.客服端输入一个网址后,是如何拿到客服想要的数据的,是怎样在网络中传输的?

15.cookie和session

16.java有哪些锁?共享锁是什么?CAS?乐观锁和悲观锁?synchronied的底层原理?锁升级?死锁怎么形成的?如何破解死锁?

面经2

校招

1、Java容器:List,Set,Map

2、Map的遍历方式

3、HashMap扩容为什么是扩为两倍?

4、Java线程同步机制(信号量,闭锁,栅栏)

5、对volatile的理解:常用于状态标记

6、八种基本数据类型的大小以及他们的封装类(顺带了解自动拆箱与装箱)

7、线程阻塞几种情况?如何自己实现阻塞队列?

8、Java垃圾回收

可达性分析->引用级别->二次标记(finalize方法)->垃圾收集 算法(4个)->回收策略(3个)->垃圾收集器(GMS、G1)。

9、java内存模型

10、TCP/IP的理解

11、进程和线程的区别

12、http状态码含义

13、ThreadLocal(线程本地变量),如何实现一个本地缓存

14、JVM内存区哪里会出现溢出?

15、双亲委派模型的理解,怎样将两个全路径相同的类加载到内存中?

16、CMS收集器和G1收集器

17、TCP流量控制和拥塞控制

18、服务器处理一个http请求的过程

19、例举几个Mysql优化手段

20、数据库死锁定义,怎样避免死锁

21、spring的aop是什么?如何实现的

22、面向对象的设计原则

23、策略模式的实现

24、操作系统的内存管理的页面淘汰 算法 ,介绍下LRU(最近最少使用算法 )

25、B+树的特点与优势

面经3

校招

自我介绍,说简历里没有的东西

说几个你最近在看的技术(MySQL,多线程)

口述了一个统计数据的场景题

如果这个统计数据场景不用MySQL,而是用Java来实现,怎么做

如果数据量过大,内存放不下呢

用面向对象的思想解决上面提出的问题,创建出父类,子类,方法,说一下思路

下一个场景,口述了一个登录场景,同学用线程池做登录校验,会有什么问题

如何解决这些问题

你给出的方案弊端在哪里,还有哪些方案

面经4

校招

谈谈类加载机制。

hashmap和concurenthashmap

16g机器,让你分配jvm内存怎么分配。

机器慢了怎么排查。

谈谈consul和zookeeper,还有服务发现机制。

详细说明raft协议。

谈谈consul和zookeeper区别。

服务注册的时候发现没有注册成功会是什么原因。

讲讲你认为的rpc和service mesh之间的关系。

面经5

两年经验,社招

一面

1.synchronized原理,怎么保证可重入性,可见性,抛异常怎么办,和lock锁的区别,2个线程同时访问synchronized的静态方法,2个线程同时访问一个synchronized静态方法和非静态方法,分别怎么进行

2.volatile作用,原理,怎么保证可见性的,内存屏障

3.你了解那些锁,乐观锁和悲观锁,为什么读要加锁,乐观锁为什么适合读场景,写场景不行么,会有什么问题,cas原理

4.什么情况下产生死锁,怎么排查,怎么解决

5.一致性hash原理,解决什么问题,数据倾斜,为什么是2的32次方,20次方可以么

6.redis缓存穿透,布隆过滤器,怎么使用,有什么问题,怎么解决这个问题

7.redis分布式锁,过期时间怎么定的,如果一个业务执行时间比较长,锁过期了怎么办,怎么保证释放锁的一个原子性,你们redis是集群的么,讲讲redlock算法

8.mysql事务,acid,实现原理,脏读,脏写,隔离级别,实现原理,mvcc,幻读,间隙锁原理,什么情况下会使用间隙锁,锁失效怎么办,其他锁了解么,行锁,表锁

9.mysql索引左前缀原理,怎么优化,哪些字段适合建索引,索引有什么优缺点

10.线上遇到过慢查询么,怎么定位,优化的,explain,using filesort表示什么意思,产生原因,怎么解决

11.怎么理解幂等性,有遇到过实际场景么,怎么解决的,为什么用redis,redis过期了或者数据没了怎么办

二面

1.hashmap原理,put和get,为什么是8转红黑树,红黑树节点添加过程,什么时候扩容,为什么是0.75,扩容步骤,为什么分高低位,1.7到1.8有什么优化,hash算法做了哪些优化,头插法有什么问题,为什么线程不安全

2.arraylist原理,为什么数组加transient,add和get时间复杂度,扩容原理,和linkedlist区别,原理,分别在什么场景下使用,为什么

3.了解哪些并发工具类

4.reentrantlock的实现原理,加锁和释放锁的一个过程,aqs,公平和非公平,可重入,可中断怎么实现的

5.concurrenthashmap原理,put,get,size,扩容,怎么保证线程安全的,1.7和1.8的区别,为什么用synchronized,分段锁有什么问题,hash算法做了哪些优化

6.threadlocal用过么,什么场景下使用的,原理,hash冲突怎么办,扩容实现,会有线程安全问题么,内存泄漏产生原因,怎么解决

7.垃圾收集算法,各有什么优缺点,gc roots有哪些,什么情况下会发生full gc

8.了解哪些设计模式,工厂,策略,装饰者,桥接模式讲讲,单例模式会有什么问题

9.对spring aop的理解,解决什么问题,实现原理,jdk动态代理,cglib区别,优缺点,怎么实现方法的调用的

10.mysql中有一个索引(a,b,c),有一条sql,where a = 1 and b > 1 and c =1;可以用到索引么,为什么没用到,B+树的结构,为什么不用红黑树,B树,一千万的数据大概多少次io

11.mysql聚簇索引,覆盖索引,底层结构,主键索引,没有主键怎么办,会自己生成主键为什么还要自定义主键,自动生成的主键有什么问题

12.redis线程模型,单线程有什么优缺点,为什么单线程能保证高性能,什么情况下会出现阻塞,怎么解决

13.kafka是怎么保证高可用性的,讲讲它的设计架构,为什么读写都在主分区,这样有什么优缺点

14.了解DDD么

三面

1.线程有哪些状态,等待状态怎么产生,死锁状态的变化过程,中止状态,interrupt()方法

2.你怎么理解线程安全,哪些场景会产生线程安全问题,有什么解决办法

3.mysql多事务执行会产生哪些问题,怎么解决这些问题

4.分库分表做过么,怎么做到不停机扩容,双写数据丢失怎么办,跨库事务怎么解决

5.你们用的redis集群么,扩容的过程,各个节点间怎么通信的

6.对象一定分配在堆上么,JIT,分层编译,逃逸分

你可能感兴趣的:(java,百度,开发语言,面试,经验分享)