首页 > 大厂秋招面经,特意分享大家
头像
DreamCats
编辑于 2021-04-07 08:55
+ 关注

大厂秋招面经,特意分享大家

阿里

Java

  • JVM分区
  • 垃圾收集算法
  • synchronized原理
  • 双亲委派机制
  • 线程池参数
  • newFixedTheadPool底层,优缺点
  • springmvc
  • @Autowired原理
  • springboot原理
  • @OnConditionalClass实现原理
  • @OnMissingBean没有bean会怎么样,会classNotFound
  • HashMap 底层数据结构
  • HashMap 什么时候扩容?装载因子和临界值默认是多少?扩容成多大?为什么容量是2的幂次方?
  • 线程安全的Map?分段锁是如何实现的?JDK 1.8之后有哪些优化?
  • Lock和Synchronized区别
  • AQS实现
  • 锁优化
  • String StringBuilder StringBuffer区别,特点,场景
  • ConcurrentMap 源码
  • CMS
  • 线程生命周期(状态)
  • ReentrantLock与AQS同步框架
  • CAS原理是什么?
  • synchronize原理是什么?
  • springboot 和 spring 的区别是什么?
  • spring中bean的初始化过程
  • 谈一谈异常机制
  • Spring IOC和AOP
  • Arrays.sort()底层原理

场景题

  • 一个8G的服务器,堆的大小应该设置成多少
  • 海量数据求频率最多的100个
  • spring一个事务中调用另外一个事务,另一个- 事务发生异常会怎么样
  • 一个父类加载器能不能加载一个子类加载器,为什么
  • select * from A where id in (select id from B)怎么优化
  • 一个16G的内存堆分配多少,采用什么垃圾收集器,为什么用cms不用g1,为什么(面试官一直问为什么使用cms或者使用g1,回答了这两个的优缺点之后还是不满意)
  • 多线程解析一个超大文件怎么处理,如果文件切分的时候关键信息被分到了不同的解析线程中怎么办
  • hashset是如何判断两个对象相等的
  • 如何要两个对象相等equals和hashcode这两个方法要怎么重写
  • hash算法(最开始讲hash冲突算法,面试官说不是这个,我又说对hash值对质数取余,面试官也说不是这个,不知道他要我回答啥。。。)
  • 不使用任何优化,直接访问数据库,如何优化 (提示 redo、undo log的开销)(这里应该还可以答:批处理、连接池等)
  • 行锁锁的是索引,如果一个表没有主键怎么加锁?(锁表)
  • hashmap 为什么不直接用红黑树,还要用链表?
  • 红黑树的特性?各种操作的时间复杂度?最多旋转几次达到平衡?
  • finally 中 return 会发生什么?
  • 如何破坏双亲委派
  • 浏览器中用户信息和密码的安全有没有考虑过
  • 两个线程如何交替打印A和B
  • 100万个数,数据类型是int,给你8核CPU,8G内存,如何求数组的和?
  • 很多个不重复的数,假设用的数组来装,我希望你实现一个方法,每次调用这个方法给我随机返回100个不重复,记住是随机的。
  • 四个引用的具体应用场景
  • 垃圾回收器具体应用场景
  • 可达性分析算法具体应用场景
  • 垃圾回收器参数调优(给具体场景 大概就是并发低延时)
  • 高并发多连接jvm 线程池参数调优(顺着来)
  • 高并发系统调优(再顺一下)
  • 队列与栈的 应用场景
  • 点赞高并发怎么办?
  • 消息中间件用过么?怎么自己设计一个消息中间件?
  • 假设catch,final,catch中有return,那么final还会不会执行
  • 假设1亿的11位的手机号,运行空间128M,如果要进行排序,那么要怎么设计
  • jvm的设计角度,gc你怎么优化?
  • 你怎么设计md5函数?
  • cpu一直被占满,怎么排查?
  • 让你自己设计一个垃圾回收器,尽可能提高回收效率,你会怎么设计?(ZGC和香浓多,整就完事了)
  • MD5加密算法,不使用hashmap和映射,你自己来设计一个同类型的,给定字符串可以生成64位随机数的,你怎么设计
  • 利用java现有的东西,让你设计一个对象,实现类似synchronize的功能,使得多个线程不冲突,你如何设计?(ThreadLocal玩起来)
  • synchronize锁定.class和锁定一个实例有什么区别?
  • explain中的key字段的值等于ref时,有没有触发索引?
  • 如何实现单点登录,如何实现权限控制,用户密码泄露后如何保证安全性
  • spring中循环依赖如何解决?如果让你来实现你怎么做?
  • 如果我的服务器ip地址变了,客户端如何感知到呢?
  • 轮询的负载均衡的缺点是什么?如何改进?
  • 让你来实现真正的负载均衡,你如何做?(我回答记录每台服务器在最近的一段时间内接收的请求的数量,每次都把请求发送给数量最小的服务器,后来面试官提醒我还应当考虑每个请求耗费的时间)
  • 秒杀项目中静态资源CDN怎么做?
  • css文件能放到CDN上吗?
  • 秒杀缓存如何与数据库的数据保持一致性?
  • 通过广播的方式去更新每个节点的缓存,如果某个节点的缓存更新失败,那么如何排查是哪个节点呢?
  • 消费者消费失败是怎么处理的
  • 如何保证消息消费的顺序性
  • 如何保证消息不被重复消费
  • 项目中要进行分布式扩展应该怎么做
  • 缓存和mysql数据一致性如何保证
  • 微信步数排行,假设百万级用户,怎么排序,实时更新(我说排序就是海量数据排序的方式分组排序再归并,然后实时更新的话也是组内更新组内排序,但是每组的分度值可能不一样,比如0-2000可能一组,但2000-4000可能要分五组之类的,因为步数特别少和特别多的都是少数。)
  • 发生了OOM,应该怎么去分析解决?jvm调优
  • 什么时候发生线程的上下文切换?
  • CAS是硬件实现还是软件实现
  • 除了wait和notifyall,还有什么办法实现类似的功能
  • 微信抢红包设计(只讲了类似多线程抢、Semphore,缓存)、海量文件找重复次数最多的个数(分治)

