飞书面试题汇总

2023-12-13 04:44:42

面试相关经验

Interview | JavaGuide(Java面试 + 学习指南)

同学1

7次面试 编程题汇总:

有序链表找中位数 (飞书1面)

m个有序数组合并 (飞书1面)

海量数据寻找TopK(口述) (飞书1面)

两个有序数组取 TopK (飞书2面)

无序数组有多少个和为K的子数组 (飞书2面)

lc 147 (技术中台3面)

Lc 142 (技术中台3面)

Lc 210 (技术中台1面)

Lc785 (技术中台2面)

lc 321 (飞书3面)

lc 188(飞书3面)

K个链表反转 (技术中台1面)

手写arrayblockingqueue (飞书4面)

手写单例模式dcl (飞书4面)

赛🐎 25 匹马 , 5 跑道,找top5(口述)(技术中台3面)

飞机问题 (飞书3面)

蓝眼睛问题(飞书4面)

面试题

飞书 一二面:

个人经历
项目
了解NIO吗
IO模型 select和epoll的区别
拦截器,***和过滤器区别
RESTful 和SOAP
get / post 区别
怎么跨域
csrf 预防,http/dns 劫持
rabbititmp怎么解决漏发,多发? 持久化怎么整?
redis 和mysql区别
mysql设计表时怎么去提高性能
对称加密和非对称加密,RSA 具体说说
DES 和 AES 区别
HTTPS 证书是啥?加密内容?
可以伪造证书吗?中间人攻击能预防吗?
tcp怎么计算时间,RTT和RTO ?
UDP 伪首部多大,有啥,有啥用?
常见的拥塞控制算法 (BBR,RENO,BIC-tcp)
数据库范式 ?BCNF?第四第五范式?
索引失效什么情况?
怎么设计索引?
DBA不知业务的情况下怎么设计索引?
limit优化
联合索引最多多少个字段
数据库的事务隔离级别
mvcc机制聊一下
linux指令 Kill原理
tcp 异常处理,什么时候有RST,
什么时候有PSH URG 的包
爬虫对抗的解决方案
团队成员矛盾怎么办
怎么说服产品
怎么说服测试
和组长分歧怎么办
做题
飞书 三四面:

项目相关
Http1.1 特点,缺点
http2.0 特点,缺点
http3.0 特点,缺点
QUIC 特点,缺点
对头阻塞 tcp http的角度,分别讲一下
BBR 怎么快,怎么实现,和之前的有什么区别
tcp 选项有什么
tcp 首部多大
分片和分段区别
tcp半打开和半关闭的区别
udp 存在的意义
怎么线程通讯
多线程的创建,怎么退出线程,退出进程
线程池的参数
线程池的状态
死锁怎么预防
出现了死锁怎么办
银行家怎么实现
进程调度CFS
时钟调度算法
慢查询优化
ThreadLocal场景应用,spring里有用到吗
JVM 构架,垃圾回收
怎么设计一个日志系统
磁盘调度算法有什么
linux 文件系统架构
inode 有什么信息
LINUX 怎么找文件
Linux 怎么看端口,
看tw状态的进程load average 是什么,怎么看,怎么分析
linux 怎么做io检测
linux 不同发行版有什么区别
你觉得 linux 比win 好在哪
字节序,网络字节序是什么
需要主导项目怎么办
怎么设计测试用例
怎么总结工作
优点缺点
兴趣爱好
做题
面完三天挂(感谢信)。

被技术中台捞起,一二面都挺开心

一二面:

tcp,http,https等常见问题

项目人均秒杀,面试官不耐烦了

Innodb 是如何解决幻读的

redis cluster

16384为啥?

netty 模型

netty 优点

nginx 鲸群怎么解决

rabbitmq组建

dns欺骗怎么办? arp欺骗?CSRF攻击?xss攻击?syn flood攻击?应对方法

Spring Boot启动流程以及生命周期

https://blog.csdn.net/u011277123/article/details/104476683

spring 事务怎么实现

ipc哪个快

B树和b+树分别有啥作用

JVM的内存模型

