2021 互联网大厂面经最新分享:百度 / 阿里 / 蚂蚁(附答案解析)
百度(三面)
百度一面(现场)
自我介绍
Java 中的多态
为什么要同时重写 hashcode 和 equals
Hashmap 的原理
Hashmap 如何变线程安全,每种方式的优缺点
垃圾回收机制
Jvm 的参数你知道的说一下
设计模式了解的说一下
手撕一个单例模式
算法题目
手撕算法:反转单链表
手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图
手写 java 多线程
手写 java 的 soeket 编程,服务端和客户端
手撕算法:爬楼梯,写出状态转移方程
智力题:时针分针什么时候重合
百度二面(现场)
自我介绍
项目介绍
服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免 DDOS 攻击请求打到少数机器?
TCP 连接中的三次握手和四次挥手,四次挥手的最后一个 ack 的作用是什么,为什么要 time wait,为什么是 2msl?
数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决?
Linux 查看 cpu 占用率高的进程
手撕算法:给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。
然后继续在这个问题上扩展
求出最短那条的路径
递归求出所有的路径
设计模式讲一下熟悉的
会不会滥用设计模式?
多线程条件变量为什么要在 while 体里?
你遇到什么挫折,怎么应对和处理?
百度三面(现场)
自我介绍
项目介绍
Redis 的特点
Redis 的持久化怎么做,aof 和 rdb,有什么区别,有什么优缺点?
Redis 使用哨兵部署会有什么问题?【我说需要扩容的话还是得集群部署。】
说一下 JVM 内存模型把,有哪些区,分别干什么的?
说一下 gc 算法,分代回收说下
MySQL 的引擎讲一下,有什么区别,使用场景呢?
分布式事务了解么?
反爬虫的机制,有哪些方式?
阿里中间件(四面)
Java 中间件一面
技术一面考察范围:
重点问了 Java 线程锁:synchronized 和 ReentrantLock 相关的底层实现
线程池的底层实现以及常见的参数
数据结构基本都问了一遍,链表、队列等
Java 内存模型:常问的 JVM 分代模型,以及 JDK1.8 后的区别,最后还问了 JVM 相关的调优参数
分布式锁的实现比较
技术一面题目:
1:自我介绍
2:擅长哪方面的技术?
3;java 有哪些锁中类?(乐观锁 &悲观锁、可重入锁 &Synchronize 等)
4:比较重要的数据结构,如链表,队列,栈的基本原理及大致实现
5:J.U.C 下的常见类的使用。Threadpool 的深入考察;blockingQueue 的使用
6:Java 内存分代模型,GC 算法,JVM 常见的启动参数;CMS 算法的过程
7:Volatile 关键字有什么用(包括底层原理)?
8:线程池的调优策略
9:Spring cloud 的服务注册与发现是怎么设计的?
10:分布式系统的全局 id 如何实现
11:分布式锁的方案,redis 和 zookeeper 那个好,如果是集群部署,高并发情况下那个性能更好?
Java 中间件二面
技术二面考察范围:
问了项目相关的技术实现细节
数据库相关:索引、索引底层实现、mysql 相关的行锁、表锁等
redis 相关:架构设计、数据一致性问题
容器:容器的设计原理等
技术二面题目:
参与的项目,选一个,技术难度在哪里?
Collections.sort 底层排序方式
负载均衡的原理
设计模式与重构,谈谈你对重构的理解
谈谈 redis 相关的集群有哪些成熟方案?
再谈谈一致 hash 算法(redis)
数据库索引,B+树的特性和建树过程
Mysql 相关的行锁,表锁、乐观锁、悲观锁
谈谈多线程和并发工具的使用
谈谈 redis 的架构和组件
Redis 的数据一致性问题(分布式多节点环境 &单机环境)
Docker 容器
Java 中间件三面
技术三面考察范围:
主要谈到了高并发的实现方案
以及中间件:redis、rocketmq、kafka 等的架构设计思路
最后问了平时怎么提升技术的
技术三面题目:
高并发情况下,系统是如何支撑大量的请求的?
接着上面的问题,延伸到了中间件,kafka、redis、rocketmq、mycat 等设计思路和适用场景等
最近上过哪些技术网站?最近再看哪些书?
工作和生活中遇见最大的挑战,怎么去克服?
未来有怎样的打算
Java 中间件四面
最后,你懂的,主要就是 HR 走流程了,主要问了未来的职业规划。
蚂蚁中间件团队面试题
蚂蚁中间件一面
自我介绍
JVM 垃圾回收算法和垃圾回收器有哪些,最新的 JDK 采用什么算法?
新生代和老年代的回收机制
讲一下 ArrayList 和 linkedlist 的区别,ArrayList 与 HashMap 的扩容方式
Concurrenthashmap1.8 后的改动
Java 中的多线程,以及线程池的增长策略和拒绝策略了解么?
Tomcat 的类加载器了解么?
Spring 的 ioc 和 aop,Springmvc 的基本架构,请求流程
HTTP 协议与 Tcp 有什么区别,http1.0 和 2.0 的区别?
Java 的网络编程,讲讲 NIO 的实现方式,与 BIO 的区别,以及介绍常用的 NIO 框架
索引什么时候会失效变成全表扫描?
介绍下分布式的 paxos 和 raft 算法
蚂蚁中间件二面
你在项目中怎么用到并发的?
消息队列的使用场景,谈谈 Kafka
你说了解分布式服务,那么你怎么理解分布式服务?
Dubbo 和 Spring Clound 的区别,以及使用场景
讲一下 docker 的实现原理,以及与 JVM 的区别
MongoDB、Redis 和 Memcached 的应用场景,各自优势
MongoDB 有事务吗?
Redis 说一下 sorted set 底层原理
讲讲 Netty 为什么并发高,相关的核心组件有哪些?
蚂蚁中间件三面
完整的画一个分布式集群部署图,从负载均衡到后端数据库集群
分布式锁的方案,Redis 和 Zookeeper 哪个好,如果是集群部署,高并发情况下哪个性能更好?
分布式系统的全局 id 如何实现?
数据库万级变成亿级,你如何来解决?
常见的服务器雪崩是由什么引起的,如何来防范?
异地容灾怎么实现?
常用的高并发技术解决方案有哪些,以及对应的解决步骤?
面试答案
这份面试文件涵盖了 Java 开发 1 至 5 年的面试常见技术问题,整体分为当季最新系列、大厂面试真题系列、技术系统分类系列三部分。(纯文字文本占内存 46.97MB)
需要的朋友,帮小编转发一下文章,添加小助理 vx:mxzFAFAFA 即可!!
2020 年最新面试题
大厂面试真题
系统技术分类系列
JVM、MySQL、Mybatis、MongoDB、Redis、Spring、Spring boot、Spring cloud、Kafka、RabbitMQ、Nginx......
以上所有的面试资料均可免费领取,需要的朋友,添加小助理 vx:mxzFAFAFA 即可!!
版权声明: 本文为 InfoQ 作者【比伯】的原创文章。
原文链接:【http://xie.infoq.cn/article/0c825c7a9e1a0227526aa10d3】。文章转载请联系作者。
评论