MySQL

  • 索引怎么优化
  • 为什么用B+树
  • Innodb 和 Myisam 的区别
  • 聚集索引和非聚集索引 创建以后的文件大小
  • 为什么不用哈希索引?
  • 有几种事务隔离级别?
  • Innodb 行锁是如何实现的?
  • mysql怎么分页
  • 索引为什么查找快
  • 慢查询如何优化
  • mvcc原理

Redis

  • redis基本数据类型
  • redis集群?切片
  • 为什么用Redis,Redis宕机了怎么办,数据呢?怎么保持热点数据?过期机制,淘汰机制?
  • redis是单线程么?为什么快?io模型什么怎么样的,具体是怎么个流程?
  • 缓存穿透、雪崩,redis持久化机制

计网

  • tcp三次握手
  • HTTP 和RPC区别?还有呢?
  • JWT流程,安全?Session?
  • 盐有单独保存起来么
  • HTTP 和 HTTPS的区别
  • https的加密证书怎么获取
  • 加密后客户端保留的是公钥还是私钥
  • 讲一下ftp
  • cookies
  • http以及https 以及加密手段
  • 浏览器输入url后的一系列操作
  • HTTP状态码
  • 为什么用Jwt,cookie,session有什么好处?
  • TCP怎么确保可靠性的?丢包和串包怎么办?
  • DNS说一下?

操作系统

  • 上下文切换
  • 内核态用户态
  • 多路复用IO模型,select,poll,epoll

分布式

  • 怎么实现分布式锁
  • redis分布式锁有什么缺点,怎么解决
  • 单体应用和微服务区别,为什么要有微服务?好处?还有呢?
  • 微服务流程?
  • 分布式缓存?
  • 分布式session原理
  • SpringCloud及其组件你了解哪些?

算法

  • n个线程顺序循环打印0-100
  • 手写LinkedList的数据结构并写出add和remove算法
  • 微信红包算法实现
  • 链表如何找环
  • 有序链表合并
  • 共计9个苹果,有2只猴子,一个猴子每次拿2个苹果,一个猴子每次拿3个苹果,如果剩余的苹果不够猴子每次拿的数量,则2只猴子停止拿苹果,请用java多线程模拟上面的描述,要求性能尽可能高效(这个题开始是用可重入锁写的,结束之后自己本地测试发现程序不会自动结束,后来改成用AtomicInteger和cas来实现了)
  • 设计一个多线程打印程序,第i个线程只打印i-1数字,比如第1个线程打印数字0,第2个线程只打印数字1,依次类推。任意给定一个数字序列,比如3382019835830,能够使用该程序打印出来。

腾讯