GC回收器JVM调优参数配置

Java中各种锁聊一下,CAS机制

volatile有用过么,底层实现

数据库 有什么log ?

mvcc 的作用

事务的实现原理

做题

三面 :
40 min 基本都是之前一二面的问题,什么鬼,太敷衍了,和字节无缘了,没出结果但是看出来很敷衍了,再见

ipc哪个快 (2天前问过了啊)

B树和b+树分别介绍 (2天前问过了啊)

Java中各种 锁 (2天前问过了啊)

CAS (2天前问过了啊)

volatile (2天前问过了啊)

同学2

http://t.csdnimg.cn/EeYpk

同学3

一面(4.22)
1.TIME_WAIT和CLOSE_WAIT区别

2.大量连接处于CLOSE_WAIT是什么原因

3.IO多路复用

4. ReentrantLook和Synchronized的区别

好像都比较常规,记不太清了。

智力题:25个马5个赛道 最少比几次得出最快的五只马

算法题:拓扑 排序,力扣中课程表题目

二面(4.24)
聊了项目

1.事务隔离级别

2.MVCC机制

3.b+树索引和哈希索引的优劣

好像都比较常规,记不太清了。

算法题:dfs判断 岛屿数量,力扣上有

三面(4.24)
考察计算机网络和操作系统较多

1.HTTP的请求方法有哪些

2.HTTP的状态码

3.HEAD方法有什么作用

4.HTTP各版本的不同

5.拥塞控制流程

6.RESTful

7.操作系统调度的方式

8.线程和进程区别

9.Redis主从复制

编程:实现设计模式中简单工厂模式

算法题:给定一个数字n=34563,一个数组{5,4,1,3},求由数组中的数字组成的小于n的最大整数

(没用递归做,我是先找n中小于该位的最大整数,如果找到,则后续数字直接取最大,如果最终没有找到,就取比n位数-1的最大数字)

同学4

一面
1.自我介绍

2.操作系统进线程

3.Java中你认为哪些地方涉及到了线程通信,原理是啥

4.申请一块内存的详细过程

5.虚拟内存

6.缺页中断,页面置换算法

7.磁盘调度算法

8.三次握手,四次挥手(为什么三次,四次)

9.泛洪攻击怎么解决?

9.HTTP存在的问题,HTTPS的SSL握手过程

10.Redis单线程为什么这么快,然后深挖底层epoll(为什么单个线程监听多个套接字不会阻塞)

11.Redis单线程潜在风险点

12.实际业务中怎么删除bigkey

13.Redis的淘汰算法(LRU算法与常规LRU哪里不同)

14.然后就只剩15分钟不到了,给了道hard:lc224

15.反问

二面
1.自我介绍

2.讲讲项目,思考业务是否可以优化

3.项目中提到了使用并行来提升效率,有没有思考过并行后带来的问题

4.Redis持久化

5.提到了AOF重写,具体讲一下

6.mysql索引优化

7.MVCC

8.算法题:lc44

三面
1.简单介绍

2.为什么两篇SCI,要转开发

3.讲一下你对Saas的理解

4.聊聊mysql的权限控制,怎么给新加入团队的同学开数据库权限

5.索引设计要考虑什么问题

6.了解分布式吗

7.用过ngnix反向代理吗

8.redis指令

9.讲一下写时复制

同学5

字节跳动-后端飞书-日常实习
7-1 一面(42min)

