【求职】今日头条Java 方向面经
今日头条
Java 方向面经
第一篇
**一面 2020/3/23 **
1、自我介绍
2、JVM 区域,GC 垃圾回收器,GC 为什么不发生在栈里,线程池,volatile 特点(可见性
怎么保证的,可见性示例代码),CAS
3、写单例模式,懒汉式,DCL
4、数据库事务的隔离级别,什么是丢失更新,脏读,不可重复读,幻读
5、http 和 https 的区别
6、一些网络和数据库相关的问题
7、算法:二叉树层序遍历
**二面 2020/3/26 **
1、自我介绍
2、项目
3、用 Java 实现过什么
4、用过 ping 吗
5、volatile 有什么特点,说一下它的特点什么情况下必须用
6、CAS 为什么能保证原子性
7、Lock 的 Condition 是干嘛的
8、ReentrantLock 知道吗,synchronized 什么情况下比 ReentrantLock 效率高
9、知道什么 OOM
10、算法:输入 List,删除当中形如”1_”的,返回原来的 List
一个无序数组,从小到大找到第一个缺的数,比如[8 2 4 3 6 9 7 11 12],第一个缺的就是 5
场景题:一个硬币,正面概率 0、7,反面概率 0、3,现在有一瓶水,怎么掷能让两个人公
平的喝到水
第二篇
**一面 2020/3/14 **
1、tcp time_wait 和 close_wait 区别以及产生原因,过多的话处理方法?
2、进程&线程概念与区别
3、任务调度算法及简单介绍
4、https 概念
5、三次握手,四次挥手
6、项目相关的优化方案
7、重建二叉树?
**二面 2020/3/14 **
1、数据库的锁
2、索引方面
3、为啥索引用 b+树,比较其他数据结构,他的优点是啥
4、查询语句走不走索引
5、sql 语句执行慢的可能原因
6、redis 基本数据结构
7、手撕代码:类似 leetcode112 及其延伸
8、项目相关
第三篇
**一面 2019/11/12 **
1、二叉树最长路径(代码)
2、爬虫生成的 8G 的 URL 文件,只有 1G 的内存,如何查找出重复的 URL
3、MySQL 的隔离级别
4、讲讲可重复读隔离级别
5、流量控制和拥塞控制
6、三次握手和四次挥手
7、讲讲你理解的分布式系统
8、分布式锁 redis 和 zookeeper 实现区别,使用场景
9、索引底层实现结构
10、B+树的好处
11、B+树和 B 树的区别
**二面 2019/11/12 **
1、讲讲你所理解的 Java 面向对象
2、讲一下 GC
3、讲一下 Java 的数据结构
4、讲一下 ConcurrentHashmap
5、将 www、toutiao、com 反转成 com、toutiao、www(代码)
6、洗牌算法(代码)
7、项目相关,压测情况,如何继续优化
第四篇
**一面 2020/3/31 **
1、看过 Spring 的源码吗
2、Class、forName()和 ClassLoader、loaderClass()有什么区别
3、ConcurrentHashMap 的原理,为什么是线程安全的,让你设计怎么实现读写安全
4、Mysql 中有哪些索引,你能想到哪些作为索引的数据结构
5、Spring 事务传播机制的应用
6、线程安全的单例模式
7、正向代理和反向代理
8、http 是有状态的吗,tcp 呢,为什么 http 是无状态的
9、RPC 和微服务框架了解吗
10、代码题
**二面 2020/3/31 **
1、先聊了聊项目
2、JVM
3、OOM 问题和 StackOverflow 有什么区别
4、好像问了些网络方面的知识
5、思考题,64 匹马,8 个赛道,最少比多少场可以找出最快的 4 匹马?
6、代码题
第五篇
**一面 2020/4/1 **
1、一上来问了项目
3、进程线程的区别
4、锁相关,死锁,检测预防之类的
5、数据库相关,底层引擎
6、有什么想问的?你怎么想到字节实习的?
7、算法
**二面 2020/4/1 **
1、自我介绍开场
2、B 树和 B+树的各自特点?区别?
3、了解线程并发?锁?
4、讲讲你的项目?
5、讲讲学习过程,问你学校在成都,为什么会选择北京的岗位?
6、算法题
线程并发交替输出 A,B
hashmap 的 set 和 get 的带锁实现
第六题
**一面 2020/3/13 **
1、自我介绍
2、算法题一:无序数组的中位数(快排思想 O(N)时间复杂度)
3、算法题二:给一数组,让你找一对满足 i<j && a[i]<a[j]的 i 和 j (O(N)时间复杂度 O(1)
空间复杂度)
4、算法题三:给一数组,让你找一对满足 i<j<k && a[i]<a[j]<a[k]的 i 和 j 和 k(O(N)时间
复杂度 O(N)空间复杂度)
5、三次握手过程
6、为什么是 3 次,而不是 2 次或 4 次?
7、介绍下 TCP
8、TCP 是如何确保传输安全的?
9、TCP 和 UDP 的区别
10、介绍下 hashmap
11、数据库有了解吗,介绍下数据库的索引以及作用
12、数据库的存储引擎,介绍一下,以及其数据结构
13、然后问了和 C++相关的操作系统问题
**二面 2020/3/13 **
1、自我介绍
2、算法题:( 和 )可以匹配,给你一个字符串,问你有多少合法的括号
3、然后问了线程和进程
4、TCP 和 UDP 区别
5、然后是一个情景设计题 :
设计一个城市的顺丰快递系统,这个是边讨论边回答,大概 30 分钟
6、数据库的事务比特职读会
7、事务的特点
8、同步和互斥,锁
9、输入一个 URL,发生的过程
第七篇
**一面 2020/3/26 **
1、用面向对象的思想,编写一个栈数据结构,要求实现 push() pop() size()三个方法,存
储的对象类型要支持多种类型
2、c++/c/python/Java 的区别,运行机制(区别)
ArrayList stringList = new ArrayList<>(); ArrayList intList =
new ArrayList<>();
stringList、getClass() == intList、getClass()?true or false,为什么?
3、Object 类有哪些方法
4、http 与 socket 的区别
5、tcp 三次握手,四次挥手
6、说一说 finalize()
7、说一说线程池
8、用面向对象思想写个生产者消费者
9、交换机和路由器的区别
10、中断
**二面 2020/2/10 **
1、java 基础,集合(Array Linked 比较、扩容、HashMap)、线程安全
2、synchronized 修饰静态方法和普通方法,以及 lock 进行判断,哪些方法在一起是线程
安全的
3、设计模拟,写一个榨汁机类能扎多种果汁
4、抽象类与接口怎么选择
5、重载重写,给了一个示例,判断能不能正确继承方法
6、线程池,ThreadLocal
7、http,get,post,结构
8、断点续传,怎么设计
9、代码:链表删除重复元素
第八篇
**一面 2020/3/31 **
1、自我介绍
2、介绍第一个项目
3、项目的目的,项目的整体架构,负责模块的简单介绍
4、x 实现
5、算法题:
给定两个数组,求两个数组的交集,且重复多少次,就打印几次
比如:[1,2,2,3,5,7]和[1,1,2,2,2,2,3,3,5,7,8],结果[1,2,2,3,5,7]
6、JVM 内存结构?
7、OOM 的场景?堆和栈的一些区别?
8、HashMap 的扩容机制?存储的方式?hash 后码相同时怎么处理?
9、线程池是什么?怎么用?有什么好处?线程池的核心参数?
10、数据库的索引结构?B+树的结构?与 B 树的区别?
11、Redis 了解过吗?Redis 的数据结构?缓存击穿是什么?怎么解决?
12、事务的隔离机制?四种事务隔离级别的分别是什么意思,有什么区别?事务隔离机制里
用了 AOP,是如何用的?
13、Linux 的 top 指令可以查看什么信息?top 中的 load 指的是什么?网络相关的指令用
过哪些?查端口号用哪一个?
14、乐观锁和悲观锁?在数据库里怎么实现一个乐观锁?乐观锁在数据库中的实现形式?
15、TCP 的滑动窗口机制?
16、Jenkins 自动化部署的流程?
17、有什么问题要问?
**二面 2020/3/31 **
1、自我介绍
2、项目的需求背景,以及项目的架构,项目的实现细节
3、数据库的第三范式
4、有没有对自己开发的模块做过压测?如果让你去做压测,你会如何去做?
5、如果数据规模增大几个数量级,可以有什么优化?
6、联合索引的使用,减少回表次数
7、Redis 缓存
8、如何去设计缓存
9、redis 中常用的数据结构?缓存击穿和缓存穿透
10、开源的 DevOps 平台用过吗,CICD 平台?
11、算法题:拿糖问题
给一个数组{1,3,5,7,8,10},每个位置上数字代表每个位上有几个糖
不能拿相邻的糖,最终怎么拿最多的糖
12、volatile 关键字的功能
13、Linux 的 buffer 内存和 cache 内存
14、虚拟内存、常驻内存、共享内存
15、路由器,交换机工作在哪一层?
16、ConnectTimeOut ReadTimeout 异常的区别?Unknown host 是什么原因导致的?
17、浏览器输入 www、xxx、com 最终展现网页,整个过程
18、观察者模式
19、说一下 zookeeper 和 ES
20、对发展方向有什么想法
21、你有什么想问的?
第九篇
**一面 2020/3/25 **
1、自我介绍
2、项目
3、Redis 持久化方式
4、Java 中集合和数组的区别
5、HashMap 和 TreeMap 区别
6、Java 内存区域
7、执行 String str = "hello"后各个部分的内存分布
8、输入一个网址到得到页面经历的过程
9、为什么 tcp 建立连接需要三次握手
10、OSI 网络模型
11、tcp 和 udp 的区别
12、tcp 如何保障可靠传输
13、平时用的到关于数据库的功能
14、sql 优化
15、数据库中的 drop delete truncate 区别
16、sql:学生(名称,课程,成绩)查询各科前十名的成绩
17、算法:对数组表示的整数进行加一( [9,9,9] —> [1,0,0,0] )
**二面 2020/3/25 **
1、自我介绍
2、项目
3、Redis 数据结构,zset 的底层数据结构实现
4、压缩列表和普通列表的区别
5、跳表查找插入删除的时间复杂度
6、算法:实现一个 LRU catch
7、Redis 的应用
8、Redis 的持久化方式
9、spring MVC 处理一个请求的流程
10、过滤器的使用
11、Spring 中的注解是如何实现的
12、Java 中的自动装箱和自动拆箱
13、数据库事务的隔离级别
14、数据库表设计和 sql:想知道当前班级成绩排名前十的学生
15、说思路:求 m 的 n 次幂
16、提了一下我写的博客
17、同样面试完没多久就有结果了,通知三面
第十篇
**一面 2020/3/5 **
1、自我介绍
2、然后主要针对我的两个项目(小操作系统内核+编译器)
3、操作系统内核
4、bootstrap 原理
5、PC 寄存器用处
6、虚拟地址到物理地址的映射
7、为什么要设置内核态&&用户态/内核态的分布情况
8、如何从用户态陷入到内核态,陷入时需要保存哪些运行时现场
9、进程 PCB 块里都有什么属性
10、编译器
11、编译一共分为几个步骤
12、词法分析的输入和输出
13、语法分析的输入和输出
14、上下文无关文法
15、算法题
反转链表(非递归实现)
局部反转链表(123456789->321654987)
**二面 2020/3/5 **
1、自我介绍
2、说说做过哪些 project,挑一些最锻炼能力的说
3、在这些 project 里头,有没有遇到什么难题,是怎么解决的
4、java 中怎么实现锁,详细说说每一种方法
5、synchronized 的底层实现
6、select,epoll 的区别
7、算法题
给一个源串 src,再给一个目标串 dst,从 src 到 dst 可以进行三种操作:
(1)更改一个字符
(2)删除一个字符
(3)在任意位置添加一个字符
问从 src 到 dst 最少需要几步操作
求职必备刷题官网:https://github.com/bennyrhys/interview
【更多互联网公司笔试面试真题请关注“让我遇见相似的灵魂”公众号】