【求职】今日头条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
【更多互联网公司笔试面试真题请关注“让我遇见相似的灵魂”公众号】

猜你喜欢

转载自blog.csdn.net/weixin_43469680/article/details/106800000