飞书面飞书,面试官提前上线,十分友好,第一次面试,嘴都瓢了。一面非常愉快,问的也比较基础。

  1. 自我介绍

  2. 到岗、实习时间,下学期有课吗?

  3. 项目

    1. 涉及多少张表

    2. 负责前端还是后端(全栈)

    3. 前后端分离API接口如何实现鉴权(JWT)

    4. 项目中Redis使用,如何解决Redis宕机后系统不可用(脚手架集成;集群、封装Redis工具类并捕获异常,查数据库)

  4. TCP 三次握手,每一次握手是为了做什么,为什么需要第三次握手

  5. OSI 七层模型

  6. 应用层、传输层和网络层常用协议

  7. 数据链路层传输什么信号(MAC帧,PPP帧?说了两个)

  8. HTTP 和 HTTPS 的区别(HTTPS=HTTP+SSL,加密传输,对称/非对称加密)

  9. JWT包括那几个部分(head、payload、signature)

  10. 数据库三大范式

  11. 事务特性

  12. 事务隔离级别

  13. MQ 消息重复消费解决方案(忘了,应该是设计业务幂等性、防重表)

  14. Redis 缓存击穿、缓存穿透和缓存雪崩区别

  15. Spring AOP实现原理,为什么要使用AOP(动态代理,jdk,cglib;代码重用巴拉巴拉)

  16. 抽象类与接口区别

  17. 屏幕共享,手写快排(3min)

  18. 写一个 Controller,RESTful API,接受两个int 参数,返回相加结果,讲解涉及注解原理

  19. 介绍部门情况

  20. 反问

    1. 学习方向

    2. 表现如何(应该问怎么改进的)

    3. 转正?

    4. 什么时候有结果

7-5 二面(53min)

又是一个很和蔼的面试官!我讲了几分钟才发现麦没开。。。

  1. 自我介绍(暗示面试官Java不错)

  2. 项目

    1. 系统设计,包含模块

    2. Redis用来干什么(脚手架集成;缓存页面、登录过期校验、JWT……)

    3. 脚手架为什么要用Redis实现登录呢?(……SpringSecurity+JWT实现鉴权)

    4. 为什么用Redis作为缓存,不使用 应用服务器(Tomcat/JVM)作为缓存?(布吉岛,舍友跟我说:应用服务器是本地缓存、Redis服务器是分布式缓存)

  3. 为什么要同时重写equals和hashcode(Java开始了,八股文,顺便讲了一下HashMap)

  4. Java NIO学过嘛,讲讲三大组件?(Selector、Channel、Buffer)

  5. Buffer缓冲区原理(Buffer对象,数组/内存块,直接写入,写入读出Channel过程)

  6. Java常见设计模式(单例、工厂、模板方法、动态代理……)

  7. 听过策略模式吗?(听是听过……嘿嘿,面试官说用的最多)

  8. 实现线程安全的单例模式注意点?(存在问题,双重检测,volatile、synchronized、私有构造器)

  9. 如何中断一个正在运行的线程?(interrupt,忘记说volatile变量了)

  10. 如果不响应interrupt呢?(volatile变量?中断synchronized方法是一个意思吗?,面试官给我举了个例子:迅雷暂停就是中断,让我思考思考)

  11. MyBatis如何实现数据库字段与JavaBean间映射(I/O流读取XML文件,其中包含类全限定名,通过反射实例化对象)

  12. 如果是你实现,会使用什么技术实现数据库映射到JavaBean?(反射,面试官一直嗯嗯嗯我也不知道对不对)

  13. 反射是是什么?不要说怎么使用,底层实现原理(运行期动态获取/操作类;面试官解答:类型技术,Class作为实例模板,反射获取Class类模板)

  14. ThreadLocal用过吗?用来干什么(线程本地变量,线程隔离;静态内部类ThreadLocalMap、Entry继承弱引用)

  15. 你说说为什么ThreadLocal会内存泄漏?(ThreadLocal弱引用,Java结束了)

  16. HTTP请求响应包含什么内容(请求行/头/体、响应行/头/体)

  17. 跨域问题(协议/域名/端口号其中有不同,就存在跨域;@CrossOrigin、网关)

  18. 数据库为什么要第一范式?(不会,后来查了下,不满足就不是关系型数据库?)

  19. 联表查询join原理,两个表join为例(没了解,Nested-Loop Join)

  20. 你自己如何实现呢?(两张表=两个对象,各取一个相同字段,等值连接,求并结果集)

  21. 搞个题吧,归并排序(屏幕共享,嘿嘿,最后边界问题直接跟面试官讲思路了,呜呜)

  22. 我这边问题完了,你有要问的吗?

    1. 表现如何,有什么改进?(Java是OK的,数据库有欠缺,基础不够扎实)

    2. 什么时候出结果(这两天)