算法

  • 判断树是否对称:1
  • 在一个大数组里求第100大的数字:1
  • 找出A[1000]、B[1000]、C[1000]中的重合的数字:1
  • 给出25亿个QQ号,找出其中重复的?如果不用bitmap且只有一台机器怎么做?:1
  • 你了解哪些排序?:1
  • 快排什么时候复杂度不好?:1
  • 红黑树的特点?如果给红黑树插入数据,红黑树是怎么做的?:1
  • 写一个栈:1
  • 两个特别大的数相乘:1
  • 求两个已排序数组合并后的中位数:1
  • 设计栈,使得getMin()和getMax()的时间复杂度为O(1):1
  • 一个数组中只有一个数字出现了奇数次,其他数字出现了偶数次,找到出现了奇数次的那个数:1
  • 100层楼和2个玻璃杯,怎样用最少的次数找出杯子在哪一层会碎:1
  • 哈希表是如何实现的?:1
  • 1TB的数据如何进行排序:1
  • 对100TB的数据进行排序?(拆分多个数据段进行排序,然后归并):1
  • 判断链表有环,找环入口:2
  • 100万个数找最小的10个(大顶堆):1
  • 旋转数组找出最小值:1
  • 找链表中间节点:1
  • 找链表倒数第k节点:1
  • 微信发红包 m块钱发给n个人 你怎么设计算法:1
  • 很多数中有俩数重复了咋判断:1
  • 单调栈问题:1
  • 分组反转单向链表:1
  • 非递归实现后序遍历:1
  • 把数组排成最小的数:1
  • 找第k大元素:1
  • 链表循环右移动k位置:1
  • 如何自己实现一个kv结构的,你有哪几种方式:1
  • 用hash表有什么问题,和解决了什么问题?:1
  • 用树解决了什么问题,红黑树和hash分别是有序还是无序的呢?:1
  • 为什么是有序还是无序?具体怎么实现的呢?:1

MySQl

  • mysql慢查询如何优化?:2
  • 优化器是什么时候起作用的?:1
  • MVCC的原理?:1
  • InnoDB和myISAM的区别?:2
  • InnoDB的聚集索引和MyISAM的非聚集索引的区别?:1
  • B+树、B树、红黑树的区别:2
  • 辅助索引的叶子上有什么内容?辅助索引和主键索引性能差距在哪里?:1
  • 数据库事务性质,并发一致性问题:1
  • 数据库存储过程,视图,函数的使用,几种连接方式:1
  • 索引:2
  • 事务的ACID:2
  • 数据库的join操作实际上是MySQL底层是怎么做的呢:1
  • limit a,b是什么意思,会有什么性能上的问题:1(limit之前的数据先查出来、a代表起点、b代表数量,如果a很大的话,那么MySQL需要先去遍历前a条数据而不是直接定位,所以这里存在性能问题)
  • 数据库容灾方面问题,数据库挂了怎么办:1
  • 数据库集群怎么实现数据一致性:1

java

  • 从java代码到.class文件,中间经历实现你了哪些过程?:1
  • Java数据类型,大小:1
  • instanceof和getClass:1
  • JMM:2
  • 介绍项目中的SpringIOC DI MVC AOP:1
  • JVM数据区:1
  • GC相关:1
  • OOM情况:1
  • 多态的实现:1
  • Java类的分类:1
  • 普通类,接口,抽象类的区别:1
  • Java创建线程的方式:1
  • 线程的状态:1
  • 单例模式:1
  • 类加载过程:1
  • 双亲委派模型:1
  • Java会出现内存泄露吗:1
  • 如何定位和解决OOM:1
  • Java的GC中什么场景下使用CMS和G1:1
  • hashmap:1
  • JVM参数调优:1
  • Minor GC和Full GC:1
  • 线程池:1
  • spring bean的什么周期:2
  • spring 单例的bean是否线程安全:1
  • 有状态的bean和无状态的bean区别:1
  • spring事务了解么:1
  • 如何实现HashMap取出的顺序和放入顺序一致?:1
  • HashMap的扩容的时间复杂度,如何优化?:1
  • JDK8添加了哪些特性?:1
  • java为什么说它即是解释型语言,又是编译型语言:1
  • 面向对象和面向过程的区别?:1
  • java的类和c++的类有什么区别:1
  • java语言的三大特性:1
  • 怎么拼接多个string:1
  • 讲讲异常:1
  • 深拷贝和浅拷贝:1
  • java的包装类的了解?为啥要有包装类:1
  • Java的集合:1
  • 乐观锁和悲观锁:1
  • synchronize和Lock区别:1
  • synchronized的底层是怎么实现的?:1
  • ReentrantLock的区别:1
  • ThreadLocal的原理是什么:1
  • CountdownLatch:1

