共计 15213 个字符,预计需要花费 39 分钟才能阅读完成。
此面经合集次要来源于网络(牛客网、博客网站等),集体按公司进行分类整理。
阿里
面经 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,分层编译,逃逸剖析
7.es 的写入,查问过程,底层实现,为什么这么设计
8.es 集群,脑裂问题,怎么产生的,如何解决
9.while(true)外面始终 new thread().start()会有什么问题
10.socket 理解么,tcp 和 udp 的实现区别
11. 设计一个秒杀零碎能接受千万级并发,如果 redis 也扛不住了怎么办
12. 我的项目介绍
四面
1. 讲讲你最相熟的技术,jvm,mysql,redis,具体哪方面
2.new Object[100]对象大小,它的一个对象援用大小,对象头构造
3.mysql 主从复制,主从延时怎么解决
4. 怎么保障 redis 和 mysql 的一致性,redis 网络起因执行超时了会执行胜利么,那不胜利怎么保证数据一致性
5.redis 长久化过程,aof 长久化会呈现阻塞么,个别什么状况下应用 rdb/aof
6. 线上有遇到大流量的状况么,产生了什么问题,为什么数据库 2000qps 就撑不住了,有想过起因么,你们过后怎么解决的
7. 限流怎么做,如果让你设计一个限流零碎,怎么实现
8.dubbo 和 spring cloud 区别,具体区别,别离什么场景应用
9. 给了几个场景解决分布式事务问题
五面
1. 怎么了解用户态,内核态,为什么要分级别,有几种转换的形式,怎么转换的,转换失败怎么办
2. 怎么了解异样,它的作用是什么,你们工作中是怎么应用的
3. 你们用 redis 么,用来做什么,什么场景应用的,遇到过什么问题,怎么解决的
4.jvm 元空间内存构造,永恒代有什么问题
5. 你平时开发中怎么解决问题,如果当初线上有一个告警,你的解决思路,过程
6. 你们为什么要用 mq,遇到过什么问题么,怎么就解决的
腾讯
面经 1
一面
我的项目:
你为啥用 redis 做缓存
你本人测的他的并发量有多少 -5000
有没有思考怎么优化
10 万申请进来会面临什么问题?
数据量多的话,销峰 - 令牌桶
令牌桶在哪实现 -nginx
数据结构:
二叉排序树和均衡二叉树的区别
100 万数据里找反复数据 -set
set 怎么实现 -hashmap
还能够怎么做 -hashmap 分文件再 set
这相当于两次 hash,有啥长处
计网:
三次握手都做了什么?
报文里有啥
校验和怎么实现?
网络呈现拥塞怎么办 - 拥塞机制
怎么判断是否产生拥塞
门限值指的是什么 - 包的个数还是包的数据量
面经 2
校招,云平台
自我介绍
TOP K 问题
理解 Nginx,那设计一个具体的负载平衡策略计划
理解 MySQL 主从复制,那本人设计一个主从复制计划
写代码,实现 BlockingQueue
面经 3
两年教训,社招
一面
1、mysql 索引构造?
2、redis 长久化策略?
(1)RDB:快照模式是间接把内存中的数据保留到一个 dump 的文件中,定时保留,保留策略。当 Redis 须要做长久化时,Redis 会 fork 一个子过程,子过程将数据写到磁盘上一个长期 RDB 文件中。当子过程实现写临时文件后,将原来的 RDB 替换掉。
(2)AOF:把所有的对 Redis 的服务器进行批改的命令都存到一个文件里,命令的汇合。应用 AOF 做长久化,每一个写命令都通过 write 函数追加到 appendonly.aof 中。aof 的默认策略是每秒钟 fsync 一次,在这种配置下,就算产生故障停机,也最多失落一秒钟的数据。毛病是对于雷同的数据集来说,AOF 的文件体积通常要大于 RDB 文件的体积。依据所应用的 fsync 策略,AOF 的速度可能会慢于 RDB。Redis 默认是快照 RDB 的长久化形式。
3、zookeeper 节点类型说一下;
4、zookeeper 选举机制?
5、zookeeper 主节点故障,如何从新选举?
6、syn 机制?
7、线程池的外围参数;
8、threadlocal 的实现,原理,业务用来做什么?
9、spring DI 的原理;
10、四次挥手;
11、gc root 抉择;
12、标记革除算法的过程,标记分明算法如何给对象分配内存空间?
13、cms 算法的毛病;
二面
1、CorruntHashmap 了解
2、ThreadLocal 原理
3、hashmap;
4、Java 数据类型,同步机制;
5、讲讲贪婪算法;
6、如果线上用户呈现 502 谬误你怎么排查?
7、并发量很大,服务器宕机。你会怎么做?
三面
1、syn 和 lock 的区别,哪个更好?怎么抉择?
2、hashmap 源码,为什么 8 个节点变成红黑树又为什么到了 6 个节点才复原为链表?
3、缓存穿透,怎么解决?
4、负载平衡算法,实现;
5、轮询和随机的毛病;
6、分布式服务治理;
7、dns 迭代和递归的区别;
8、算法题:最长回文串
9、为什么连贯的时候是三次握手,敞开的时候却是四次握手?
因为当 Server 端收到 Client 端的 SYN 连贯申请报文后,能够间接发送 SYN+ACK 报文。其中 ACK 报文是用来应答的,SYN 报文是用来同步的。然而敞开连贯时,当 Server 端收到 FIN 报文时,很可能并不会立刻敞开 SOCKET,所以只能先回复一个 ACK 报文,通知 Client 端,” 你发的 FIN 报文我收到了 ”。只有等到我 Server 端所有的报文都发送完了,我能力发送 FIN 报文,因而不能一起发送。故须要四步握手。
面经 4
一年社招
1. 自我介绍 就背景进行一些发问
2. 简略说说计算机网络
3. 简略形容一下从浏览器输出一个地址到服务端整个交互过程
4. 说说数据结构
5. 操作系统用过吗
6. 用过 linux 的哪些命令
7. 查看一个过程监听了哪些端口
8. 具体介绍我的项目(简历上的域名拜访不了)
9. 解说之前工作经验中做的货色
10. 做一道算法题(判断二叉树是否对称)
11.java 如何从源代码转换成机器码执行的
12.java 的击穿
13. 网络的七层构造
14.tcp\udp 详解 区别
15.https 协定的交互过程
16.linux 根底命令
17.linux 开机过程
18. 理解当初市面上支流的 cpu 架构
19.fpga 概念理解吗
20. 市面上的图数据库
21.rdf 解说
22. 图数据库底层存储
23.b 树,b+ 树的概念和区别
24. 红黑树均衡二叉树优缺点和利用场景
25. 有没有理解 docker 等云技术
字节跳动
面经 1
1. 自我介绍
2. 业务局部:
- 2.1 堆和栈的区别
- 2.2 调用一个函数在堆中的过程
- 2.3 密码学 中间人攻打、RSA、DSA 明码的差异、加密过程,私钥加密公钥加密,数字签名的过程(跟自己网络空间平安背景无关)
- 2.4 键入一个 URL
2.5 彩虹表、kerberos、ECC(椭圆曲线加密)
3. 算法题:
1. 一个无序数组,求其 topK
2. 时段统计。动静布局。
面经 2
一年教训,Java 开发
- 自我介绍;
- 我的项目介绍;
- 手撕算法:NC95 最长间断子序列
- 手撕算法:NC91 最长递增子序列
- 线程和过程的区别?怎么创立线程?有哪些状态?有什么区别?
- Java1.8 理解哪些新个性?重点讲讲 HashMap 和 CurrentHashMap。
- OSI 七层协定和 TCP/IP 五层协定有什么区别?TCP/UDP 在哪一层?对 TCP 理解多少?
面经 3
字节电商后端
算法题
- 求从一个树的右边的叶子节点到一个树左边的叶子节点的最短门路)
- 最长回文子串
- 给定一个数 N,求(1-n)所有的可能子序列。比方给个 1 返回 1 给个 2 返回 1,2,1 2
过程和线程区别
为什么过程切换开销比线程切换开销大?
你晓得逻辑地址和物理地址么?
sql 题(表 T(id,name,salary,city)用 SQL 实现找到同时合乎城市平均工资大于 5000,单人工资大于 10000 的人的名字)
wifi 属于 OSI 哪一层
三次握手四次挥手相干(细节,以及为什么三次,为什么四次)
hashmap 的底层原理
红黑树和二叉搜寻树,二叉树之间的区别
为什么 hashmap 不间接用红黑树
面经 4
一面:
1.IM 零碎用户登录怎么实现的?
2. 登录状态是怎么保留的?session 是怎么获取的?sessionid 是怎么辨认的?整个流程是什么样的?有没有思考分布式 session?
3.Redis 的数据类型
4.Redis 数据类型的底层数据结构
5. 三次握手、四次挥手
6.Redis 长久化机制
7.MySQL 的 InnoDB 索引数据结构
8. 哪些 SQL 的关键字会让索引生效
9. 队列、栈、数组、链表
10. 算法题:leetcode 92 题
二面:
1. 讲讲爬虫的形成
2. 爬虫抓到的数据不荡涤吗?不去重吗?
3. 对爬虫有什么更多的理解吗?
4.Linux 过程间通信机制
5. 过程和线程的区别
6. 线程公有的数据有哪些?(不是 Java 线程)
7. 讲一下堆排序,每次调整的工夫复杂度?堆排序是稳固的吗?
8. 哈希表的原理,怎么减小哈希表的抵触,怎么保障哈希表的并行读写
9.Kafka 用过吗?说说 Kafka 的原理?怎么保障 Kafka 的高可用?Kafka 怎么保障音讯有序?
10. 我的项目里的 set 实现点赞,zset 实现关注,为什么?
11.zset 底层实现?说一下跳表?节点的高度是多少?怎么决定节点的高度?
12.https 理解吗?
13. 中间人攻打晓得吗?怎么做 https 的抓包?https 怎么篡改?
14. 虚拟地址到物理地址的映射过程
15. 算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)
三面:
1. 介绍一下做过的我的项目,哪些挑战性比拟大,比拟有难度的
2.IM 我的项目怎么用 Netty 的,为什么要用 Netty,长连贯交互是怎么的
3. 音讯怎么存储,怎么发送,怎么晓得音讯已读和未读的
4. 读了 5 条音讯、又来 5 条音讯,你是怎么去更新的,你的音讯是幂等的吗?
5. 我的项目里怎么用 ES 的,ES 怎么反对搜寻的
6. 技术论坛网站的评论是怎么存储的
7. 查问评论是在 DB 里扫表查问吗?怎么展现所有的评论?性能如何?想要查问更快能够做哪些优化?
8. 联合缓存和 DB 的时候会呈现哪些问题?要怎么解决?
9. 快排理解吗?介绍一下快排?工夫复杂度是多少?为什么会进化成 O(n^2)?单链表能够做快排吗?快排最外围的逻辑是什么?写一下单链表快排
面经 5
一面
1、自我介绍
2、我的项目
3、volatile 原理和作用
4、什么是指令重排序,举个例子
5、AQS 原理
6、JVM 内存模型
7、类加载过程
8、双亲委派机制
9、介绍代理模式
10、redis 数据结构
11、HTTP 状态码,header
12、MVCC 原理
13、算法:股票问题
二面
- 我的项目为啥立项,你做了什么模块
- 你的日志模块是怎么设计的,怎么开发的
- 你的 token 怎么做的,怎么保障惟一
- 你开发的业务模块怎么设计数据表的,具体用了哪些中间件
- mysql 中 inoodb 的索引有哪些品种
- B+ 树索引具体是怎么实现的
- B 树与 B + 树的区别
- 为什么 B + 树的两头节点不贮存数据?
- 给一个索引,在有的查问过程中他没有走索引查问,说说你能想到的起因
- 红黑树理解过么?
- 用过 redis 么?
- 聊一下你对 git 的了解
- git rebase 与 git merge 的区别
- 聊一下你对工作流的了解
手撕算法:
给四个整数,判断是否只通过四则运算加()优先级是否运算出 24
面经 7
一面:
1、自我介绍
2、JAVA SDK 起到的作用
3、我的项目
4、数据流(我的项目)
5、排序(介绍下你晓得的排序和复杂度)
6、Arrays.sort 底层的排序算法(有三种策略)
7、堆排序基本思路
8、linux,操作系统的开机流程
9、过程和线程的区别
10、过程切换会产生什么
11、过程调度算法有哪些
12、TCP、udp 区别
13、java 锁,关键字区别
14、偏心锁、非偏心锁解释一下
二面:
1. 算法题:由前序遍历中序遍历重建子树;
2. 为什么动态类中不能应用非动态类(从类加载过程答复);
3.java 类加载过程;
3.1. 加载阶段中,为什么要有自定义的类加载器;
3.2. 双亲委派准则的机制;
4.HashMap 数据结构;
4.1. 为什么小于 6 是链表,大于 8 变成红黑树;
4.2.HashMap 扩容机制;
4.3.HashMap 是否线程平安,例子;
4.4.ConcurrentHashMap 和 HashTable 的区别;
4.5.ConcurrentHashMap 如何保障高效,为什么是线程平安,为什么比 HashTable 优良,分段锁机制;
4.6.CAS 能保障线程平安吗(我答复能,面试官说不能。。预计想考 ABA 问题),volatile 关键字能保障线程平安吗;
5. 随机数求根,比方根号二的值。(二分查问)
6. 有 n 个筐,筐固定,每个筐内有不同数目的苹果,挪动苹果,使每个筐苹果均匀(挪动的代价:1~2 算 1 步,1~3 算 2 步)使步数最小;
三面:
1、自我介绍
2、解决什么问题,做了些什么?(我的项目)
3、多个接口,有失败怎么办(我的项目)
4、redis 分布式锁怎么实现
5、工夫过期怎么办
6、ArrayList 怎么扩容,工夫复杂度 O(n)?插尾部 O(1),均匀是多少,答案 O(2) 须要思考扩容。
7、HashMap 底层原理
8、mysql 索引什么原理、B+ 树
9、mysql 和 redis 区别(讲一下各自优缺点)
10、为什么不必 redis 存数据?
11、算法:LRU 缓存(),先讲一下再写
面经 8
抖音电商
1. 自我介绍
2. 讲一下 HashMap 的 put 办法
3. 讲一下 HashMap 的扩容过程
4. 讲一下你自定义协定怎么解决粘包问题的?
5. 算法题:LeetCode 二叉树根节点到子节点的门路和
6.mysql 的索引构造
7. 为什么用 B + 树呢?
8.having 的作用
9. 聚簇索引、非聚簇索引
10. 聚簇索引比非聚簇索引的长处
11.mysql 的四个隔离级别,利用场景
12. 如何在可反复读隔离级别解决幻读问题
13.dubbo 的负载平衡策略
14.java 的动静代理
15.Spring 哪里用到了动静代理?
16.CGlib 动静代理说一下
17.MQ 如何保障音讯不会失落
面经 9
一面
怎么了解微服务
微服务的毛病
微服务之间怎么做负载平衡
Oauth2 根本流程、原理
登录模块是怎么做的
cookie 和 session 的区别
购物车为什么用 Redis 存,是永恒存储吗
为什么购物车多读多写
Redis 怎么革除过期 key,有哪些策略
lru 是怎么的过程
Redis 字典底层怎么实现的
hashtable 是怎么实现的
ziplist 怎么实现的
一般的哈希表怎么实现的
哈希表怎么扩容
应用 MQ 的益处
MQ 解耦和微服务解耦的区别
算法:最长回文子串
https 建设连贯的过程(SSL/TLS 协商的过程)
对称加密和非对称加密的优缺点
为什么要辨别内核态和用户态
什么时候从用户态切换到内核态
你编程的状况下,零碎调用什么时候会产生
2 面
手写单例模式
volatile 什么作用
多线程的几种实现形式
四种形式的区别
锁用过哪些
排它锁什么意思
自旋锁什么意思
CAS 相干
MySQL 能够不指定主键建表吗,背地的逻辑是什么
聚簇索引和其余索引有什么区别
建惟一索引,插入数据时是怎么解决的
反复插入会报错,是怎么解决的
不同事物隔离级别的实现
lc40 组合总和 II
3 面
有在实习吗
面试通过后能够实习吗
做我的项目的过程中遇到过什么问题
内存泄露具体产生在哪
什么状况下会呈现多线程拜访
缓存穿透,怎么解决
缓存雪崩,怎么解决
缓存与数据库数据一致性
超卖问题怎么解决的
集群环境下,Redis 内存里的数据怎么保障统一
算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个齐全由字符数组组成的子串,字符程序无所谓(滑动窗口)
面经 10
我的项目介绍;(问的比拟深,包含权限校验、SQL 优化、索引相干)
手写 SQL:获取一个商铺最近一周每一天的销售总量。
如何判断是否命中索引?如何优化索引?
线程有哪些状态?阻塞状态又分为哪些,有什么区别?
手撕算法:NC90 蕴含 min 函数的栈
手撕算法:寻找二叉树每层结点的最大值
简述上述两个算法的思路和工夫空间复杂度。
优化上述两个算法,要求别离在 O(1)和 O(N)工夫复杂度内解决上述问题。
百度
面经 1
shiro 的组件
分布式一致性算法
zookeeper 那些能参加投票,leader 能投票吗?
netty 零拷贝实现
volatile,如何感知到变量变动的
redis 高可用
http 如何跨域?
tcp 如何长链接。
http 如何操作浏览器缓存。
用过音讯队列吗?
怎么本人扩大 validator(参数校验那个)
jwt 组成 header payload 签名加密算法那些。
rsa 如何使用到 jwt 中
synchronized 和 volatile 的区别
什么是上下文切换,URL 解析过程
http 有那些办法,get 那些
过程和线程的区别。
和他人合作呈现抵触怎么办
如何学一个新语言
怎么自学的
面经 2
一面
自我介绍
说说 IO 多路复用
你刚刚说的多路复用针对的是各个申请(比方 set,get),那返回值 Redis 是怎么解决的(愣住)
MySQL B+ 树个别几层,怎么算的
数据库隔离级别
脏读、不可反复读、幻读(联合具体场景来讲)
MySQL 隔离级别别离怎么实现的
MVCC
redo log、undo log
刷脏页的流程
算法题:平方根
二面
自我介绍
我的项目是本人练手的我的项目吗,怎么找的
我的项目是从 0 开始搭建的,还是有用开源的脚手架
秒杀大略用到哪些货色,怎么实现的
MQ 幂等性和音讯积压问题
缓存与数据库数据一致性
惟一 ID
Java 里怎么保障多个线程的互斥性
一个线程有哪些状态
AQS 怎么了解的
Spring IOC 容器创立 Bean 的流程
创立的 Bean 是单例还是多例的
SpringCloud config 是怎么在 Bean 创立后更新 Bean 的值的
SpringBoot 主动配置原理
SpringMVC 执行流程
应用 Spring 和间接应用 Java 语言面向对象开发,有哪些益处
怎么了解面向对象
理解哪些设计模式
策略模式形容一下
JVM 由哪些模块组成
框架里突破双亲委派机制的 SPI 大略怎么实现的
那说说双亲委派
垃圾回收次要回收哪些区域
怎么辨认哪些是垃圾
哪些是根节点
什么时候会呈现 Full GC
不同垃圾收集器的区别
TCP 为什么要握三次手,为什么要挥四次手,大略什么流程
实现环形队列(数组,减少和删除性能)
反转链表(迭代)
三面
业余是偏差硬件吗
对百度理解多少
有什么兴趣爱好
常常打球吗
喜爱听什么音乐
常常听音乐吗,什么时候开始喜爱听音乐的
你说两个具体的歌名我听听
平时是怎么的一个人,有什么特点
有做过什么有成就感的事吗
前面抉择百度的概率有多少
想过本人 5 年后、10 年后是怎么的吗
面经 3
1. 面试官介绍本人,而后自我介绍
2.java 中的线程池有哪些?为什么应用线程池? 你在哪里应用过或是见过?
3.Mysql 底层是怎么实现的? 从内存布局,磁盘布局说起?
4.Mysql 有哪些索引?B 树和 B + 树的区别,别离解决了什么问题?
5.try catch finally 机制解说一下?
6. 为什么要应用 SpringBoot 做开发? 与传统的开发有什么不一样的?
7. 什么是微服务? 微服务是如何实现服务的注册与发现的?
8.java 中的汇合分类有哪些? 晓得 Queue 吗? 她上面有哪些实现类? 重点说说 HashMap?
9. 在汇合中哪些汇合类是线程平安的?
10. 什么是数字签名,作用是什么? 应用的是什么算法?
11. 常见的网络攻击有哪些?
12. 在表单提交的时候,容易发动什么样的攻打?
13. 在进行服务调用的时候如何进行身份验证,如何避免网络攻击?
14. 你见过哪些平安框架? 具体怎么应用的?(shiro)
15. 两道算法题:1) 一般的二分查找,问了其中的一些细节, 二分查找存在的问题? 2)判断 S1 中是不是有 S2 的排列,找到返回 true,否则返回 false
16.Cookie 和 session 的应用场景,他们之间的关系?
17.String,StringBuilder,StringBuffer 的区别,String 的两种初始化的区别?
18. 说说本人做过的 java 我的项目? 应用了哪些框架?
19. 说说本人教研室的我的项目,你在其中表演的角色,解决了什么问题?
面经 4
spring 事务
反射原理
lock 底层实现
线程池理论利用及如何设计参数
数据库事务隔离级别
动静代理两种实现形式
hashmap 底层数据结构
concurrentHashMap 如何保障线程平安
双亲委派准则
算法:两个栈实现队列、链表找环的入口
京东
面经 1
kafka 在利用场景以及 我的项目 里的实现
bitmap 底层
object 里有哪些办法
hashmap 相干
sychronized 和 reentrantlock 相干问题以及锁降级
cas 和 volatile
线程几种状态以及转化
jvm 内存模型
mybatis 相干问题
Redis 数据结构,问了下跳表的底层
RDB 和 AOF
MySQL 索引有哪些
b+ 树底层实现
最左前缀原理
面经 2
一面
1、线程的状态
2、cms
3、增量更新法
4、GcRoots 是哪些
5、java 根底
6、mysql 索引
7、我的项目具体实现
二面
1、怼我的项目
2、springcloud 作用
3、为什么用 springboot
4、Nacos 原理,如何保障 nacos 和服务实例产生网络分区服务失落问题
5、为什么须要同步锁
hr
1、自我介绍
2、集体劣势
3、有无实习
面经 3
1. 索引
2. 谈谈多线程
3.jvm 如何调优
4.mq 在我的项目中的用法
5. 遇到的多线程问题,如何解决
6. 算法:
6.1 最长无反复字串
6.2 找到 A^2+B^2 = C
面经 4
我的项目
说一下我的项目难点以及如何解决
Java 根底
线程的几种状态,以及状态的转换
阻塞状态和期待状态的区别
怎么实现线程平安
锁怎么实现线程平安
synchronized 可重入吗,为什么须要可重入
乐观锁和乐观锁
怎么判断 JVM 里是否呈现死锁
如何预防线程死锁
MySQL
为什么数据库索引用 B + 树,而不必 list、map、二叉树或红黑树
计组
二进制有原码,为什么还要有反码和补码
场景题
一个数组,能够一直地增加元素,而不呈现数组下标越界异样。怎么实现?
有 A、B 两个大文件,每个文件几十 G,而内存只有 4G,其中 A 文件寄存学号 + 姓名,而 B 文件寄存学号 + 分数,要求生成文件 C,寄存姓名和分数。怎么实现?
面经 5
一面
1、三次握手
2、四次挥手,每一次挥手之后客户端和服务器的状态,为什么 TIME_WAIT 是 2 倍最大报文存活工夫
3、NIO 和 BIO 的区别,select 和 epoll 的底层原理
4、同步和异步的区别,异步底层的实现原理
5、Bean 的生命周期
6、BeanDefinitionReader 是怎么读取 XML 中的配置的
7、Bean 实例的创立有哪几种形式
8、AOP 的了解,代理形式,代理底层怎么实现的
9、SpringMVC 的流程,View 输入的是什么,HandlerAdapter 的作用是什么,JSP 懂不,servlet 懂不
10、线程池,回绝策略,工作执行流程,worker 线程治理
11、synchronized 和 Lock 的区别,sync 在 jvm 里怎么实现的,偏心和非偏心的区别,抢占是怎么体现的,是队列里的线程去抢占锁吗,AQS 解释一下
12、数据库的事务并发有哪几种,隔离级别有哪几种,还有哪种形式能够解决幻读
13、MVCC
二面 7.27
1、我的项目中遇到什么艰难
2、粘包半包问题怎么解决
3、你的自定义协定怎么解决的
4、讲讲 reactor
5、编解码在 reactor 的哪一步
6、超时重传和疾速重传
7、给定一个数组,找呈现频率最高的前 m 个数,讲下思路
面经 6
数据库乐观锁、乐观锁
为啥用 Redis
sql 语句执行程序
SpringMVC 长处,原理
aop 长处,原理
ioc 长处,原理
面向对象概念
封装
我的项目中封装如何体现
高内聚,低耦合啥意思,如何去设计
设计一个电梯场景,实现面向对象,高内聚,低耦合的状况
统计学校内共享单车数量,你有啥想法(凋谢题)
shopee
面经 1
音讯队列如何保障可靠性
音讯队列如何保障音讯幂等性
音讯队列的优缺点
为什么用 b + 树
汇集索引和主键区别,其余引擎怎么做的
平时数据库编码
explain 参数
http 报文参数有哪些吗?
做题,链表奇偶有序输入
面经 2
- 自我介绍
- 有哪些排序算法?
- 介绍下快排 / 堆排 / 归并排序。
- 数据库中的索引应该如何设计?
- 有哪些索引生效的状况?
- 你们用到的 HTTP 接口用到了什么提交形式?
- GET/POST 的区别?
- 除了 GET/POST 还有哪些?
- 面向对象的根本准则?再具体说下依赖倒转。
- 介绍下策略模式和观察者模式?
- 如何保障用户申请的等幂性?等幂性指的是用户可能连点提交三次领取申请,返回同样的后果(领取胜利),但理论后盾只执行一次,放弃一致性。
- 介绍下 TCP 四次挥手?
- 第四次挥手后客户端是立即就敞开了吗?是什么状态?
- 两个大文件,别离每行都存一个 url,查找两个文件中反复的 url。
- 一个大文件中,每一行有一个整数,怎么找第 100 大的数?
- 一个大文件中,每一行有一个整数,怎么找中位数?
- redis 的根本数据结构?
- zset 是怎么实现的?有哪些命令?
- 算法题 力扣 221. 最大正方形
面经 3
自我介绍、我的项目介绍,问了数据量
理解微服务吗?(有没有本人在做我的项目时进行调研,理解企业目前罕用的工具、办法)
理解 springcloud 吗?
一台机器无奈满足运载需要,怎么办呢?答:多搞几台机器,问:多台机器如何协同工作?
开始瞎答:mapreduce
解释一下 mapreduce
如果有一个很大的文件,TB 级别,文件里是乱序的数字,如何排序?mapreduce 如何实现?
排序过程中的归并排序,请形容一下其过程?工夫复杂度
过程、线程区别,问应用 Java 时,外面多线程的概念和 os 里的线程过程的区别是什么?真正应用时,Java 里的线程和过程是如何调度?
多线程的同步互斥的办法?答了信号量,问具体怎么实现,答 pv 操作,给了具体的场景,问变量如何初始化(等同于口述代码)
有哪些索引?(mysql 为例)
b 树、b+ 树是什么样的树结构,查问复杂度?是均衡二叉树吗?
应用过 redis 吗?具体做什么?
手撕代码:LRU 算法;正反序层序遍历二叉树
网易
面经 1
Java 根底:容器、反射、范型
Q3:说一说 Java 有哪些容器;
Q4:List 和 Set 的区别?不可反复是什么意思?
Q5:HashMap 是线程平安的吗?如果想用线程平安的 HashMap 怎么做?
Q6:如果让你设计一个线程平安的 HashMap 怎么做?
Q7:Java 反射理解吗?什么场景下应用反射?
Q8:晓得什么是范型吗?编码:写一个范型类
JVM
Q9:说一说 Java 的垃圾回收(从确认垃圾算法和回收垃圾算法说)
Q10:你刚刚说的都是垃圾回收相干算法,那具体回收的垃圾回收器晓得吗?
设计模式
Q10:编码:写一个单例模式
Q11:单例模式有很多,你这个属于哪一办法实现?还有哪些办法?
Q12:Spring 外面的 bean 也有单例,那这个单例和 Spring 外面的 bean 单例是一个吗?
数据结构与算法
Q13:有哪些排序算法?他们的性能怎么?
Q14:编码:写一个快排(没写进去,耽搁了 10 多分钟??)
Q15:晓得二叉树吗?二叉树的个性有哪些?(这个没 get 到咋答复,应该是满足肯定条件的二叉树子节点和父节点的关系,节点数量和深度之类的关系吧)
Q15:给了一个二叉树,写出前序,中序,后序遍历形式
面经 2
网易云音乐
我的项目延申;(较浅)
晓得哪些优化网络的办法?(延申到 MySQL 主从同步、TCP 传输机制、Redis 缓存等);
晓得哪些确保线程平安的办法?(延申到 AQS、ThreadLocal、Synchronized、锁降级等);
晓得 SSM 和 SpringBoot 的区别吗?如何搭建我的项目?如何迁徙两者我的项目?
晓得 Spring 中的 IOC 和 AOP 吗?底层是如何实现的?在我的项目中哪些地方体现?
JVM 内存构造和 Java 反射机制体现在 Spring 中哪些方面?
手撕代码:(归并 + 二分)在保障一个数组平安的状况下使其有序,并且找到目标值又或者最靠近目标值的数。
根底乐理理解多少?制作一首音乐的流程有哪些?如何利用大数据预测下一首爆火歌曲(乐理 + 代码层面)?
滴滴
面经 1
我的项目相干(我的项目的架构、我的项目中的重难点)
算法题糊脸:最长回文子串
理解 MySQL 的数据结构吗,B+ 树
聚簇索引、非聚簇索引
什么状况下会回表
脏读、幻读、不可反复读
MySQL 事务隔离级别怎么实现的(锁机制 +MVCC),怎么解决的幻读(间隙锁、next key)
Redis 中 zset 的数据结构(数据结构由编码决定,zset 有两种编码,对应的数据结构别离是压缩列表 | 跳表 + 字典)
如何解决哈希抵触(拉链法、凋谢定址法、再哈希法)
三次握手、四次挥手(越具体越好,说了具体的过程、状态变换、第一次握手占不占序列号、不携带数据的 ack 占不占序列号等等)
面经 2
我的项目相干(模块划分,我的项目需要,技术计划,数据库设计,表的构造及关系,负责角色)
http 协定的关键字段,比方 request 和 response 头部信息有哪些关键字段,有什么含意
http 状态码:100,200,502,504
http 和 https 的区别,https 是为了解决什么问题
三次握手、四次挥手(具体过程 + 状态变动)
呈现大量的 close_wait 可能是什么起因,解决方案,通过什么工具看进去网络有问题等等
Java 中常见的汇合有哪些,List、Set、Map 初始容量加载因子理解吗
Java 中线程通信的形式有哪些,大略的原理
MySQL 如果遇到性能不好的问题,比如说慢查问,怎么做
数据库优化计划(索引 | 分库分表)
有哪些索引,数据结构,建设索引的准则
分库分表的准则,说说场景(程度 | 垂直、热数据 | 冷数据 blabla)
算法题:两数之和
华为
面经 1
7.22 一面
从白板实现一个双向链表,并且写出增删改查
从白板实现一个二叉树,并且补充遍历办法
聊我的项目
7.26 二面
聊我的项目,0 八股文
次要从你感觉的难点,以及考查一些对我的项目的了解水平
题目:给定一个字符串 s,你能够通过在字符串后面增加字符将其转换为回文串。找到并返回能够用这种形式转换的最短回文串
7.30 三面
业务主管面
聊研究生的事件,学了什么课,本人感觉劣势在哪,当前想在哪倒退
有赞
面经 1
1、汇合八股文(list 接口下的、map 接口下的)
2、map 中提到了 concurrentHashMap,说到了 synchronized,所以让我说一说 lock 锁和 synchronized 的区别
3、线程池的七个参数
4、线程池工作提交流程、线程池的工作执行流程。
5、mysql 的事务隔离级别,以及解决的问题
6、mvcc 的实现原理
整顿不易,如果感觉对你有帮忙,能够点个赞激励一下!
我是程序员大彬,专一 Java 后端硬核常识分享,欢送大家关注~