总结教训,数据结构、算法一定要加强练习,数据库理论实战都要深入。

同学6

一面:

首先聊项目吗,聊了差不多二十分钟

问是了解Java多一些还是Python多一些

Java

final,和static关键字,作用于哪些地方,分别产生了什么效果

线程池的几个参数

线程池中的keepAliveTime参数主要是作用于哪里的,还有一些关于线程池的基本知识

创建线程的几种方法,分别在哪方面具有效果

synchronized和volatile还有retrantlock之间的区别

编程题:

反转链表手写

还有一个求数组中两个数字相乘,求最大值,并打印出来

二面:

聊项目,聊了20分钟,一些东西给我问卡了

聊学Java,看过哪几本书

然后说Java并发编程主要讲了哪些事情,我说保证线程安全,然后原子性,有序性,可见性一直聊

然后说到有序性,让我举个例子什么的,问用什么保证有序性,还有volatile修饰i的情况下,两个线程并发访问i会产生什么效果,这个得分情况答,没回答太好

然后说手写消费者生产者模型吧,我说不会,

又聊了下消费者生产者模型的事情(应该注意的点,没怎么答上来)

然后问操作系统

问我对操作系统的了解,没了解多少,就跟他简单说了下,进程之间的通信方式

Http和Https的区别 SSL的对称加密和非对称加密作用于哪里的??(没答上)

手写打印二叉树的深度,递归和非递归都写了,并解释非递归的代码的含义

Throwble中的Error和Exception的区别

三面:

问的东西都很基础,但是面试官很严肃,一时间不知道怎么办好了。就不写了,总之就很基础。

同学7

1. 个人背景介绍

本人19年毕业,双非硕士,软件工程专业,1年工作经验(银行外围系统,又老又久,无高并发场景)Java后端开发,无实习经历,通过BOSS找的字节猎头。

刚开始说是被飞书拒绝了,然后被教育捞起来了。

2. 一面

时间:9月24日 1小时

很基础的知识点考察,涵盖了IO,网络等基本的理论知识,数据库和多线程会结合个人的语言和使用过的软件框架做提问,一面很基础,基本都答上来

hashmap原理,底层实现,线程不安全的原因,怎么扩容,底层数组大小为什么是2^n,扩容死锁产生的过程(不会), 1.7和1.8的区别
concurrenthashmap原理,结构,为什么线程安全,分段锁怎么实现
synchronized和lock区别, volatile原理了解吗
Lock底层实现原理, AQS怎么实现的

Redis数据类型,删除策略,持久化方案,分布式方案,redis cluster方案原理(没看具体的架构内容),分布式一致hash知道吗?

IO模型:IO模型有哪些,select和epoll原理,select的缺点(搞Java,如果没有高并发场景的经历,IO这块也就不怎么了解了,基本都是复习多线程的知识去了)

OSI模型(五层和七层)

介绍下tcp和udp
tcp握手,挥手
慢启动,快速重传,开苏恢复
time-wait介绍下

innodb特点
innodb索引物理结构
主键,回表,覆盖索引
与MyISAM对比

算法:三数之和,要求给出时间复杂度和空间复杂度,刚开始暴力三重循环,后来要求优化

3. 二面

时间:9月31日 1小时

结合项目经历提问,面试官会结合简历和一面结果适当补充一些基本理论知识和常用框架的提问,个人对kafka不太了解,可能面试官不太满意

项目经历:分库分表,不借助中间件怎么实现,MyCat了解过吗(不了解),分库和分表怎么选择?结合项目场景讨论划分规则
其他 项目经历,反射、注解的原理,有用过线程池吗?Java线程池有哪几种?Java线程池的构造参数?什么是阻塞队列?Java有哪些阻塞队列?
https建立连接的过程是怎样的?

了解中间人攻击和跨域攻击吗?

进程与线程的区别和联系
进程的切换发生了什么
线程的切换为什么比进程的切换代价小
进程通信的方式和举例