redis

  • redis在你项目中怎么用的?防止重复提交是怎么做到的?:1
  • Redis五种数据类型:1
  • Hash底层:1
  • redis跳表的优势:1
  • reactor模式:1
  • redis持久化:1

计网

  • HTTP还是HTTPS请求?有什么区别?:3
  • HTTP过程的四次挥手?:2
  • TIME_WAIT的作用?:2
  • cookie的作用?:1
  • 腾讯和百度两个网页能获取对方的cookie吗?:1
  • 在百度里搜索abc的过程?:1
  • 搜索的时候,数据包是怎么交给网卡的?(7层 5层网络模型)层层封包都加的是什么内容?:1
  • 网卡怎么知道数据是发送给百度服务器的,怎么找到服务器的?:1
  • 计算机网络分层,各层的协议:1
  • http流量控制,拥塞避免如何实现:1
  • 多少种请求方式,get和post区别:1
  • Https端口443以及怎么的实现流程:1
  • Session和Cookie区别:1
  • TCP和UDP的区别:1
  • TCP三次握手:1
  • CLOSE_WAIT:1
  • DNS解析的过程:1
  • HTTP长连接和短连接:1
  • TCP拥塞控制:1
  • 了解粘包吗,怎么设置不粘包:1
  • sql注入如何防范:1
  • xss如何防范:1
  • udp的最大包长度,为什么这么大?:1
  • 傻瓜窗口了解吗?怎么解决?:1
  • socket去写的时候你会怎么写?考虑什么?:1
  • http常见头部信息有哪些:1
  • 你知道https的非对称加密和对称加密使用了哪些算法么:1

os

  • 内核态和用户态的区别?:1
  • 用户态通过什么样的接口调用内核?
  • 进程在内存中是如何分配的?(段页式及其细节、数据段、栈段、代码段):1
  • 操作系统进程同步方式:1
  • 进程怎样通信:2
  • 套接字:1
  • 线程通信机制:1
  • CPU密集型任务适合多进程还是多线程?:1
  • 进程的同步机制,你在什么时候用:1
  • 向一个进程发出kill信号接下来发生什么?:1
  • 共享内存的坏处:1
  • 操作系统中中断的分类:1
  • 操作系统页置换算法:1
  • 僵尸进程问题:1
  • 页式和段式的区别,优缺点,应用场景。:1
  • 讲一下虚拟内存、页表:1
  • 为什么顺序io比随机io快?:1
  • 随机io的过程是什么?:1
  • 用户态和内核态的区别?如何切换?:1
  • 原子操作的意义:1
  • i++为什么不是原子操作,如何去保证是原子操作?:1

分布式

  • 高并发系统大量请求如何优化:1
  • 分布式系统CAP:1
  • 秒杀系统解决超卖问题,(数据库排它锁和乐观锁CAS版本号机制):1
  • base理论:1
  • 两阶段提交:1
  • redis分布式锁的注意事项,实现过程?:1

亮点

  • Netty,NIO通信框架:1
  • BIO、NIO、AIO:1
  • NIO又可以分为三种,基于轮询、基于多路复用、基于事件回调:1
  • 如何指定使用哪种方式:1
  • 知道他底层怎么实现的吗:1
  • Netty底层Buffer的实现:1
  • 日志清理如何解决:1
  • 日志合并如何解决:1
  • reactor模式:1
  • 讲讲netty的io模型:1
  • 讲讲多路复用机制,你觉得什么时候多路复用性能会比较好?

字节

算法(好多树)

  • 每K个节点翻转链表(链表k个一旋转):2
  • 二叉搜索树转链表:1
  • 负载均衡算法:1
  • 排序算法哪些是稳定的:1
  • 二叉树求和:1
  • 序列化和反序列化二叉树:1
  • 如何判断一颗树是否是完全二叉树:1
  • 求数组的极值点:1
  • 最大连续子序列:1
  • 回文链表:1
  • 链表反转:1
  • 对称二叉树:1
  • 二叉树右视图:1
  • 移动零:1
  • 给定链表,确定中间数:1
  • 链表奇数位升序、偶数位降序:1
  • 二叉树的左视图:1
  • 一致性hash:1
  • 旋转数组的最小值:1
  • 判断两个链表是否交叉?:1
  • 三数之和:1
  • 两个链表相加:1
  • 给一个序列判断是不是二叉搜索树的后序遍历:1
  • 单词翻转
  • 二叉树层序遍历:1
  • 最长连续子串:1
  • 岛屿:1
  • 无重复字符的最长字串:1
  • 设计一个数据结构 list: rpush rpop lpush lpop index 五种方法的时间复杂度均为 O(1),数据量上限是100w(我回答使用双端队列+hashMap, 面试官说可以用两个数组实现)
  • 求集合的子集:1
  • 字符串全排列:1