kafka的产生背景和在项目中的使用
topic和partition,partition是干什么的
Consumer Group是干什么的
怎么将partition分配到多个broker上?怎么动态调整partition和broker的数量?
rebalance什么时候发生,rebalance过程(这个真不知道)

Linux的shell用的怎么样?grep、sed、awk有用过吗?(只会grep...)

怎么监控机器性能?

Linux文件系统了解吗?软连接和硬连接?

矩阵顺时针旋转90°和逆时针旋转90° 股票买卖(几个变种问题没做出来,但是基本的应该还行)

4. 三面

时间:10月9日 1小时

主要是系统设计,发散性问题, 另外,面试官吐槽了我的简历,建议简历老老实实套模板,不要花里胡哨,程序员的简历要整洁明了

kafka如何做到高可用(不会,面试官不太满意,因为我的工作经历没有互联网高并发,而且kafka的确没怎么看)

设计热榜,动态展示top K

N个线程交替打印,怎么实现,写出来,跑一下

设计长短地址转换

同学8

垃圾一本。
接到电话之后约了两周以后,中间给我发了一封感谢信,我以为面试取消了,结果当天又收到了面试,没有准备直接GG,水平太差还被以为是大二的。

1.说一下GC
大概说了gc就是垃圾回收,当一个对象不再被强引用或者软引用内存不够的时候会被gc回收。
大概有标记清除算法,沿着每个对象的引用链标记每个被引用的对象,遍历完成后回收没有被标记的对象。
缺点是回收之后内存和内存之间会产生很多碎片。
解决这个问题就是把内存分为两半,每次清楚后将存活的对象全部放到另一半去来消除碎片,代价是内存变为了原来的两半。
再一个就是分为了老年区、新生区,我讲到这就被打断说可以了。

2.hashmap
先问我了解过哈希表吗,我说阅读过源码,如果是问问题我还挺有自信的,结果直接让我简单实现一个哈希表,我有点蒙了,看了很久都有点忘了,只记得一些重要的特性例如红黑树的调整,阈值等等,当然这里不需要写出红黑树和扩容等等,但中间停停想想花了很长时间,最后面试官都等不及让我直接讲一下思路。

3.tcp udp
先问我了解过网络吗,我说了解过,之后问我tcp和udp有什么区别。
我回答tcp可以保证数据的完整性和安全,在数据丢失的时候会重发,udp主要是尽最大的努力传输数据,对数据的完整性和安全性不做保证,但是速度更快,所以对数据容错比较大的时候可以使用udp,对数据敏感的使用tcp。
接着问我tcp怎么保证数据安全
本人因为一些原因科班知识比较薄弱,没有回答出来,汗颜。。

4. Linux
os用过,但是用的Ubuntu图形界面,对指令不熟悉。

5.Redis
redis是自学的,没有在项目里用过,但是我还是准备挺多的,结果只问了一个问题。
问了redis缓存穿透是什么的
答:缓存穿透是个别攻击用户大量访问不存在的数据,导致redis里都查询不到,访问直接落在服务器,让服务器压力大增以至崩溃的情况。
问:怎么解决这个问题?
答:设立一个黑名单,将在短时间内大量访问无效数据的ip放在黑名单内,并禁止他的其他访问
或者使用布隆过滤器来过滤访问
不知道是回答得不好还是什么,没有继续询问直接跳到下个问题了

6.内核态和用户态
其实os我自认为学的还可以,结果直接给我干碎了。
这个我和同班同学核实了,我确实记得我的os老师没有讲过这方面的内容,我回顾ppt和考试都没有看到这个,我直接麻了,只能说不太清楚。
被直接质疑是不是还没上操作系统,麻了。

7.线程和进程
线程就是一个运行中的程序,是资源分配和调度的基本单位。
线程之间共享字元和沟通很麻烦。
线程是进程的一部分,共享线程的资源,沟通起来比较方便。
进程开销大,线程开销小。

8.写一个排序算法
前面心态崩掉了,这里直接放弃了。。

9. 对项目有什么印象深刻的地方
?

文章来源:https://blog.csdn.net/weixin_46094676/article/details/134876545
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。