Java(所有谈谈的,老哥我最喜欢了,狂吹)

  • 常见的GC回收器,越详细越好:1
  • SpringMVC的请求过程:1
  • 常见的GC回收器,越详细越好:1
  • 线程池(所有你知道的),原理尽量详细些:2
  • HashMap底层实现:1
  • concurrenthashmap:1
  • ConcurrentHashMap的扩容机制:1
  • LinkedHashMap 底层数据结构?使用场景? :1
  • Spring AOP怎么实现,围绕bean生命周期去讲:1
  • 三大特性:1
  • 谈谈多态:2
  • 接口和抽象类的区别:1
  • 谈谈集合:1
  • Arraylist和LinkedList的区别:1
  • Hashmap底层:1
  • ==跟equals的区别:1
  • 有界无界队列:1
  • 线程的创建方法:1
  • 深拷贝、浅拷贝:1
  • sychronized:1
  • GC算法:1
  • JVM内存结构:1
  • 谈谈cas:1
  • 谈谈JVM:1
  • JDK动态代理:1
  • 类加载的过程:1
  • 说说Object类,作用,有什么方法:1
  • Treeset Treemap的底层实现:1
  • volatile:1
  • 谈谈反射:1

字节问的Java没啥难度,简单的一批

计算机网络

  • https通信过程:1
  • https加密过程,怎么判断证书的有效性:1
  • tcp、udp区别
  • tcp(所有):1
  • TCP拥塞控制:1
  • TCP滑动窗口:1
  • http 头部有哪些key:1
  • http状态码有哪些:1
  • DNS服务器怎么处理域名请求的,了解原理吗:1
  • GET、POST:1
  • HTTP2.0有哪些改动:1
  • 路由器怎么工作的:1
  • 七层协议讲一下:1
  • http是否无状态?如何有状态?session和Cookies的区别:1

MySQL

  • 聚簇索引和非聚簇索引底层实现:1
  • 隔离级别:2
  • mysql在业务中怎么实现乐观锁:1(MVCC各种吹)
  • MVCC原理,和for update有什么区别:1
  • Innodb\myisam区别:1
  • 谈谈B+树前世今生以及所有:1
  • ACID:1
  • 联合索引底层结构:1
  • SQL里where having分别是做什么的,有什么区别,什么时候用:1
  • MySQL索引类别:1
  • 左连接和内连接的区别:1
  • 谈谈binlog和redolog :1

题:

  • 获取所有课程得分均大于80分的学生的平均得分:2

Redis

  • 分布式锁怎么实现,Redis加锁过程:1
  • Redis的setnx有哪些注意点,比如宕机时会发生什么:1
  • zset底层原理:(吹它的跳跃表和压缩列表):3
  • Redis中的哨兵:1
  • 谈谈Redis集群 Redis Cluster,以及主从复制原理:1
  • redis的hashmap和java的hashmap有何异同:1
  • 持久化策略:1
  • 利用redis的可重入锁如何设计:1
  • redis分布式锁是否公平锁?

操作系统

  • 进程间通信有哪些,各个优缺点:2
  • select/poll/epoll:2
  • 用户态、内核态:1
  • 信号量 同步 互斥的区别:1
  • 页面的置换算法:1
  • 进程间的同步方式用过哪些:1

linux

  • linux如何查找CPU故障

RocketMQ

  • RocketMQ有哪些组件:1

Mybatis

  • mybatis的缓存:1

项目

  • Jmeter压测的时候为什么会丢包

感觉字节基本没有Spring,可惜了,问的Java也比较基础!! 如果有中间件的话,多熟悉熟悉。 其次就是计算机网络和操作系统的知识多熟悉熟悉,最后就是大家都知道的算法!!!

以上还有各个大厂总结的面经,都在链接:https://github.com/DreamCats/Dc-Notes

更多模拟面试

全部评论

(82) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