自己面试用

14

字节后端实习三面

1.实习项目…

2.各种消息中间件区别

3.如何保证消息顺序消费

4.线程池的好处

5.线程池源码

6.线程池状态以及状态是如何变化的(ctl高三位)

7.线程的状态以及如何变化的

8.java的线程池怎么设计的

9.为什么要区分核心和最大线程

10.sleep和wait区别

11.数据库设计(设计表,字段,sql语句),(需求不断变幻,该表改的脑壳昏)

12.算法。。。。。。

13.redis高性能

15

计算机网络

TCP三次握手? 2.5 基本最基础的入门问题了

TCP和UDP的区别? 可靠交付、拥塞控制 3

面向字节流?2.5 不太清楚沾包问题?

TCP格式?标志位有那些?3- 不太清楚urg psh

四次挥手? 2.5 同理TCP三次握手

HTTPS握手? 3- 总分总,要

go

string的底层结构? 2.5 三种指针。unsafe.pointer

defer函数? 2.5 应当结合源码,g m p结构体

GMP? 3-

Redis

常见的五种数据结构? 3

Bitmap 了解过吗 3 比较清楚

Redis的持久化方式 Aof 、 rdb比较清楚不过稍微有点啰嗦 3 试着去提炼一下语言。

Reids实现一个事务 2.5 对于watch命令。redis还有一些其他的比较常见的命令可以去看一下

OS

进程和线程的区别 2.5 最基础的入门问题

Coding

全排列:有思路,但不够熟练

16

百度一面(1h+):
  • 常用 GC 算法,常用的垃圾收集器, G1 了解吗
  • 场景题: cpu 打满且频繁 full GC,怎么解决?
  • 有 jvm 调优的经验吗?实际工作中遇到过内存相关的问题吗?用过哪些堆栈工具调试?
  • Mysql 索引,数据结构为什么使用 B+ 树
  • 索引覆盖了解吗
  • 索引失效的场景
  • 简单描述一下数据库的四种隔离级别以及对应的三种相关问题
  • MVCC + 锁 保证隔离性
  • 造成幻读的原因了解吗,快照读、当前读。
  • 数据库自增 ID 和 UUID 对比
  • HashMap 源码,数据结构,如何避免哈希冲突,对比 HashTable
  • HashMap 源码中,计算 hash 值为什么有一个 高 16 位 和 低 16 位异或的过程?
  • 为什么重写 equals 还要重写 hashCode,不重写会有什么问题
  • ConcurrentHashMap 底层实现,扩容问题。
  • 如果让你自己实现哈希表,你会考虑什么问题?
  • 场景题:亿级别黑名单、短链接,你考虑使用什么数据结构?布隆过滤器、前缀树。其中布隆过滤器问了基本的原理和实现方式
  • Java 引用类型,强软弱虚
  • Java 是引用传递还是值传递
  • Object 类你了解哪些方法
  • 接口和抽象类的区别
  • 线程池核心参数,以及工作原理
  • ReentrantLock 对比 sync 锁
  • lockInterruptibly()、acquire()、tryAcquire() 方法
  • CAS 机制了解吗,存在什么问题
  • 对象锁和类锁的区别
  • 如果让你自己实现阻塞队列,如何实现?阻塞唤醒这一部分,如何实现?
  • ThreadLocal ,Volatile
  • 看你项目中用到了 Netty,简单介绍下吧。这里还有个 问题是问到 Netty 和 SpringBoot 整合的,但我一直都没理解她想问什么
  • 粘包拆包问题,Netty 解决粘包拆包的 Decoder
  • Spring 事务了解吗,Spring 事务的注解不生效,是什么原因
  • 算法题: 手写快速排序,时间复杂度,稳定性整理感觉不错,基本都答上来了,按照 Guide 哥星球里的内容,认真准备就好。
百度二面(45 min):
  • 看你项目中用了一致性哈希做负载均衡,简单介绍一下
  • 项目中 CompletableFuture 如何使用的
  • 算法题:给定一个字符串,找到其中最长回文串
  • 计网和组成原理学过吧,你认为哪个掌握的好? 我选了计网。这一部分问的很深入,我没来得及记录,以下部分只是一些零散片段,但是整体问的时候是有逻辑的。
  • OSI 七层模型
  • TCP 三次握手,四次挥手整个过程包括状态的转换。为什么是三次握手、四次挥手。发送 Fin ,实际的意义代表什么?(发送方没有数据要发送了,可以断开连接)
  • 四次挥手,为什么等待 2 MSL
  • 流量控制、拥塞控制
  • 后面关于网络就更深入了,TCP 底层是怎么实现的,如果让你用 Java 模拟 TCP 的过程,做一个仿真,你有什么想法。大学学习计网的时候,协议栈之类的了解过吗(这部分我都不懂,认栽了)
  • 看你项目中用到了 Spring,自动装配的过程了解吗。
  • Spring 启动类的注解,介绍一下
  • 因为我项目中用到了,所以被提问了 Spring 二次开发常用的扩展点,还涉及到了 Bean 的生命周期。 BeanPostProcessor,在你项目中如何使用的
  • Spring 中你常用哪些注解? Autowired 实现原理

计网仿真 TCP 以及后面深入的部分我不懂, Autowired 实现原理 没说清除,其余的都答上来了。

字节跳动

在我整个的面试过程中,字节给我的体验是最好的。一面二面的面试官都非常好,面试的问题、要求都说的很清楚,需要注意的点都提前告诉了我,甚至二面的面试官会提醒我,"在回答问题的时候这边会有敲键盘的声音,是我在记录,不要影响你回答问题。"对于初次求职面试,体验感拉满。

除此之外,字节的面试和百度思路不一样。百度是从八股出发,引出一些实际场景遇到的问题。字节几乎没有八股,是从项目出发,结合工程经验,主要考察思考的过程,关键点答出来之后,结果对错可能不是很重要(这里是我主观臆断的)。

字节一面(1h):
  • 自我介绍,项目部分主要介绍了 rpc 项目,后续的问题都是基于这个项目
  • rpc 远程调用的整个流程
  • 项目中的 SPI 机制,介绍一下原理以及你做了哪些改进
  • 项目中用到了负载均衡算法,详细介绍一下
  • 一致性哈希的原理,虚拟结点
  • 项目中的序列化方案,为什么序列化,你都了解哪些常用的序列化方法。
  • 你项目中使用了 Kyro 序列化,优点你提到了,缺点了解吗
  • 通信协议是你自己设计的,假如后面需要变更,比如添加新的字段,你项目中如何处理的?
  • 服务的灰度发布介绍一下,如何实现的?
  • Zookeeper 作为注册中心,假如崩溃了怎么办?这里开始连环问了
  • 你提到了 Zookeeper 的一致性,它是如何保证的?
  • ZAB 协议,选举的过程,这里问的很详细
  • Zookeeper 是强一致性吗?
  • 网络分区了解吗,CAP 理论
  • Zookeeper 如何应对网络分区的,脑裂问题了解吗,如何解决?
  • 假如我同一时间有大量服务发布,你提到了 Zookeeper 只有主节点负责写, 怎么解决?假如主节点崩溃了,新选举出的主节点仍然没办法面对我的大流量,也崩溃了,如何解决?
  • MQ 的原理,你知道哪些 MQ,各自有什么特点,什么时候需要用 MQ
  • 你刚才提到了服务端保护机制,如何实现的?这里我答了限制连接数以及接口限流,基于责任链模式。之后问了用到的令牌桶以外的常用限流算法。
  • 算法题:链表反转,你知道的所有实现方式。这里我写了递归和非递归两种。

整个面试的过程中大脑都是高速思考的,甚至从面试官的问题中得到了好多启发,是背八股掌握不到的,体验非常好。面试的问题几乎都答上来了,有一些不太熟悉的在面试官的提醒下也都回忆起来了(这点非常 nice,其他面试不会就直接过了,而字节会认真引导你,看你究竟掌握到什么程度)。事后 hr 小姐姐还告诉我面评非常好,鼓励我认真准备二面。

字节二面(1h):

字节二面的经历比较魔幻了, 面试官在伦敦有时差,因此是晚上九点开始面试的,由于面试官比较忙,整个面试过程比较简单,自我介绍 + 项目介绍之后简单提问了几个问题(没有印象深刻的技术问题,这里就不重复整理了),沟通了一下实习时间,直接做算法题了。

  • 算法题:有一个 n * n 的棋盘,每个格子有三个状态,R 表示红*** 表示蓝色,X 表示此路不通。机器人从左上角走到右下角,每次只有上下左右四个方向选择,相同颜色之间没有代价,跨越不同颜色代价为 1,求解机器人从左上角走到右下角,最少的代价。
  • 这里我用回溯求解的,很快就写出来了,思路也没问题。但是复杂度计算卡住了,在面试官多次且反复的提示下,算出来了。 最后提问环节面试官跟我说后续优化可以加一些剪枝操作

二面没有遇到难度比较大的问题,大部分时间都被我卡在了算时间复杂度(很菜勿喷)…

B 站

综合来说,B 站面试给我的体验是非常差的,一面的时候我感觉还没进行比较深入的交流,问了一些八股,很快就结束了。二面上来之后,问了你觉得自己项目有什么亮点吗,然后就来了一道 Hard 算法,又结束了…

B 站一面(30 min)
  • Rpc 远程调用的流程
  • 一致性哈希算法详细介绍
  • 为什么选用 Zookeeper 作为注册中心,注册中心作用是什么
  • 动态代理
  • Redis 在你项目中如何使用的,穿透、雪崩、击穿了解吗
  • 你项目中用的是 RabbitMQ,为什么,和其他 MQ 对比如何?
  • RabbitMQ 的原理
  • 你项目中的 灰度发布、分组管理如何实现的
  • 无算法题

之后在我以为他准备深入提问的时候,面试官告诉我面试结束了,整个过程不到 30 min,而且没有算法题。

B 站二面(30 min)
  • 简单介绍下你的项目,是工程项目、学校项目还是自己学习的
  • 你认为项目中有什么亮点?
  • 算法题:K 个有序数组,输出最终排序后的数组 (K merge)。

B 站是我第一个走面试流程的公司,二面在字节一面的前一天。B 站二面是我第一次在面试过程中写算法题,结果就遇到个这,当时心态是崩掉的。因为第一次确实有些紧张,思路不清晰。虽然是** Hard 难度吧,但是事后觉得也没有很难,做不出来还是大多归因于自己。但是复盘的过程中,我发现在面试的过程中,虽然太紧张了没实现出来,我把两种解题思路都思考到了,并且面试官提问时间复杂度,在提示下也求解出来了(很菜勿喷),整体表现自我感觉也算可圈可点吧。

给大家的经验就是,平时刷题的时候时间复杂度求解一定要重视!

17

1.科研项目的介绍,难点,收获

2.put和post的区别,能用put的都能用post吗

3.对c++封装继承多态的理解

4.vector和list的区别

5.https和http的区别

6.http3大概说一下

7.tcp和udp的区别

8.指针和引用的区别

9.算法题:三数之和

总结:都是常规八股,算法题也是常规题,看平时的基础积累。

2022年9月1号字节抖音后端日常实习二面(60分钟)#

1.单例模式的应用场景

2.工厂模式的应用场景

3.django后端框架低层消息路由的传递过程

4.项目选型方面

为啥选pg不选mysql

为啥选django不选spring boot

为啥选vue不用react angular

数据库表为啥这么多

项目数据库是如何应对新添的需求的

5.浏览器请求相册里的数据,这一整套的流程

6.进程/线程/协程的区别

7.进程通信的方式

8.数据库索引的存储结构

场景题1:m元分成n个红包,随机分配,需要保证红包的金额均匀分布,每个红包金额大于等于0.01,且是0.01的整数倍

场景题2:m*n矩阵,从第一行第一列开始走,每次只能往右或者往下走,求走到最后一行最后一列的位置有多少种走法:dp和数学方法都说一下

总结:项目这块还是看积累,八股也都是基础八股不算偏,场景题面试官人很好,会一步一步引导,给面试官打call,哈哈

2022年9月2号字节抖音后端日常实习三面(40分钟)#

1.工程项目如何保证工程质量呢

2.场景题:如果我需要监控抖音平台的预警情况,需要实时监测各个指标信息,及时通知与报警。请问如何设计这个系统,从架构方面。

面经总结:自我感觉系统架构和场景题这方面很能考察出候选人的素养,这方面确实需要加强,准备去实习好好学习这方面的知识了。

18【360实习】C++开发

【360实习】C++开发

一面1.13,40min

  • 先聊项目
  • 什么是惊群现象,怎么解决
  • epoll的工作原理
  • 说一下对进程的了解
  • 进程间的通信方式
  • 最快的通信方式是什么
  • 说一下vector 、list、map的区别
  • 说一下迭代器失效的情况,以及解决方法
  • 哈希冲突的解决方法(我说了链表法,开放地址法,再哈希法)
  • 空类包括什么成员
  • 浅拷贝和深拷贝有什么区别
  • 悬空指针所指向的内存被释放了,那么这个指针还存在吗
  • 悬空指针和野指针的区别
  • 说一下虚函数
  • 一个类的大小由什么决定(成员变量的个数,是否继承,是否有虚函数等,有虚函数的话,那么类就会多一个虚表指针,类的大小就会多4字节)
  • 一个子类继承空基类,对子类的大小会有影响吗 (空白基优化)
  • TCP三次握手为什么不是四次呢
  • TCP四次挥手可以三次吗
  • 第三次握手可以携带数据吗
  • 如果有多个重载函数,那么我根据函数名打断点,GDB会怎么执行呢,是只执行一个还是全部都显示出来(都显示出来)
  • 面试官很好,有个别问题,答的不好,一直引导。面试官说,二面可能要等到年后了

19懂车帝后端开发一面(凉凉)

懂车帝后端开发一面(凉凉)

一面 2022.12.12(60分钟)

1.为什么要做一个日志库

2.什么是装饰器模式

3.隔离级别,四种分别解决了什么问题

4.mysql默认隔离级别,怎么实现的

5.B+树是什么,和B树的区别

6.如果不用区间查找,B树和B+树哪个好

7.B树和B+树的区别到底是什么(区间查找、空间使用,不知道他想要啥答案)

8.Redis常用数据类型

9.有序的set支持哪些操作

10.排行榜用哪个数据结构

11.Redis持久化

12.两种方法的优缺点

13.实际中一般用哪种

14.四次挥手和中间的状态

15.为什么要四次挥手

16.握手能不能四次

17.一句话说下为什么握手有三次挥手有四次(握手中间不需要发数据、挥手需要考虑最后有数据发送)

18.用过哪些Linux命令

19.查看线上的error日志有多少条

20.怎么统计多少行(wc命令)

21.了解的webSocket协议

22.听说过RestFul么,讲讲(听说过)

23.常见的HTTP状态码

算法

1.根据前序中序还原树

2.找零钱(dp)

20 字节

字节后端实习 | Golang | 一二三hr面offer

内部员工回复

一面(40min)

  • 自我介绍

项目

  • 项目背景
  • MVCC如何实现、MVCC的作用
  • 讲讲MySQL锁机制(共享锁、排他锁、行级锁、表级锁、意向锁、记录锁、间隙锁、next-key Lock)
  • redo log&undo log作用,什么时候生成
  • 如何写redo log(redo log buffer等)
  • 两段锁协议,分布式事务中两阶段提交

实习 & 八股

  • Redis分布式锁如何实现的
  • 分布式锁还有哪些实现方案
  • 讲讲Java常见的垃圾收集器
  • 讲讲更换GC的场景与问题
  • 线程池是如何配置的
  • 线程池是用来处理啥的、使用的业务场景、解决什么业务问题
  • 讲讲阻塞队列
  • 让你实现一个RPC框架,应该要考虑哪些点
  • 阻塞IO和非阻塞IO有什么区别
  • 如何实现多路复用IO
  • select、epoll原理
  • 讲讲go的协程、协程与线程

算法

  • 反转链表
  • 最长回文子串

二面(90min)

算法

  • 子集
  • n个骰子的点数和为k的概率

实习

  • 讲讲实习中最有挑战的工作
  • Balabala 规则引擎相关
  • Balabala 一堆业务理解

场景

  • 八股:内存页面置换算法
  • 实现LFU算法,有时间复杂度要求
  • 实现一个敏感词过滤系统,敏感词存在哪,如何从一篇文章中找到所有敏感词(字典树)
  • Redis跳表如何实现?时间复杂度?
  • MySQL联合索引使用问题,覆盖索引相关。

三面(60min)

大老板面的,聊了一小时实习的业务理解、架构设计、优化方向,以及为什么从前一段离职,为什么选择字节balabala

后续:hr面完第二天早上就oc+正式offer了,已去

21 字节

24非科班双非日常实习,0准备,没有记任何八股文,也没打算去

一面(总共90min,已过)

  1. 自我介绍
  2. 项目介绍
  3. 面试官点评我的项目
  4. POST和GET的区别
  5. HTTP其他的请求方法
  6. 在学校的项目出了用Java还有没有用其他语言
  7. ArrayList和LinkedList区别
  8. 说我实习挺丰富的
  9. GIT常用命令、功能和原理
  10. 描述项目的时候说到了好多的优化,具体有哪些
  11. Mysql的索引有哪些,有什么区别
  12. 索引的引用场景
  13. Mysql锁机制
  14. 乐观锁和悲观锁
  15. 聊日常
  16. 反问

算法:岛屿数量

解法:dfs

我自己是在备战考研,随便投了几个试试水,看看目前市场的竞争力,没准备八股文,也没打算去。整体感觉难度很小,基本都是在聊项目细节,项目也是真实生产环境的项目,所以项目问题不大,然后就是聊了暑假的实习项目。面试官人非常好,我中间说项目的时候描述的不是很好还告诉我这么去描述清楚,后面他对我的经历比较感兴趣聊了快半小时,就是我这么感兴趣的,小学时候这么写的外挂啥的

22

阿里-阿里妈妈-Java

1、mysql中myism和innodb的区别

myisam不支持事务,innodb支持事务

myisam只支持表锁,innodb支持表锁和行锁

myisam支持全文检索,innodb不支持全文检索

2、聚簇索引和非聚簇索引区别

聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据

非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

3、jvm内存模型以及程序运行时,它们是怎么一个过程

方法区

程序计数器

本地方法栈

虚拟机栈

4、jvm跨代引用是如何处理的

5、双亲委派机制的优点

6、消息中间件里的消息重复、乱序、丢失,请从生产者和消费者的角度去谈一谈

可以看出,保证消息的可靠性需要三方配合。

生产者需要处理好Broker的响应,出错情况下利用重试、报警等手段。

Broker需要控制响应的时机,单机情况下是消息刷盘后返回响应,集群多副本情况下,即发送至两个副本及以上的情况下再返回响应。

消费者需要在执行完真正的业务逻辑之后再返回响应给Broker。

但是要注意消息可靠性增强了,性能就下降了,等待消息刷盘、多副本同步后返回都会影响性能。因此还是看业务,例如日志的传输可能丢那么一两条关系不大,因此没必要等消息刷盘再响应。

如果处理重复消息

我们先来看看能不能避免消息的重复。

假设我们发送消息,就管发,不管Broker的响应,那么我们发往Broker是不会重复的。

但是一般情况我们是不允许这样的,这样消息就完全不可靠了,我们的基本需求是消息至少得发到Broker上,那就得等Broker的响应,那么就可能存在Broker已经写入了,当时响应由于网络原因生产者没有收到,然后生产者又重发了一次,此时消息就重复了。

再看消费者消费的时候,假设我们消费者拿到消息消费了,业务逻辑已经走完了,事务提交了,此时需要更新Consumer offset了,然后这个消费者挂了,另一个消费者顶上,此时Consumer offset还没更新,于是又拿到刚才那条消息,业务又被执行了一遍。于是消息又重复了。

可以看到正常业务而言消息重复是不可避免的,因此我们只能从另一个角度来解决重复消息的问题。

关键点就是幂等。既然我们不能防止重复消息的产生,那么我们只能在业务上处理重复消息所带来的影响。

幂等处理重复消息

幂等是数学上的概念,我们就理解为同样的参数多次调用同一个接口和调用一次产生的结果是一致的。

例如这条 SQLupdate t1 set money = 150 where id = 1 and money = 100; 执行多少遍money都是150,这就叫幂等。

因此需要改造业务处理逻辑,使得在重复消息的情况下也不会影响最终的结果。

可以通过上面我那条 SQL 一样,做了个前置条件判断,即money = 100情况,并且直接修改,更通用的是做个version即版本号控制,对比消息中的版本号和数据库中的版本号。

或者通过数据库的约束例如唯一键,例如insert into update on duplicate key…。

或者记录关键的key,比如处理订单这种,记录订单ID,假如有重复的消息过来,先判断下这个ID是否已经被处理过了,如果没处理再进行下一步。当然也可以用全局唯一ID等等。

基本上就这么几个套路,真正应用到实际中还是得看具体业务细节。

如何保证消息的有序性

有序性分:全局有序和部分有序。

全局有序

如果要保证消息的全局有序,首先只能由一个生产者往Topic发送消息,并且一个Topic内部只能有一个队列(分区)。消费者也必须是单线程消费这个队列。这样的消息就是全局有序的!

不过一般情况下我们都不需要全局有序,即使是同步MySQL Binlog也只需要保证单表消息有序即可。

部分有序

因此绝大部分的有序需求是部分有序,部分有序我们就可以将Topic内部划分成我们需要的队列数,把消息通过特定的策略发往固定的队列中,然后每个队列对应一个单线程处理的消费者。这样即完成了部分有序的需求,又可以通过队列数量的并发来提高消息处理效率。

图中我画了多个生产者,一个生产者也可以,只要同类消息发往指定的队列即可。

如果处理消息堆积

消息的堆积往往是因为生产者的生产速度与消费者的消费速度不匹配。有可能是因为消息消费失败反复重试造成的,也有可能就是消费者消费能力弱,渐渐地消息就积压了。

因此我们需要先定位消费慢的原因,如果是bug则处理 bug ,如果是因为本身消费能力较弱,我们可以优化下消费逻辑,比如之前是一条一条消息消费处理的,这次我们批量处理,比如数据库的插入,一条一条插和批量插效率是不一样的。

假如逻辑我们已经都优化了,但还是慢,那就得考虑水平扩容了,增加Topic的队列数和消费者数量,注意队列数一定要增加,不然新增加的消费者是没东西消费的。一个Topic中,一个队列只会分配给一个消费者。

当然你消费者内部是单线程还是多线程消费那看具体场景。不过要注意上面提高的消息丢失的问题,如果你是将接受到的消息写入内存队列之后,然后就返回响应给Broker,然后多线程向内存队列消费消息,假设此时消费者宕机了,内存队列里面还未消费的消息也就丢了

7、k8s的设计理念,源码是否看过,谈一谈这样架构的好处

8、程序计数器是如何工作的

9、volatile是干啥的?其中线

10、结合类加载和jvm内存模型说一下整个过程

11、了解那些数据库的索引数据结构?分别说说有什么好处?

12、微服务拆分的原则?优缺点?

13、启动三个线程实现顺序打印abc

14、动态代理的原理

15、容器了解多少?为什么k8s的设计里有pod,而不是直接用容器?

16、高并发场景下,有10台机器正在工作,其中有一台机器重启之后cpu load特别大,请从各个角度分析一下该现象出现的原因

17、如何用AQS实现一个锁

阿里-新零售-Java

阿里巴巴一面(55分钟)

先介绍一下自己吧

说一下自己的优缺点

具体讲一下之前做过的项目

你觉得项目里给里最大的挑战是什么?

Hashmap为什么不用平衡树?

AQS知道吗?知道哪一些呢?讲一讲。

CLH同步队列是怎么实现非公平和公平的?

ReetrantLock和synchronized的区别

讲一下JVM的内存结构

JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计JVM的堆的线程安全的?

讲一下redis的数据结构

redis缓存同步问题

讲一讲MySQL的索引结构

你有什么问题要问我吗?

阿里巴巴二面(45分钟)

根据项目问了一些细节问题

说一下HashMap的数据结构

红黑树和AVL树有什么区别?

如何才能得到一个线程安全的HashMap?

讲一下JVM常用垃圾回收期

redis分布式锁

再描述一下你之前的项目吧

你觉得这个项目的亮点在哪里呢?

你设计的数据库遵循的范式?

你有没有问题?

阿里巴巴三面(50分钟)

又聊项目

在项目中,并发量大的情况下,如何才能够保证数据的一致性?

elasticsearch为什么检索快,它的底层数据结构是怎么样的?

JVM内存模型

netty应用在哪些中间件和框架中呢?

线程池的参数

讲一下B树和B+树的区别

为什么要用redis做缓存?

了解Springboot吗?那讲一下Springboot的启动流程吧

如何解决bean的循环依赖问题?

Java有哪些队列?

讲一讲Spring和Springboot的区别

最近看了什么书?为什么?

你平时是怎么学习Java的呢?

阿里-阿里口碑-Java

阿里巴巴一面(38分钟)- 自我介绍

介绍项目, 具体一点

讲一下Redis分布式锁的实现

HashMap了解么吗?说一下put方法过程

HashMap是不是线程安全?

ConcurrentHashMap如何保证线程安全?

数据库索引了解吗?讲一下

常见排序算法

TCP三次握手,四次挥手。

深入问了乐观锁,悲观锁及其实现。

阿里巴巴二面(45分钟)

自我介绍+项目介绍

你在项目中担任什么样的角色?

那你觉得你比别人的优势在哪里?你用了哪些别人没有的东西吗?

Java怎么加载类?

linux常用命令有哪些?

Spring的IOC, AOP。

讲一下ORM框架Hibernate

设计模式了解吗?讲一下

自己实现一个二阶段提交,如何设计?

你还有什么想问的?

阿里巴巴三面(30分钟)

说一下自己做的项目

问了一些项目相关的问题

wait()和sleep()的区别

原子变量的实现原理

CAS的问题,讲一下解决方案。

有没有更好的计数器解决策略

讲一讲NIO和BIO的区别

Nginx负载均衡时是如何判断某个节点挂掉了?

讲一下redis的数据类型和使用场景

k8s的储存方式是怎样的?

Spring AOP原理是什么?怎么使用?什么是切点,什么是切面?最好是举个例子

算法题:给一堆硬币的array,返回所有的组合

阿里巴巴总监面(34分钟)

算法:给一个set打印出所有子集;多线程从多个文件中读入数据,写到同一个文件中;判断ip是否在给定范围内;打乱一副扑克牌,不能用额外空间,证明为什么是随机的。

Tcp和udp区别

线程池的原理以及各种线程池的应用场景

线程池中使用有限的阻塞队列和无限的阻塞队列的区别

如果你发现你的sql语句始终走另一个索引,但是你希望它走你想要的索引,怎么办?

mysql执行计划

数据库索引为什么用b+树?

你在做sql优化主要从哪几个方面做,用到哪些方法工具?

有没有想问的?

阿里巴巴HR面(23分钟)

自我介绍

平时怎么学习的?

有什么兴趣爱好吗?

怎么看待996?

怎么平衡工作和学习?

有没有什么想问的

阿里-阿里云-Java

一面:

项目介绍

字符串全排列

线程安全

设计题:设计一个微博系统,给了一个比较大的用户量

头条-后端 一面

1.介绍了一下做过的项目架构,和项目实现细节。面试官最近刚做了一个项目,跟我们做的项目一样,聊了比较久

2.看我之前是打acm的,说问道简单的算法题走个流程Orz。

题:一个先逆序再正序的数组,求最小值

5 4 3 2 1 2 3 返回 1

解法:二分

3.看我项目里有一个进程内缓存的项目,聊了一下,然后又问了concurrentmap和hashmap区别,concurrentmap的分段锁,最多支持多少个segment

二面

1.聊项目,聊了比较久

2.问了一到算法题,二叉树按中序遍历的方式转换为链表

解法:中序遍历,遍历的时候修改树节点的前后指针。需要用到一个辅助节点pre和一个节点记录链表头

三面

1.问了一个开放性题目,设计一个方案,根据用户地点返回附近的餐馆

按城市划分,将城市划分为网格,每个网格有不同的餐馆,先定位到用户在哪个网格,再获取周围网格中的餐馆

2.算法题:将一个字符串小数约分为分数,且分子分母约分过,需要考虑无限循环小数

1.15(3) 表示1.153333333333循环

解法:分三部分,整数部分,非循环的小数和循环的小数

非循环部分的小数变分数为x/10^n

循环部分小数变分数为y/10n(10m-1)

如上述例子中循环部分为 3/ 100*9

整数部分直接加上分数

约分使用欧几里得算分子分母最大公约数,再除一下即可

二叉搜索数第k大元素。

二叉树按层遍历。

堆排序。

topk。

两个set取交集

链表是否有环。如何找到入环节点

头条-后端

一面:

1.项目。

2.Reentranlock 与synchronized区别。 各自的底层实现

3.事务隔离级别。 innodb的默认隔离级别如何避免幻读?

\5. mvcc。快照读 当前读。

\6. jvm cms的步骤。 缺点。

\7. 有大量full gc如何排查?

\8. 堆 gc频次正常 时间正常。 出现内存泄漏是什么问题? 如何排查堆外内存? 你见过哪里用堆外内存?

\9. netty eventloop 大概做什么? io事件 读写事件。任务事件

\10. 任务事件中 如何保障多线程情况下线程安全的进行上层的writeAndFlush? mpsc队列

4.实现一个 LRU ? get为o(1)复杂度

二面。

1项目中 难点。讲两个

\2. 如何实现一个可靠传输? 序列号。校验和 重传 ack 滑动窗口。拥塞控制。等

\3. mysql架构。 sql经过解析器之后得到的解析树 如何转换成优化器的执行计划?如何选择?

\4. b+tree结构?索引的页分裂?innodb做了哪些避免页分裂的努力?都是从节点中间记录分裂吗?

\5. 辅助索引 一个范围查询。 如果当前值不在索引中。如何查处符合条件的记录的?

\6. innodb的特性? 自适应hash。聚簇索引。 insert buffer?

\7. 可靠传输一定需要建立连接吗?

\8. 双向链表消除相处重复的? 消除之后新链接在一起的仍相同继续删除。算法题 手写

\9. 数组中 指定元素值的最小下标。 如何最优?二分查找中继续二分查找 手写

\10. 红黑树特性?二叉搜索数第k大元素。 然后继续topk算法。 除了小跟堆之外。问还有别的呢? 基于快排思想的top k手写。

三面。

1.项目

2.kafka的传递保证

\3. 一次遍历打印出 二叉树的最大深度和最大宽度 (同层中节点个数最大值)

\4. 如何删除倒数第k节点

\5. 聊以后发展

头条-后端

一面:

\1. 项目介绍 20分钟

\2. mysql索引 优缺点 底层实现原理

\3. mysql的优化。 不限于sql优化

\4. mysql join原理

\5. tcp协议 如何保障可靠传输

\6. MTU是什么? MSL呢

\7. redis zset实现原理

\8. rdb 和 aof区别

\9. redis的主从同步原理

\10. 二叉树的后序遍历

\11. 二叉树按层打印

\12. 括号的有效组合

二面

\1. 项目介绍

\2. tcp udp区别。头部字节有哪些。多少字节

\3. 通过域名是如何从外网请求到你公司内网服务器的? 详细讲解一下

\4. 路由算法

\5. 当前路由到某一个节点,如何查找选择的下一个节点?

\6. ip 分几类? 如何划分的?

\7. tcptrace 请求一个目标ip。会把路由的所有节点ip打印出。是如何做到的?

\8. 最长回文子字符串

\9. 反转链表 递归。非递归

23

面试记录-松鼠Ai米学

时间:20221214

base:上海

形式:电话面试

岗位:Golang后端

介绍项目,遇到什么困难,用到什么技术。前后端是不是都是你做的

Gin和Echo看到你都用过,有什么区别

Go用了多久,Go你这块熟吗(答,不太熟)

Go的协程,GMP了解吗(后面这个GMP当时没听清),什么是协程(答,比线程更小的一个单位。这种问题好难回答,一方面是理解不深入,另一方面太抽象了。平时接触不到)

我说Go对后端并发支持的好,面试官问了解为什么支持的好吗(那我当然不知道)

课业重不重,实习时间

Python熟吗(答Python比Go熟点,然后后面就翻车了)

说一下Python中列表和元组的区别(懵了,没怎么用过元组),面试官说这是很基础的问题

大小区别:

a.sizeof() # 8024

b.sizeof() # 9088

tuples具有immutable的属性,意味着tuples内的元素一旦建立就无法更改、删除、排序,然而我们还是可以向list和tuples添加数据的。

由于list是可改的,所以他是不能作为字典数据类型的键的,而tuple却是可以的

tuple是不可更改的数据类型,这也意味着你不能去删除tuple中的元素或者是对tuple进行排序,然而,你既可以往list里去增加一个新的元素,也可以往tuple里去增加一个新的元素,从表面上看,似乎和tuple不能被更改的定义不相符,事实上,python只是替你重新创建了一个新的tuple而已,可以通过id方法来查看,id方法返回对象在内存中的地址,tuple a和list b在添加完元素之后,tuple a的id已经发生了改变,也即意味着这时的tuple a事实上已经并非原先创建时的那个tuple a了,而针对list b来说,list b在添加新元素前后的id是一样的。总之就是,b还是那个b,a已经不是那个a了:( )

除了上述区别和用法以外,tuples和list还有一个区别是tuples通常是存储异质元素(heterogeneous)的数据结构,而list通常存储同质元素(homogeneous)的数据结构。 详细解释就是:

Tuples 通常存储的是一连串的不同种类的事务,但是我们将他们当做一个耦合的整体来处理(比如我们可以把键盘、鼠标、显示器、主机存储在一个tuples里,这些元素都是不同种类的元素,但是放在一起处理时可当作一个计算机硬件系统元素来看待,而一旦定义了这个系统,就不能随意更改已有的元素)

List 通常存储的是一连串的相同种类的事务,所以我们可以把list中的每个元素都当做一个独立的个体来处理(也就是mutable的思想,例如list中存储了一些随机整数,他们拥有相同的属性(都是整数),但各自独立(没有任何相关性),我们可以单独的更改list中任何元素而不影响整体的数据结构)

字典

闭包(答函数里面定义函数)

如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

闭包作用

  • 装饰器!!!装饰器是做什么的??其中一个应用就是,我们工作中写了一个登录功能,我们想统计这个功能执行花了多长时间,我们可以用装饰器装饰这个登录模块,装饰器帮我们完成登录函数执行之前和之后取时间。
  • 面向对象!!!经历了上面的分析,我们发现外函数的临时变量送给了内函数。大家回想一下类对象的情况,对象有好多类似的属性和方法,所以我们创建类,用类创建出来的对象都具有相同的属性方法。闭包也是实现面向对象的方法之一。在python当中虽然我们不这样用,在其他编程语言入比如JavaScript中,经常用闭包来实现面向对象编程。
  • 实现单利模式!! 其实这也是装饰器的应用。单利模式毕竟比较高大,,需要有一定项目经验才能理解单利模式到底是干啥用的,我们就不探讨了。

is和==区别(没看过,说可能是值传递和参数传递)

官方文档中说 is 表示的是对象标示符(object identity),而 == 表示的是相等(equality)

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同

只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False

is 的作用是用来检查对象的标示符是否一致,也就是比较两个对象在内存中的地址是否一样,而 == 是用来检查两个对象是否相等。我们在检查 a is b 的时候,其实相当于检查 id(a) == id(b)。而检查 a == b 的时候,实际是调用了对象 a 的 eq() 方法,a == b 相当于 a.eq(b)。一般情况下,如果 a is b 返回True的话,即 a 和 b 指向同一块内存地址的话,a == b 也返回True,即 a 和 b 的值也相等。

MySQL怎么优化一条语句

MySQL int bigint 占几个字节(不会)

tinyint 1 Byte

smallint 2 Byte

mediumint 3 Byte

int 4 Byte

bigint 8 Byte

float 4 Byte

double 8 Byte

decimal是MySQL中存在的精准数据类型,语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

Linux了解哪些命令

其他方面有什么要求,工资之类

怎么看待加班

总结:关于语言的问题都不会,看八股也没看这些,平时也是实用主义,能跑的就没细究。结合上次的面试经历,问Go里int64的范围,也是一脸懵。还有常见的算法问题。就是两方面,语言相关的常见面试问题和算法相关的常见面试问题,这两方面一问就虚。之前背八股只背了计算机网络、操作系统、数据库。

24

实习项目…

什么时候开始实习

对语言有要求吗?

可达性分析

http和https区别

https加密过程

mysql事务

悲观锁和乐观锁区别

乐观锁有什么实现方式

MYSQL事务崩溃恢复

undolog和redolog

超买问题(库存不超售)

spring里面用到的设计模式

项目中要到的设计模式

微服务的理解

负载均衡算法

nginx

线程安全与不安全

怎么保证线程安全

数据库实践(说了要求,叫我先设计表及表的字段,设计sql,在sql提出问题是否能完全解决)

算法…

25

字节懂车帝Java面试

一、12.2一面(50min)

0、自我介绍

1、说一个跟后端有关的项目

2、(由项目引出)什么是里式替换原则?在实践的时候是怎么做的?

3、(继续引出)什么是单例模式?

4、手写单例模式,这里的new Singleton真的不会多次实例化吗?并发情况下呢?(这里指令重排没有说清楚)

5、(由并发引出)多个线程访问一个变量会有什么问题?

6、怎么解决这些问题?

7、volatile能完全解决吗?该怎么完全解决?

8、当一个变量用synchronized标识之后,会经过哪些步骤?

9、JVM的内存模型

10、GC主要是处理哪些部分?

11、那GC是如何处理的?有哪些策略?简单点说一下

12、标记-清除算法在清除的过程中会停顿吗?

13、网页上输入一个网址,进行HTTP连接,到后端处理,这其中的数据流是什么样的?

14、TCP如何保证传输的可靠性?

15、用过MySQL吗?MySQL的事务做到了什么?

16、隔离级别有哪些?

17、可重复读的隔离级别下能否避免幻读?用什么方式可以避免幻读?

18、算法题:一个包含2n+1个数的正数有序实数数列,有一个实数出现一次,其他实数都出现两次,找出那个出现一次的数。(剑指 Offer II 070. 排序数组中只出现一次的数字,最优解法没撸出来……)

​ 自己写的题解:剑指 Offer II 070(力扣540):排序数组中只出现一次的数字(Java二分查找)

19、反问

总结:一面的面试官看上去很有经验,说话很温柔,也很有耐心,会明确地告诉我某一个点他想听详细说明还是简单概括;算法也会耐心地听我说复杂度的优化。

26

字节后端日常面经(二面挂)

11.22一面过11.23二面挂

上一个部门寄了,给我换了个流程唉

一面

面试官问我,三面面评这么好为啥不继续了,我纳闷了,不是你们挂的我吗

介绍项目,点赞是怎么考量的,热度点赞问题怎么解决,具体怎么实现。

怎么防止用户刷点赞接口等等,一直拉扯

八股:

redis缓存一致性?

缓存一致性从哪些方面考量,读写,每个步骤详细说有哪些问题。

穿透,雪崩,击穿

对高频点赞请求做了哪些处理?

从请求侧做了什么事情,在存储侧做了哪些事情?应该分为几个阶段,每个阶段怎么去操作?

如果数据库压力过大咋办?

数据库建表主键怎么建立的?

查询字段做了哪些优化?

事务的隔离级别,每个大概说一下?

mysql索引,巴拉巴拉

聚簇索引和非聚簇索引?

最左匹配原则?a,b,c问题

基本数据结构

红黑树的特点?

树的遍历?

图的遍历?

深度优先搜索自己实现以下?用什么数据结构实现。

排序算法,堆排序介绍,时间复杂度和核心思想

介绍java多线程,线程池参数,都有什么用?

核心线程数3个,最大线程数5个,有7个线程过来,具体流程

有哪几种常用的线程池?

线程处于空闲可以先回收吗?掰扯掰扯

springboot自动装载?

有哪些核心注解?

刷到题,平时都刷啥比较多,我说mid和easy多一点,他说那就不给你出hard了,hhh,《无重复字符的最长字串》

刚结束2分钟hr约二面

二面

  1. 算法题,多叉树的所有子节点之和
  2. java内存模型自己怎么理解,不许说官话
  3. 线程安全是怎么实现的
  4. 锁机制是怎么实现的,怎么就能保证数据安全
  5. 自己实现多线程安全性,怎么实现
  6. 自己实现总线,怎么实现?
  7. CAS怎么理解?
  8. 管道自己实现怎么实现?
  9. 整个管道(链表实现)放在哪?(抛弃以前所有的知识自己想)
  10. 海量数据建立链表太大怎么解决?
  11. 换做树怎么解决?
  12. 用淘汰策略怎么淘汰?(一直在说抛开概念,自己实现,巴拉巴拉,人麻啦)
  13. 为什么要有内存虚拟化?
  14. 程序的动态加载说一下。
  15. 当前关注哪些技术?
  16. 反问,看重候选人哪些能力

1.技术深度

2.学习能力

3.代码能力

面试官不让我说八股,让我自己想,自己来做怎么实现,只要我提到一点八股的概念性词汇就会被打断,寄了寄了,算法还是自己出的没写出来,节子再见。

27

字节后端24届实习 三面凉经(做过没A,这是我这辈子的耻辱)

本来以为三面也会像二面一样场景题轰炸,真没想到全是常规八股,还考一些细节八股,算法还考一道hard(做过但没a,这是我一辈子的耻辱),说实话真不想写这个面经

本来以为会追问的问题,简单回答一遍,等着他追问,他却不追问,直接切换另一个问题?本意就是让我自己拓展 ,下次吸收经验!一直讲到喊停为止(其实是我了解的不太深哈哈哈哈哈 不太敢造次)

这次就当做是一场教训,下次一定会面的更好!

1、自我介绍

2、你自我介绍的技能中,你比较熟悉哪些?(mysql,redis,rpc)

mysql

1、对于mysql,你有什么比较熟悉的地方?(索引机制、日志、锁机制)

2、说一说你对mysql索引的理解

3、b+树有什么缺点?

4、还认识其他别的索引吗?(?问完就换了个问题????我还以为会追问,没想到他本意是让我拓展是吧?)

4、刚才你说到了存储引擎,你知道mysql有什么存储引擎吗?有什么区别

5、说一说mysql常用的日志

redis

1、对redis的哪些数据结构比较熟悉?(又忘了拓展)

2、知道redis怎么搭集群吗?

3、对redis还有什么其他的了解?(持久化机制、日志、数据结构的应用)

4、那就谈一谈redis的持久化机制

RPC

1、RPC协议主要是用来做什么的?

2、详细说一说你的传输协议和序列化协议,用来做什么的,用了什么

3、RPC框架主要是用来做什么的?

估计是时间还没到,想再问一个方面,问我还熟悉哪些,我就说计网

计网

1、你对计网主要了解一些什么?(TCP/IP、HTTP、整体的网络模型)

2、那你说说在同一个局域网内是怎么通信的,用什么通信?

3、谈一谈ARP

4、你刚才说到了路由器,那你了解路由协议吗?路由协议做了什么

5、你说到了OSPF,那谈一谈OSPF(没复习到啊md,祸从嘴出)

6、你了解HTTP吗?(了解。好吧又让我自觉地拓展?又换问题是吧)

7、504状态码代表什么、403、302(真不记得了,我只记得404、401、200、301、100,直接记混了)

算法题

76. 最小覆盖子串 (同类题)
49. 字母异位词分组 (比较相近的原题)

变式:改了一下条件,要求的子串长度与原串长度一模一样,返回第一个满足的子串起始下标

这个条件改变是真的tm杂种陷阱,让我忘记了滑动窗口的特性,直接把窗口大小固定死了,但实际上和原题做法一模一样,加一个特判就行

好吧,但我当时没想到啊,我直接就大小为m的滑动窗口加哈希暴力了,O(n*m),让我优化算法,但我也优化不了啊,已经被j8题目条件限制了 思维定性了,忘了本质了,最后只是剪了一下支,真想不到怎么优化了

反问环节

1、我问他我的表现怎么样?(他直接当谜语人,不方便透露喔?)

2、这场面试主要考的是基础吗?我还以为会考场景设计之类的 上一次面试也考了很多。 他回答 确实是的,因为你们只是实习生 所以要求没有这么高。 (?那二面的时候是什么意思)

说实话,在我OSPF没回答出来、状态码全记歪了、算法题没优化出最优做法的时候我就已经寄了,看着他严肃的脸也不想问些其他什么问题了,我直接开摆了

也不期望能过了,现在想一想其实算法题不算难,可能面试官是不想为难我的,但可惜我没做出来哈哈哈哈哈

希望其他部门能捞一捞吧

28

字节跳动-番茄小说后端一面二面凉经

番茄小说,base上海,Golang

12.2约面试

12.6一面

介绍项目,图片怎么存储(不知道问这个问题的意图是什么),密码是否明文传递,如果要加密应该怎么做,介绍从注册到登录的全过程

浏览器输入URL后发生什么

TCP、UDP区别

TCP如何保证顺序;丢失、乱序后怎么处理,如果先收到5,后收到4怎么做

数据库事务

MySQL怎么实现一个事务,通过什么机制。应该是想问怎么保证要么都成功要么都失败

快排时间复杂度,极端情况是什么,怎么改进

git多分支开发流程,命令

git冲突怎么处理

merge和rebase的区别

代码题:将一个中文数字转成int,例如“六千四百八十五万七千四百零八”,不超过一亿。

写了40分钟也没写出来,丢人。没办法调试很难受,下来想了想,边界条件也不容易考虑完全。

总共一个小时,20分钟问题,40分钟代码。面完半小时打电话约二面

12.7二面

也是20分钟问题,40分钟代码

Golang里的int64最大最小(好丢人,这都不知道。主要是没细看过,拿不准。这类型明摆着跟2的64次方有关,再考虑下符号位正负。总之就是很丢人。以后回答问题先不要说不会、不了解)

进程与线程的区别

进程之间如何通信,同一台机器哪种方式最快(不知道)

局部性原理(懵了。下去查了一下,确实学过,但是太久没遇到过这个词了)

说几种排序算法,稳定性?

k个有序数组合并,答两两合并,问复杂度。又问有没有别的方式,没想起来。(下去查了一下,想起来算法课学过,呜呜呜)

无序数组求前k大,答小顶堆,问复杂度,问有没有更好的方式(真的有吗?)

MySQL一条查询语句执行过程(没理解问题,答了一堆where having groupby之类的)

幻读,Innodb怎么解决的

代码题:leetcode 213. 打家劫舍 II

另一道是字符串形式的数字的乘法,数字位数特别长的意思。“123” * “321”

今天上午(12.8)收到拒信,哭的好大声。本人的第一次面试就这么结束了。

一些教训:算法课学过的东西得再复习复习了,只背八股不太行

之前小红书打电话来问我,可能因为我说到岗时间时犹豫了,然后就没再联系我。以后再遇到,问实习时长就说六个月,问什么时候到岗就说随时到。不然面都不面你。

29

一面

时间:11.15–50分钟

  1. 自我介绍
  2. TCP三次握手
  3. 拥塞控制
  4. MyISAM和InnoDB区别
  5. B+树和B树的区别
  6. TCP和UDP的区别
  7. Redis用过么
  8. 简单说一下链表的数据结构
  9. 如何删除倒数第n个结点
  10. C语言和C++的各自特点
  11. malloc和free与new和delete的异同
  12. Linux间进程间通讯方式
  13. MQ平时用过么
  14. 介绍项目
  15. 介绍一下IO多路复用
  16. 日志系统如何记录服务运行状态
  17. 用锁的性能会不会降低
  18. 什么样的日志要求高性能、高并发、高安全
  19. 什么样的场景会要求日志的顺序
  20. SQL题——找出薪酬最高的所有人
  21. 算法题——最长回文字串

小结

拥塞控制没听说过,闲扯了一点,数据库部分全G,最后数据结构和语言基础讲的不错,SQL没写对,算法A了。第二天打电话过了,感觉后面答得还行,挽回了数据库的问题。

二面

时间:11.21–40分钟

  1. 介绍观察者模式
  2. 多线程和多进程的区别
  3. 进程间切换和线程间切换有什么区别
  4. 线程间切换会出现死锁么
  5. 还了解其他的设计模式么
  6. 在C++当中用过其他设计模式么
  7. 构造函数可以是虚函数么,为什么。
  8. C++中为什么要有this指针
  9. 哪些地方会用到this指针
  10. 内联函数用来解决什么问题
  11. 内联函数和宏定义的区别
  12. 重载和重写的区别
  13. 算法题——划分字母区间

小结

背了数据库、Redis、MQ都没考。。。语言基础答的感觉还行。算法没写过,想了个暴力解,面试官说可以,最后A了。这面感觉比第一面有把握多了,第二天约了三面。

三面

时间:11.25–40分钟 这面不知道是hr面还是技术面,又问技术又问竞赛、成绩啥的

  1. 自我介绍
  2. 你这个蓝桥杯是干啥的
  3. 这个互联网+的比赛做的什么
  4. 介绍一下你这个互联网+的项目
  5. 里面用到了哪些技术
  6. 多人在线功能是怎么实现的
  7. 场景题:怎么设计一个房间类,要求实现多个用户在一个房间
  8. 介绍一下多路IO复用
  9. 算法题——返回倒数第K个链表

小结

中间有点问题没记上,前面基本就是聊天,问了问比赛的项目,还出了几个场景题,最后算法很简单。但是在飞书上写链表很麻烦,我自己写了个Node类,结果相连的时候报内存泄露的问题。输出结果是对的,但是飞书编辑器底下有问题,不知道是编辑器检查的问题还是哪写错了,最后也没改好。 回来在dev上敲了一遍发现没错,可能是飞书的检查更严格。。。

总结

三面过了好久都没反馈,以为三面最后表现不好挂了。后来hr打了个电话说面试都过了,但无hc了,G。 总体感觉二面>三面>一面

30

字节后端实习一面
实习项目…

http长连接

http请求包和响应包

请求包和响应包中空白行的作用

状态码(501,502,503,504)

304与协商缓存和强制缓存

b和d建立联合索引,b>1 and d=1,索引怎么走

聚簇和非聚簇

建立索引的方式

redis用过哪些数据结构

实习项目里面怎么用的redis

用户最近的十条访问记录(怎么用redis实现)

为什么redis高性能

消息队列和RPC区别

40亿个qq号,每个32位,怎么去重(我说了布隆过滤器,但是要求我再说一个)

算法…

31

字节后端实习 懂车帝 一面面经
先自我介绍,问我可以实习多久

首先说项目,但是我的项目都是深度学习的项目,估计面试官也不太懂

准备的数据结构和操作系统题都没问

计算机网络了解吗

tcp的拥塞避免(详细)

https了解吗

用户输入一个网页到最终显示的全过程

如果这个过程出现了问题,你需要如何排查到是哪里的问题

MySQL了解吗

事务是什么

主键索引和唯一索引的区别

b树和b+树 为什么用b+树

两道算法题

1.给出一个单向链表,要求在只有一次遍历下,求出倒数第k个节点,类似面试题 02.02. 返回倒数第 k 个节点

2.给出一个数字n,给出一个组合如【1,2,3】,求由该组合组成的小于n的最大数

和这道题很像,区别就是只找出最大的那个数 902. 最大为 N 的数字组合

面试官还是比较不错的,但是两道题都没做出来,有点紧张。只说了一下思路,估计凉了

更新--------------------------------------------------------------------

一面过了

二面

上来讲比赛和项目

手撕算法78. 子集

内存页面置换算法

在kill掉一个进程之后 操作系统做了什么工作

智商题 25匹马找出最快的5匹

感觉凉透了 算法也没写出来 智商题也错了 八股也不会,寄!

更新--------------------------------------------------------------------

二面挂了

32

字节后端24届实习 二面面经(高质量面试,但居然过了?)
字节二面(110+min 高质量面试)
说实话,这次面的问题真的很难,很多问题我都是要提醒一下才能回答上来,场景题很多、还有用场景结合八股的

有点措不及防,答的稀烂 但过了我是不太理解的 ,可能发面经真的有用,来还愿了(已约三面)

1、自我介绍
2、介绍一下做的比较好的项目(这里我介绍了RPC,被问题狂烂轰炸)
RPC项目的问题
2.1 问我RPC中的线程模型,比如说主线程、工作线程,这些我是怎么设计的(一个线程池用于IO多路复用监听连接(netty自带),一个线程池用于处理连接的事件循环(netty自带)) … 这里忘了说设置了一个特定的线程池处理请求的实际逻辑,妈的寄了
2.2 又扯到了线程池的参数设置(常规八股)
2.3 我看你单机多实例的TPS反而比单机单实例的还低,有思考过为什么吗?(我觉得是因为单机的性能有限制,单实例就已经打满了,再多实例就会多出额外的没必要的开销)
2.4 你说单实例被打满,那再按照你的设计细分一下被打满的场景(如何被打满?),在这些场景下的线程池又要分别如何设置(我听不懂题目,他提醒我,从请求的处理逻辑过于简单和过于复杂两方面进行考虑)
2.5 为什么采用RPC,而不是采用HTTP(常规八股,可能面试官在想其他问题 丢我一个八股)
2.6 我看你使用了nacos作为服务注册中心,那么使用nacos有什么好处呢?(我说我没了解太多,只是用来当注册中心的,所以换了个问题,哈哈 其实只是nacos因为能给定服务实例权重,方便我实现随机权重算法哈哈哈哈哈)
2.7 你使用的负载均衡算法(随机权重、一致性哈希),是在哪里负载均衡的(客户端还是服务端)?
2.8 随机权重算法的使用场景(我答了有权重)、一致性哈希的使用场景(答了高可用,防止请求打不到实例上;哎我这里的理解有错,应该是防止请求打到不同实例上)
2.9 那么有权重的场景都使用随机权重,其他场景都使用一致性哈希吗?随机权重就会出现请求打不到实例上的问题吗?(我觉得是不会的)
2.10 那么我给定你一个场景,各个实例的状态都是相同的(也就是说他们的负载能力、剩余内存大小都是相同的、打在不同实例上的结果也是相同的,他们之间没有任何区别),那么你还会接着使用一致性哈希算法吗?(这个问题其实我当时有点懵,实例的状态相同和我一致性哈希有什么关系,我是为了高可用性啊;最后他说不是什么场景都能用一致性哈希的… 我就顺带回答一句 确实 计算哈希的开销会比随机权重更大)
复盘之后发现,是我对于一致性哈希的使用场景理解不到位…所以导致我对面试官的问题都理解得不清晰

2.10 随机权重算法具体如何实现?
2.11 如果带权重的话,要如何实现一致性哈希?
(我这里真的答得烂透了…没有实际地区分它们各自的适用场景)
复盘时仔细总结了一下它们各自的使用场景

这里需要实际清楚一致性哈希的使用场景,是为了保证信息相同的请求能够尽量地打到同一个实例上(因为如果请求在实例中保存数据,那实例的不同就会造成取不到这些数据导致错误,这时候就需要数据迁移)(这里没有考虑服务实例之间的数据一致性,有可能它们会进行数据同步也不一定),在集群扩容缩容时,一致性哈希可以减少数据的迁移量,只有一部分的请求会打到不同的实例上。所以一致性哈希适用于需要使用节点存储数据(打到不同实例上会出现不同结果)、并且节点个数会动态变化的场景。

而随机权重算法的使用场景,则适用于不同的服务实例具有不同的负载能力、处理优先级的场景,每个服务实例具有不同的权重(在默认权重下就退化成朴素的随机算法了),请求打在权重较高的实例上的概率会更高。但是随机权重算法没有考虑到数据的迁移问题,所以应该适用于 不需要使用节点存储数据,打在哪个实例上都没有区别 得到的结果都是相同的,但是需要考虑各个实例具有不同负载能力的场景。

学生论坛项目的问题
2.12 我看你的另一个项目 学生论坛,里面有说到两个定时任务(1、定期批量地将点赞关注数据持久化到mysql中;2、定期刷新帖子的热度,并刷新热帖排行),那么为什么这两个任务要定期呢?批量又是怎么个批量法呢?(常规)
2.13 你的帖子内容,具体是如何存放的呢?是直接用mysql存的吗?(提到了使用es,倒排索引,对比mysql的优势)
接下来就有点高潮了,直接在这个基础上加了场景题(可能因为我提到了es,借它之手来问我,实际上与es毫无关系)
场景题:
1、那就说说es,在使用es的场景下,如果帖子存的太多了,那是不是会导致它的性能下降,这时候你会怎么办?(搭集群)
2、在搭集群的场景下,如果你想要用es通过前缀查询,查询到热度为top10或者top100的帖子,这里不考虑es实际的底层原理(因为他也不懂),就让你想一想要怎么实现?(这里我以为是问是集群是怎么运作的,答了主从架构,在从节点中各自取top100,再交给主节点进行排序,再取出最终的top100)
3、在单机的场景下,你es节点要通过前缀查询,查询到热度top100的帖子,这种算法你会如何设计?会考虑使用什么数据结构?这里要求响应要很快(原本我还以为要考虑字符串匹配的算法、然后再考虑排序的算法;没答上来,他提醒了trie树,但我觉得这种做法会OOM,然后他叫我不考虑内存,在集群架构下可以分摊给别的节点,哎我果然是刷题思维,跟他们这种工作多年相比本质上真的有区别)
4、接着上面那一题,如果使用trie树,在一个帖子被点赞、访问时(也就是它的热度更新时),你会如何维护这个trie树?时间复杂度为多少?
3、计网
3.1 给定你一个场景,发送端和接收端建立了TCP连接,正在传输数据,如果此时接收端进程宕机了(是进程宕机哦),而发送端并不知道,这时候会发生什么样的事情?(一开始回答了保活机制,但被面试官提醒了;然后又回答没有ack 导致发送端阻塞 超时重传;经过提醒才知道原来tcp是由操作系统的协议栈控制的,只要主机没宕掉就仍然会ack…接下来你们自己想咯?)(不过我在看小林coding的时候说 进程崩溃时,内核会自动回收它的资源,所以socket也会被回收,并且发送四次挥手断开连接… 不知道是面试官错了还是小林错了)
场景题又来喽
场景题
1、如果你要基于TCP协议,传输一个大文件,传输的过程中很有可能出现错误 比如说宕机什么的,现在要你设计一个协议去保证这个大文件的传输,那么这个协议你要如何设计,简单的讲一讲?(很经典的一个大文件上传、断点续传)
2、那么发送端要如何知道还有哪些文件段还没发呢?(暗示我的协议缺陷,没有给确认号,但给了不就是类似滑动窗口了?爷不想用滑动窗口,所以还在想别的办法,但他就是想把我拉到滑动窗口)
3、说我想得太复杂了,这不就很类似于滑动窗口吗?(我就是不想用滑动窗口啊!)
4、说一下滑动窗口的执行流程(这才是你的最终目标吧面试官?)
4、Mysql
4.1 了解事务的特性吗(常规八股)
4.2 你刚才说到了原子性、一致性、隔离性,能具体说明一下是怎么一回事吗?举一下实际的例子(转账例子用一辈子)
4.3 刚才说到了隔离性,你知道mysql的最高隔离级别是如何实现的吗?(常规八股)
场景题(结合了操作系统)
1、如果要你来实现mysql的最高隔离级别,你会如何实现呢?具体说一下场景、具体的语句,要分别如何加锁,加什么锁?(仍然用转账来说明,A给B转账,B给A转账)
2、你觉得你刚才说的这种场景会发生死锁问题吗?具体会发生在哪里呢?(转账是有流程的,先当前读自己账户余额,再当前读对方用户余额,再更改账户余额,具体死锁在哪你们自己想)
3、要如何解决这种死锁的情况,在代码中要如何编写?(其实我觉得如果根据mysql的锁机制就一定会死锁,不管顺序如何,只要同时转账就会死锁;最后他让我不考虑mysql的锁机制,只考虑普通的锁,那就是操作系统的经典场景)
这里是我当时对场景没有思考得太清楚,同时开启转账事务的时候,如果当前读加的是读锁,则死锁会发生在更改余额那里;如果当前读加的是写锁,则读的时候就会发生死锁了,本质上还是操作系统的经典死锁问题,(我太笨比了)

5、操作系统
5.1 逻辑地址、虚拟地址、物理地址、线性地址,他们之间分别有什么区别?它们之间是如何转化的?(说实话逻辑地址这个概念实在太模糊了)
应该是没有了,记不起来了,忘了录音

6、算法题
1、检测循环依赖(其实很简单,但没复习拓扑排序,换了道题)
2、将一棵二叉树根据中序遍历的顺序,转化为一个双向链表(左指针 = 链表的前向指针;右指针 = 链表的后向指针)
7、反问环节

33

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9s6ryHLl-1676358600260)(D:\books\image-20230214082809102.png)]

34

字节实习后端一面

实习项目…

linux查看进程

linux查看线程

top命令信息(要求详细)

进程与线程与协程(三个的区别)

线程之间共享哪些信息(页表,全局变量,常量)说我没说完整

跳跃表插入过程(要求详细)

http长连接实现细节(要求详细)

redis的数据结构

bitMap的好处

redis存在高并发问题吗?(不考虑日志同步)

UUID和自增ID各自优缺点(至少说四点)

B+树分层计算问题(默认16KB,通过主键计算)

mysql中null值怎么存放?有什么好处?

算法题。。。。。

35

字节后端24届实习(搞中台的部门) 一面面经

一面(60min)

都是挺基础的问题,发个面经长长人品

自我介绍 1、使用过线程池吗?有什么参数?怎么设置参数?为什么要这样设置?具体场景呢? 2、进程切换具体切换的是什么?线程切换呢? 3、能讲一讲NIO吗?它的非阻塞具体在哪里? 4、了解过AIO吗?讲一讲 5、Netty是用来做什么的?为什么说它高性能?具体讲一下 6、你觉得TCP协议有什么缺陷吗?(应该是一个开放性问题?) 7、Mysql联合索引(a,b,c),查询条件ab,ac,bc,具体哪些使用到了索引?为什么? 8、选一个你最熟悉的方面,我来问你问题(小奖励?) 这里我选的是mysql,问的是:如果在事务提交的过程中宕机了,那么在恢复数据的时候,底层会发生什么? 9、算法题 3. 无重复字符的最长子串 变式:求至多有k个不同字符 10、反问环节

36

字节后端开发实习基础岗一面

时长:70多分钟。
1、自我介绍:因为我是非科班,问了一些为什么要转码。
2、问我还在打dota吗,什么段位?(我简历上写了这个),说自己很菜,现在太忙了,打不了,一年前经常玩。
3、项目介绍
4、你的项目里面用到了redis,具体谈一谈为什么?
5、为什么不用mysql?
6、redis是线程安全的吗?并发环境下,redis跟mysql哪个好?如何去做选择?
7、redis实现点赞功能是线程安全的吗?如何实现的?
8、redis持久化策略?mysql持久化方法?
9、你提到了redo log的日志 relog日志里面写了一些什么内容?用什么方法写的?什么时候写?
10、binlog日志里面写了什么内容,怎么写的,什么时候写有什么用?
11、mysql事务执行过程中,未提交的事物会被持久化吗?
12、redis事务与mysql事务的区别是什么?
13、Linux内核了解过吗?
14、内存是怎么分配的?
15、 redis内存满了怎么办?
16、redis集群如何扩容?如何分片?客户端如何直到分片之后,该去寻找哪一个key。
17、虚拟内存和物理内存?为什么要用虚拟内存技术?
18、算法:最长递增子序列(********300),acm模式,写完之后,面试官问执行流程,口述debug过程。
19、算法提问,你的算法找到的递增序列是唯一的吗?
20、时间复杂度,空间复杂度,为什么要使用二分查找,你说你的算法用了动态规划,是怎么体现的?
21、有什么要问我的?
我的反问:
1、你们部门是主要写golang吗,我技术栈主要是java,会不会有影响,
答:没事可以学
2、问面试表现?
答:没什么特别的感受,觉得还行,还好。
3、问什么时候出结果?
答:以往都是三个工作日,具体要问hr。

后记:一次非常哈人的面试,总结下来就是全程在问数据库,我都怀疑我面的是数据库部门, redis集群的一些东西基本都没答全。
字节面经10次有9次出现的TCP一点没问,准确来说是计网一点没问,而且所有的问题都是从项目出发的,很苦恼唉
问的操作系统的内存分配也没答上来,说了半天,快表慢表和段页式存储,结果面试官说偏了,不过没关系。唯一自信的就是算法题,因为之前做过类似的,其实十分钟就写出来了,但是又花了一点时间假装没写出来,自己思考了一下代码流程和时间复杂度什么的,果然后面面试官追着问这些。
如果通过了更二面吧,发个一面面经攒一波人品。

37

WallTech实习面试

一面:

1.自我介绍

2.ArrayList 底层数据结构

3.ArrayList 扩容机制

4.ArrayList 底层复制

5.hashmap的底层数据结构

6.hashmap底层数组为什么是2的n次方

7.链表和二叉树,二叉树的优势

8.Spring IOC AOP

9.什么是死锁,怎么解决死锁

10.什么是索引,索引一系列

11.你的优势是什么

12.数组倒叙算法

二面:

1.自我介绍

2.优势劣势

3.对公司的了解

4.算法从浅至深

​ 1.数组反转算法,

​ 2.两个方法 空间时间对比

​ 3.单字节双字节

​ 4.单字节数组 反转单词(不允许开辟新的空间) is a book=>book a is

5.String StringBuild StringBuffer

​ 1.区别

​ 2.线程安全

​ 3.效率对比

​ 4.StringBuild在什么情况下与String效率相同

6.关系型数据库与非关系型数据库

38

字节后端研发一面

  1. JAVA源码 HASHMAP底层机制

  2. TCP的细节,怎么建立连接的,拥塞控制,流量控制的区别

  3. MySQL MVCC机制,事务隔离级别,幻读

  4. JVM的垃圾回收,全过程,新生代,老年代,balabala的细节

  5. 进程间通信

  6. .写一道算法题,贪心,应该是leetcode原题

  7. 一个简单的动态规划

39

字节tt直播 后端开发 一面凉经
原本是被HR捞去客户端的,我跟HR说我更偏向后端,于是HR就把我推到这个岗位,面完之后被锁了一个星期多(感觉被坑了)

自己在春招的时候因为自己太菜+过于害怕,所以从来没有投过字节,秋招能够体验一次字节的面试,也算没有遗憾了

60min

自我介绍
讲一下实习吧,可以挑一个你最有印象的模块讲(提到了一些设计模式)
了解设计模式是吧,手写一个单例模式
你这里为什么要加volatile(可见性、重排序,说可见性的时候提到了JMM的内存模型,说到了工作内存)
你说的工作内存是和什么对应起来的?(线程)
Java为什么要这样子做,直接读不行吗(一开始说了线程安全方面,好像面试官不太满意,后来又想到了JVM层面,Java和C++的一些区别)
对多线程也了解是吧,做道题,三个线程循环打印ABC
你有多少种方式做这道题(说了4中,synchronized、ReentrantLock、信号量、while死循环)
你随便挑一种方法做吧
你刚刚也提到了信号量,那你了解Java的信号量是怎么实现的吗(不了解)
会Redis是吧,我们可以把Redis看成是一个很大的哈希表,哈希表肯定会进行扩容和rehash操作,说一下Redis是怎么做的(渐进式哈希)
*假如有一种写少读多的场景,哈希表里面存储着百万级别的数据,但是你很少访问这个哈希表,如果一次rehash操作可能需要几天才能完成,如果是你你怎么优化呢
计算机网络了解吧,说一下DNS解决的问题和查询方式
*DNS劫持有了解吗,你访问百度,有可能因为DNS被污染,结果出来的是度百,那你怎么优化呢(一开始想不出来,面试官提示可以想一下HTTPS)
那聊一下TCP吧,TCP的可靠是怎么实现的呢(三次握手、四次挥手、拥塞控制、超时重传、滑动窗口…)
如果收到多个请求,可不可以只响应一次呢(TCP提供累积确认机制)
TCP是怎么判断一个报文应不应该重传(计时器)
算法题:旋转链表
反问

40

2022抖音支付后端日常实习面经
一面 11.14
先自我介绍,了解项目
StringBuffer和StringBuilder的区别
操作系统,进程和线程的区别
用户态和内核态,如何切换
http和https的区别
TCP四次挥手,还有其中的状态
mysql的事务隔离级别
MVCC+next-key
什么时候需要建立索引
算法题:实现一个具有要求大小带有过期时间的KV cache,满足插入新数据,当cache超过size要求时,从过期数据中随机删除一个,如果没有过期数据,则删除时间最久的数据。
类似于LRU实现,使用双向链表,定义链表节点其中带有Date私有变量

二面 11.16
先自我介绍,了解项目
单例模式
涉及项目细节,如何压测,之后出现什么现象
项目中遇到什么什么难点,技术上的
如何学习新技术
mysql中存储引擎
进程通信方式,具体使用场景
逻辑题:经典赛马问题,从25匹马选出最快的3匹马
算法题:三数之和(LC15)
三面 11.21
三面没有自我介绍环节,上来寒暄了几句,直接八股
操作系统中同步和互斥的区别
mysql中查找过程中如何索引,比较底层的实现机理
如何实现在大数据中例如百度中实现排行榜功能,本来以为是问redis数据库实现,然后交流过程中没有意识到是top K算法,没有答全
算法:合并有序链表,难度不大(LC21)
总结,面试体验非常好,面试官问的问题也很有深度,专业性很强。八股内容还需要多看看,一面和三面中答得不是很全。已经拿到实习offer,提前给大家拜个早年,祝大家新年快乐,offer多多!

#41

凯美瑞德 | Java开发工程师 | 一面,HR面(OC)
前言
11月16号Boss投递->11月18号笔试->11月21号一面

一面 (11月21号,40min左右)
自我介绍

项目(10min)

对简历的第一个项目提问了10min。
实习(10min)

介绍一下实习期间做的最有挑战性的项目?
针对实习项目做了一些提问。
Spring

Spring是什么?
什么是IOC?
什么是AOP?
SpringCloud组件了解哪些?
讲一下SpringBoot启动流程?
讲一下SpringBoot自动配置原理?
集合

线程安全的集合有哪些?线程不安全的呢?
讲一讲ArrayList?
讲一讲LinkedList?
ArrayList和LinkedList的区别?
ConcurrentHashMap和Hashtable的区别?
ConcurrentHashMap如何实现的线程安全?
JDK1.8 中的ConcurrentHashMap的CAS机制体现在哪里?
其他

对金融了解多少?
有没有想法去学习一些金融知识?
反问

部门的业务?
部门的技术栈?
HR面(11月22号)
引流
蚂蚁 奇安信 华为 中兴 阿里 腾讯 百度 蚂蚁 支付宝 滴滴 快手 抖音 字节头条 猝死 应届生 裁员 辞职 年终奖 秋招 春招 校招生 argue 财报 凉 pua 买房 外企 需求 瓜 卷 薪资 北京 上海 深圳 杭州 一线 拼多多 面试 福利 华为 美团 蔚来 大华 同花顺 米哈游 陌陌 探探 度小满笔试 腾讯内推 23校招 面经 滴滴笔试 滴滴 比亚迪。

42

字节跳动|后端开发实习生|一面,二面,HR面 (OC)
前言
不知道是在哪里投递的,可能是在脉脉上一直有字节HR联系投递,就全点击了感兴趣,之后简历过筛,约了11月21号一面。这也是自己第一次面试字节,之前投递了很多次字节实习,简历都被筛了。

一面(11月21号,1h多)
自我介绍

项目

介绍一下自己最熟悉的项目?
项目使用的技术栈?项目的微服务是怎么划分的?
项目的签到功能是怎么实现的?
项目的搜索附近的人功能是怎么实现的?
Java基础

final、finally、finalize的区别?
异常有哪些分类?
Error 和 Exception都是谁的子类?
JUC

线程和进程有什么区别?
有多少种实现线程的方法?
ThreadLocal是什么?
ThreadLocal的实现原理?
使用ThreadLocal有什么问题吗?如何解决?
JVM

讲一下JVM内存结构?
垃圾回收算法了解多少?
MySQL

MySQL 支持哪些存储引擎?
MyISAM 和 InnoDB 的区别有哪些?
聚簇索引是什么?
非聚簇索引是什么?
使用非聚簇索引如何查找数据?
建立联合索引(a,b,c),where c = 5是否会用到索引?为什么?
where b =5 是否一定会命中索引?(索引失效场景)
什么是数据库事务?事务的作用是什么?
事务具有的四个特征?
MySQL 默认隔离级别?
Redis

单线程的Redis的QPS是多少?
单线程的Redis为什么这么快?
Redis的持久化机制?
Redis切片集群?数据和实例之间的如何进行映射?
Redis扩容之后,哈希槽的位置是否发生变化?
Redis缓存和数据库不一致解决方法?
设计模式

了解哪些设计模式?
单例模式有几种实现方式?
单例模式最常用的实现方式是哪种?为什么?
数据结构

讲一下冒泡排序和快速排序的区别,从平均时间,最好,最好,稳定性上来说?
算法

LeetCode 543. 二叉树的直径
反问

部门的业务?
部门的技术栈?后序的面试流程?(被告知一面是没有问题的,二面等后序通知)

二面(11月23日,45min左右)
自我介绍

实习经历(20min)

介绍一下实习期间做的项目?
对实习项目做了提问。
Redis

对redis的数据结构是否熟悉?
讲一下Sorted set的底层数据结构实现?
什么是缓存穿透?如何解决?
什么是缓存击穿?如何解决?
什么是缓存雪崩?如何解决?
什么是缓存预热?如何解决?
Redis如何实现分布式锁?
MySQL

什么是回表?
回表记录越多好吗?(回表的代价)
性别字段要建立索引吗?为什么?
什么是区分度?
MySQL查看字段区分度的命令?
MySQL主从复制流程和原理?
MySQL如何查看查询是否用到了索引?
type 列的最好,最好级别?都代表了什么意思?
计网

说说OSI七层模型?
用户输入网址到显示对应页面的全过程?
DNS 的解析过程?
HTTP有多少版本?
HTTP/1.1和HTTP/2.0的主要区别是什么?
目前使用最广泛的是哪个HTTP版本?
什么是幂等?幂等方法了解哪些?
除了Get方法之外还了解其他幂等方法吗?
一个TCP连接可以发送多少次HTTP请求?
算法

LeetCode 15. 三数之和 (带输入输出)
反问

是否要学习大数据相关知识?
之后的面试流程?
HR面(11月28日,15min)
觉得自己前面的2轮面试表现的怎么样?哪里发挥的好?哪里发挥的不好?
未来想从事哪一行业?
什么时候可以来实习?
可以实习多长时间?
平时都是怎么学习的?
介绍一下实习期间主要做的项目?
实习期间遇到的最大困难是什么?怎么解决的?
实习给你带来了哪些成长?
如果你可以来实习,你对自己有哪些规划吗?
你有什么想问我的吗?
引流:
蚂蚁 奇安信 华为 中兴 阿里 腾讯 百度 蚂蚁 支付宝 滴滴 快手 抖音 字节头条 猝死 应届生 裁员 辞职 年终奖 秋招 春招 校招生 argue 财报 凉 pua 买房 外企 需求 瓜 卷 薪资 北京 上海 深圳 杭州 一线 拼多多 面试 福利 华为 美团 蔚来 大华 同花顺 米哈游 陌陌 探探 度小满笔试 腾讯内推 23校招 面经 滴滴笔试 滴滴 比亚迪。

#43

11.16 字节后端java实习一面
部门: 新业务部门

内容:

自我介绍

项目介绍

单体和多体架构区别

es和mysql区别

对垃圾回收的了解(自我发挥)

死锁的四个条件和避免死锁条件

算法题:

一棵二叉树, 将其中序遍历转成双链表的形式, 只可以使用树中结点的左右儿子指针, 不可以开新空间

#44

字节跳动|抖音电商平台治理|后端日常实习生|三面面经
项目相关:能简单介绍一下项目“xxxx平台”是做什么的吗,“xx生成”是使用人工智能算法吗,人工智能有可能不准啊你怎么提高正确率,算法调优是你在做吗,能讲下整套系统的架构、每个组件有什么作用吗,授权认证不是在网关里做的吗,能讲下 JWT 的工作原理吗,JWT 和 Session、Cookie 有什么关系吗,JWT 不依赖 Cookie 那一套实现吗
Object 类里有哪些方法,每个方法有什么作用
hashCode 和 equals 方法有什么关系,尤其是当使用哈希表的时候,这两个方法要同时重写吗,如果两个对象的 equals 为 true 那他们的 hashCode 的值是不是必须要一样,反过来呢,那什么叫哈希冲突呢,哈希冲突怎么处理呢,wait 和 notify 有什么用,wait 和 sleep 方法有什么区别,wait 方法的参数指定时间有什么用吗,finalize 方法有什么用、什么时候调用呢
Spring 的 BeanFactory 和 FactoryBean 有什么区别
Spring 的 IoC 和 AOP 能讲一下吗,DI 和 IoC 是什么关系,AOP 的切面是什么意思
有两个文件,找出相同的行(设计题)
已经保研了对吧,能实习多久呀
算法题

#45

中电智科 | C++开发工程师 | 一面,二面
前言
11月16号 Boss HR主动联系邀请投递,我说我不会C++,HR说对C++有兴趣也可以,可能觉得我经历不错,于是在第二天安排了线上初试。

一面(11月17号,30min)
自我介绍
项目

项目的QBS有多少?
自己在项目的职责?负责哪块内容的开发?
项目的健壮性?负载均衡?集群扩展?
C++基础

对多态的理解?
浅拷贝和深拷贝的区别?
STL迭代器的实现原理?
C++中的容器了解多少?
Vector与Array的区别?
ArrayList与LinkList的区别?
计算机网络

TCP 和 UDP 的区别?
为什么连接的时候是三次握手,关闭的时候却是四次挥手?
TCP ,UDP协议属于哪一层?
HTTP协议属于哪一层?IP协议属于哪一层?
操作系统

进程和线程的区别?
并发和并行有什么区别?
算法

快速排序的实现原理?
其他

期望薪资是多少?
对未来有什么规划?平时是怎么学习的?
未来想从事哪一行?是否接收转C++?
反问

部门的业务?
新人的培养机制?
二面(11月22号,30min)
自我介绍

其他

除了Java,Golang还了解哪些语言?
对C++是否熟悉?
简单介绍一下自己的家庭情况?
对未来有什么规划?一直做后端开发吗?
未来希望从事哪一行业?
实习期间的工资是多少?
是否有考研的打算?
介绍一下实习期间做的项目?取得了哪些收获?
介绍一下简历上的第二个项目?做这个项目的过程中遇到了哪些问题?都是怎么克服的?
手里有没有其他offer?
期望薪资是多少?
JUC

讲一讲volatile?在哪些地方用到了volatile?
原子性、可见性、有序性分别是什么?
volatile保证可见性的原理?
volatile保证有序性的原理?
操作系统

进程间通信方式有哪些?(知道多少讲多少)
什么是死锁?死锁产生的条件?
如何解决线程死锁?
反问

公司的业务?
后续的面试流程?(结果会在一周内出来)
引流
蚂蚁 奇安信 华为 中兴 阿里 腾讯 百度 蚂蚁 支付宝 滴滴 快手 抖音 字节头条 猝死 应届生 裁员 辞职 年终奖 秋招 春招 校招生 argue 财报 凉 pua 买房 外企 需求 瓜 卷 薪资 北京 上海 深圳 杭州 一线 拼多多 面试 福利 华为 美团 蔚来 大华 同花顺 米哈游 陌陌 探探 度小满笔试 腾讯内推 23校招 面经 滴滴笔试 滴滴 比亚迪。

46

23届秋招 字节 后端开发岗(附整理的面试逻辑题)
https://www.nowcoder.com/discuss/post/420913031153991680

个人情况介绍和整体秋招总结都在这个帖子中,不再赘述。目前没有收到特别想看哪家的,所以就按文档里记录的开始一面时间顺序写了。

字节是第一批投递的,之前在这个组实习过,三面完因为没有hc自己都觉得凉了,最近又说有hc意向了。单就面试体验而言,三轮面试的体验都还可以,虽然也会问传说中的智力题,但提前准备了一些(提前准备的一些题目也整理的放出来,虽然好像都没什么人看qwq),剩下的也能推出来,基本没被问住,给个8分吧。

流程一 后端开发岗
一面 技术面
LC:纯数字字符串拆分成所有可能的ip

64匹马,每8匹可以进行一次比赛,如果要取前4名需要比几轮?

数据库相关的一些基础问题,数据库的类型,相关操作,事务等

二面 技术面
LC:递增的气温

1000瓶水,其中1瓶有毒,如果在1轮中需要测出哪瓶有毒,需要几只小鼠? 如果2轮呢?

数据库相关的:mysql事务,语句

线程和进程的区别

python作为解释性语言的优点

三面 技术面
三面是主管boss了,业务聊得比较多,没有逻辑题

LC:z型遍历树

项目

主要问了问当时实习做了什么

详细聊了聊部门业务

逻辑题
3L 5L水桶,称4L
蚊香能用1h,2个蚊香如何得到15min
4min 7min2个沙漏,如何得到9min
掰巧克力问题
问题:一块N * M大小的巧克力,每次掰一块的一行或一列,全部掰成 1 * 1 大小的巧克力需要掰多少次?

回答:N * M - 1次;不管怎么掰,每次只能把一个大块掰成两个小块,即每次掰只能增加1块巧克力;
那么将1块巧克力掰成N * M块小巧克力就需要掰N * M - 1次。

辩论赛问题
问题:1000个人参加辩论赛,1对1进行辩论,淘汰输掉的一方,问需要安排多少场比赛才能角出冠军?
回答:每场辩论赛只能淘汰一个人,要淘汰999个人则需要安排999场比赛。

在24小时里面时针分针秒针可以重合几次
24小时中时针走2圈,而分针走24圈,时针和分针重合24-2=22次, 而只要时针和分针重合,秒针一定有机会重合,所以总共重合22次

N只蚂蚁走树枝,问总距离或者总时间
问题:放N只蚂蚁在一条长度为M树枝上,蚂蚁与蚂蚁之间碰到就各自往反方向走,问总距离或者时间为多少?
回答:这个其实就一个诀窍:蚂蚁相碰就往反方向走,可以直接看做没有发生任何事:大家都相当于独立的,A蚂蚁与B蚂蚁相碰后你可以看做没有发生这次碰撞,这样无论是求时间还是距离都很简单了。

旅馆的1元钱问题
问题:有三个人去住旅馆,住三间房,每一间房10元,于是他们一共付给老板30,第二天,老板觉得三间房只需要25元就够了于是叫小弟退回5给三位客人,谁知小弟贪心,只退回每人1,自己偷偷拿了2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了27,再加上小弟独吞了不2,总共是29。可是当初他们三个人一共付出30那么还有$1呢?
回答:他们所消费的27元里已经包括小弟贪污的2元了,再加退还的3元=30元;这30元现在的分布是:老板拿25元,伙计拿2元,三人各拿1元,正好

砝码称轻重
问题:有一个天平,九个砝码,其中一个砝码比另八个要轻一些,问至少要用天平称几次才能将轻的那个找出来?

回答:2次

问题:十组砝码每组十个,每个砝码都是10g重,但是现在其中有一组砝码每个都只有9g重,现有一个能显示克数的秤,最少称几次能找到轻的那组?

回答:1次

问题:有一个天平,九个砝码,一个轻一些,用天平至少几次能找到轻的?

回答:至少2次:第一次,一边3个,哪边轻就在哪边,一样重就是剩余的3个;第二次,一边1个,哪边轻就是哪个,一样重就是剩余的那个;
问题:有十组砝码每组十个,每个砝码重10g,其中一组每个只有9g,有能显示克数的秤最少几次能找到轻的那一组砝码?

回答:将砝码分组1~10,第一组拿一个,第二组拿两个以此类推。第十组拿十个放到秤上称出克数x,则y = 550 - x,第y组就是轻的那组。

高楼扔鸡蛋问题

47

字节后端日常实习面经 (已oc)
面了字节两轮,第一轮面的北京的岗位,结果当时啥也没准备,二面挂了(今年日常实习不好找,我想找个小公司练手都找不到开始找实习后第一个面的公司就是字节)

第二轮面的上海的岗位,成功oc

字节北京一面(10.14)

人生第一场职场面试,甚至连录音复盘都忘了,只记得些零零碎碎的

问的内容:各种八股,包括c++,计网,计组,操统

没答上来的问题:空类占几个字节;字节对齐的好处;Malloc的原理

字节北京二面(10.19)

(间隔这么久是因为我故意约的晚,留点复习时间)

  1. 项目中的博客网站登录认证逻辑

  2. Session、cookie和token

  3. CSRF攻击

  4. Sql注入攻击

  5. 项目数据库的表组成

  6. 怎么进行索引调优

  7. Mysql的索引底层实现

  8. 除了B+树之外还有吗?

  9. B+树的操作时间复杂度

  10. 有其他数据结构更低的吗

  11. 数据库为什么不使用哈希表做底层索引

  12. Mysql的ACID是什么,如何保证

  13. Go的channel了解吗,可以存储什么类型的数据

  14. Channel的作用是什么

  15. Channel的底层实现

  16. Go的协程调度模型

  17. 创建一个goroutine时会给它分配什么数据

  18. DNS的机理

  19. DNS用的是TCP还是UDP

  20. http和https分别描述一下过程

  21. 常见的排序算法及其复杂度

  22. 描述一下快排和归并的过程

  23. 操作系统的系统调用是什么

  24. 为什么要分用户态和内核态

  25. 场景题:长链转短链系统

  26. 算法题:接雨水

虽然现在复盘看都是常规问题,但是当时还是小白的我被爆杀了,不出意外收到了拒信(

字节上海一面(10.27)

  1. 线程和协程的区别

  2. 用户态和内核态

  3. Go的channel支持多协程访问吗,底层是怎么实现的

  4. 除了channel还有什么方法进行并发

  5. Channel和锁的应用场景有什么区别

  6. 对范式有哪些了解呢

  7. 范式的作用是什么

  8. 后端的业务系统是否适合范式理论

  9. 了解过数据库除范式之外的其他理论吗

  10. 索引的缺点有什么

  11. 使用shell命令取出文件中的第一万至两万行

  12. Mysql的底层索引结构

  13. 为什么要用B+树

  14. 如何查看sql命令是否用到索引

  15. Python的装饰器是什么

  16. 有用c++进行过程序调优相关吗

  17. 介绍项目

  18. 点赞表怎么实现的

  19. 点赞表不断增长怎么办

  20. 介绍项目

  21. 了解过哪些大数据组件

  22. 消息队列有了解过吗

  23. Rabbitmq有什么应用场景

  24. 算法题:k级链表反转

  25. Sql题:

表1 “id,score,type” type中存有1,2,3三种类型

将其转换成表2 “id,score_1,score_2,score_3”

  1. 算法题:力扣53-最大子数组和

面试官点评:基础知识掌握的还行,但是对其他工具了解的太少

字节上海二面(10.28)

  1. 项目介绍

  2. 如果用户短时间内一直按点赞键,怎么处理

  3. 恶意用户大量发送请求怎么处理

(答了个ban掉ip地址被说不行)

  1. 数据库的事务你了解过吗,有什么特性

  2. 数据库的事务隔离级别,每个级别会带来什么问题

  3. 数据库的锁介绍一下

  4. 你提到的共享锁互斥锁和共享锁悲观锁的区别和关系是什么

  5. Sql题:找到热搜列表中一天内点赞次数最多的前十条博客,找出最新更新的十篇帖子

  6. 算法题:函数fn()会以P概率返回0,(1-P)概率返回1,写一个函数f()将fn()封装起来,以等概率返回0和1

二面结束后面试官马上告诉我过了

字节上海hr面(11.01)

那边安排出了问题,先给我安排了hr面,本来还以为我表现好不用三面了,笑死

  1. 看到你保研了,那么你研究生阶段倾向于读一些什么技术方向

  2. 你对你前面两面的评价如何,有哪些发挥好或发挥不足的地方

  3. 我看你之前是没有正式出校做过实习,那你有想过来字节实习的期望或者目标是什么吗

  4. 你日常学习新知识一般通过一些什么方式或途径进行

  5. 你平时会看一些语言的底层源码吗

  6. 什么时候开始实习,实习多久

字节上海三面(11.03)

  1. C++的deque的底层实现

  2. 为什么要这么设计,好处是什么

  3. 可以改用双向链表实现吗?

  4. mysql的主键索引和非主键索引是什么

  5. 主键索引需要将索引全部加载到内存里面吗

  6. 操作系统有几层cache

  7. 寄存器和内存之间的cache有什么作用

  8. 你觉得内存和磁盘之间有cache吗?

  9. 说说LRU的数据结构设计

  10. 如果想改用LFU,可以怎么在LRU的数据结构上进行修改

  11. 代码题:打印给定的vector list的所有组合形式

举例:vector<vector > v{{1,2},{3},{4,5}}

输出:

1 3 4

1 3 5

2 3 4

2 3 5

hr告诉我三面是leader面,本来以为会很难的,结果出的题目都挺简单,面完后面试官也是马上告诉我通过了

从10.08投出第一份简历开始,长达一个月的找实习终于结束了,感觉确确实实学到了许多东西吧,希望后面的实习一切顺利

48

头条后端日常三面

1.自我介绍

2.问408学过没

3.操作系统中进程从运行到就绪发生了什么?

4.进程为什么从进程态转成就绪状态?

5.运行状态中,在进行IO操作,IO操作完进去什么状态,接下来到什么状态…

6.TCP中的Time_wait作用。

7.怎么查看一个进程建立了多少连接?

8.ABC建立联合索引,什么走索引?

9.为什么有这个最左匹配现象?

10.B+树建立索引跟B树建立索引的区别?

11.B+树和B树建立索引会表现出什么性能区别?举例子(麻了,一直在对线)

12.举一个sql例子,能充分利用上叶子节点的双向链表。

13.只有叶子节点有数据,这个有什么影响?

14.场景题(update语句group by)对线

15.用过redis吗?

16.redis有哪些数据结构,用过哪些?

17.发起一个请求域名,这中间发送什么?

18.用到的应用层协议是什么?

19.HTTP请求头,请求行,请求体分别存放的是什么?

20.响应状态码12345开头的含义?

21.502,504区别,403,404区别?

22.三数之和

虽然很简单,但是全是要举例跟场景。。。感觉面试官好有经验

49

嘀果 | PHP开发工程师 | 一面,二面

自我介绍

Java基础

  1. Java 如何实现平台无关?
  2. 接口和抽象类的不同?

计网

  1. HTTP常见状态码了解多少?
  2. 300状态码是什么意思?
  3. 303状态码是什么意思?

Spring

  1. 讲一下Spring,SpringMvc,SpringBoot?

MySQL

  1. 什么是SQL注入?如何预防SQL注入?
  2. 如何分析一条select 语句的查询效率?
  3. explain执行计划里重点关注哪些列,每一列具体含义是什么?

Linux

  1. Linux常见命令了解哪些?

其他

二面(11月11号,1h左右)

自我介绍

闲聊

智力题

  1. 一个班级有50个人,请问恰有有两个人生日相同的概率?
  2. 两人轮流在一个圆桌面上放同样大小的硬币,规则是:每人每次只能放一枚,谁放完最后一枚,谁就获胜,那么是先放者胜还是后放者胜?如何取胜?

计网

  1. 讲一下OSI七层模型,五层模型?

  2. 讲一下用户输入网址到显示对应页面的全过程?

    1. 一个HTTP请求可以完成吗?
    2. 中间涉及到了哪些文件类型?
  3. 2个用户进行网络通信,哪个阶段的耗时最多?怎么去优化这个耗时?

  4. HTTP 1.0和HTTP 1.1的主要区别是什么?

  5. HTTP/1.1和HTTP/2.0的主要区别是什么?

  6. HTTP与HTTPS的区别?

50

头条后端日常二面

大约90分钟

\1. 一般有哪些路由协议?

\2. TCP和UDP的差别?

\3. TCP断开连接是什么?

\4. 快排的思想,时间复杂度,空间复杂度?

\5. 平衡二叉树是什么树?

\6. 二叉排序树什么树?

\7. 缓存有了解吗,分布式锁相关?

\8. redis了解什么?

\9. 热点Key是怎么解决的?

\10. 热点Key访问量比较大怎么解决?

\11. redis有哪些持久化机制,具体说一下?

\12. 快照?快照是怎么工作?

13.雪崩,击穿,穿透,解决方式?

\14. 为什么要用布隆过滤器啊?

\15. 布隆过滤器工作原理?

\16. 平常用的什么语言?

\17. AQS有了解吗?

\18. AQS底层锁是怎么实现的?

\19. 有哪些垃圾回收算法?

\20. 一般要实现线程执行完,然后执行另一个线程,怎么实现?

\21. 哈希冲突是怎么解决的?

\22. 聚集索引和辅助索引的区别?

\23. 索引覆盖是啥啊?

\24. 辅助索引的叶子节点存的是啥啊?

\25. 事务有哪些隔离级别?

\26. MYSQL默认的隔离级别?

\27. 索引里面的最左前缀原则?

\28. A,B,C建立联合索引,哪些查询是可以走索引的?

\30. 事务有什么特性?

31.分布式事务有了解吗?

\32. 数据库之间的主从同步了解吗?

\33. 用过什么消息队列吗?

\34. 延迟队列用过吗?

\35. CPU使用率比较高怎么解决?

\36. 具体怎么查?

\37. 自己开发的服务CPU使用率较高?

\38. ConcurrentHashMap是怎么加锁的?

\39. 缓存和数据库的一致性?

\40. 做道题吧。。。

二叉树所有路径表示数字之和

八股一周没看,有的答不上来,算法写的对的,面试官一直说不太对。。。

下来都跑出来了,寄啦。。。

没想到周一约三面了,估计准备三面挂我

51

23秋招复盘,字节剪印C++一二面凉经

个人的基本情况参考我之前的文章,这里不多重复。但是我相信大多数人都跟我一样,无实习无论文无专利无竞赛,什么都没有,但是最后也能收到满意的Offer。

历史文章:

  1. 双非本211硕的23届秋招总结,Linux C/C++开发
  2. 23秋招复盘,字节C++客户端一面二面 凉经
  3. Github秋招资料总结归纳

这里写点自己的23秋招复盘回馈牛客社区,很多知识来源于这里,万分感激。

注:剪印的C++客户端是在之前的C++挂了后捞起来的,和之前的字节C++客户端方向不一样

9月25 一面 (一小时10分钟)

面试分为三个环节:过完经历、技术考察和Coding。

1.自我介绍

2.项目拷打,mmap拷打,mmap参数一个一个解释

3.mmap继续拷打,用法、原理

4.项目难点,为啥做这个项目(没实习,只能做这些小玩意)

5.技术考察,https拷打,证书、TLS握手、非对称加密

6.加密算法了解哪些?RSA了解吗?(不了解)MD5了解吗?(不了解),Base64了解吗?(了解)

7.new和malloc的区别?(new会抛异常,malloc返回null;new可重载operator new,malloc是库函数?;new分配物理内存,malloc分配虚拟内存;new分配内存安全,malloc会被信号打断而不可重入)

8.信号了解嘛?

9.SIGSEGV信号讲一讲?(可惜没答出来,知道是越界异常信号,但是没讲明白,运行时越界产生这个信号)

10.sigkill

11.TCP三次握手,状态变化

12.Coding:单链表加1,********付费题目

13.反问

过了一天收到了二面链接

10月10 二面 (1小时)

\1. 自我介绍

2.项目疯狂拷打,mmap连续追问15分钟

3.mmap继续追问

4.线程池

5.怎么知道一个进程死亡?

6.怎么hook一个进程的准确死亡时间?

7.zlib的压缩原理?

8.三种智能指针的用法

9.weak_ptr的expired是线程安全嘛?

10.Coding; [1,3,8,9,8,4,1,0],统计里面元素个数,重复的元素按一个算,这里是6

\11. shared_ptr和weak_ptr如何配合使用?

\12. 找实习还是秋招?(暗示我没实习)

\13. 反问

过了几天就挂了,在意料之中,但是在之前已经签约了。所以,有点伤心,但是还好

55

字节跳动 | 抖音支付golang实习

时间:2022.11.7 16:00-17:00 60min

又是在牛客网被邀请投递,我发现字节好喜欢邀请我,被邀请三次了,主动投递不理睬,邀请的一般都会有面试机会。

  • 自我介绍

分布式对象存储项目

  • 怎么实现的?
  • 数据去重算法怎么做的?怎么判断具体的数据怎么重的?复杂度?哈希表存储在内存?内存爆满怎么办?用redis做缓存,如果redis缓存中key过期数据不存在,是否存储到数据服务?O(n)判断?。这里一直在追问,一开始没有理解什么意思,
  • 断点续传怎么实现的?

go语言

没有问

计算机网络和操作系统

  • http的method?具体?
  • cookie和session有什么区别?
  • http和https的区别?单项认证和双向认证流程?对称加密和非对称加密?流程?
  • DNS解析的过程?域名服务器怎么解析?
  • 进程和线程有什么区别?一个进程有什么数据段?同一个线程有哪些数据段可以共享的?你觉得栈区会共享吗?栈区和堆区有什么区别?
  • 进程的通信方式?哪些方式比较快?为什么共享内存比较快?管道为啥慢?

数据库

  • Mysql的索引有哪些?B+树和哈希索引有哪些区别

算法

  • 版本号对比,version1和version2.大于返回1,小于返回-1,其他返回0.001和0001比较的时候都视为1;1.0.0和1.0是相等的返回0
  • 直接给的main函数,没有其他东西

总结和心得

  • 面试官的评价是基础还不错,代码能力有待加强。项目比较符合后端技术栈,做项目需要考虑如何更快的实现?考虑边界条件,做业务很多问题就出在这里
  • 然后总结一下算法题,这个题目出乎我的意料,以为是链表和树,结果是一道从来没见过的题目,所以重点还是要提升自己的算法能力,而不是固有的题目,知道面对一道题怎么去思考?一开始不要急着写,和面试官聊一下思路,边界条件没有考虑准确,这个面试官说也是考察中十分重要的
  • 对面试经历的要求不会太多,理解本科生,不太会要求,看重计算机基础和项目亮点,尤其是做项目有哪些难点和亮点,代码能力是最基本的能力,项目就是锦上添花
  • docker和k8s考察比较少,侧重计算机基础,算法能力,思考问题能力

56

字节跳动|抖音电商平台治理|后端日常实习生|二面面经

Redis

  • 项目中说用 Redis 维持了用户登录状态,怎么实现的,还有其他实现方式吗
  • Redis 的主从原理
  • 什么是增量复制
  • 什么时候进行全量复制
  • Redis 有哪些持久化方式
  • 说说 AOF
  • RDB 的原理呢
  • Redis 有哪些具体的数据结构,你都用过吗
  • Set 和 Zset 你会在什么时候用呢

MySQL & 锁

  • 讲一下脏读和幻读的区别
  • 怎么解决脏读和幻读的问题
  • MVCC 怎么解决脏读
  • MySQL 有哪些锁
  • 间隙锁的作用是什么
  • 读写锁了解吗
  • 自旋锁的概念
  • 如果递归地进行自旋锁会怎样
  • 怎么设计可重入锁

消息队列

  • 消息队列的作用有什么
  • 消息的可靠性如何保证
  • 消费端获取到消息但是失败了怎么办
  • 多次消费怎么解决

算法题

57

抖音支付-实习-一面凉经

总结:还得是JAVA选手。我CPP选手估计寄了。

问的挺常规的,JAVA线程池+计网(HTTPS和TCP的部分基本知识)+数据库(主要是事务、锁、主从业务)。

手撕算法是一道简单dp,结果我看错题了,写了10min才发现看错,全程面试官没有一点反应;

后面花了5min A了。

总体体验还算正常吧,毕竟是第一次面;

开头算法属实有点小紧张,看错题了属实不应该;

以及为啥我一CPP选手不问我CPP捏?就盯着我JAVA问,基本不会(悲

具体题忘了,反正就很常规的八股。

(发个面经攒点RP

58

字节跳动|抖音电商平台治理|后端日常实习生|一面面经

项目相关

  • 项目业务逻辑
  • 微服务项目代码怎么组织,都在一个仓库吗
  • 微服务拓扑图

MongoDB

  • 想对指定 id 的某一个 document 进行自增,怎么实现($inc 就行,但我忘记了,说了在业务层的实现方式)

MySQL

  • 如果使用 MySQL,怎么实现原子自增(共享屏幕,写 SQL,但太久没写 SQL 了没写出来)

计算机网络

  • HTTP 格式

Java

接口和抽象类有什么区别与联系,说说使用场景
讲讲 Java 中的 volatile

算法题

LeetCode 20. 有效的括号
LeetCode 1106. 解析布尔表达式 (没写出来

59

【实习】-字节-技术中台(三面凉)

内部员工回复

一面

面试耽误了五分钟,感觉紧张的不行,凉凉,难受

  1. 项目中使用less,简述
  2. 简述ajax
  3. fetch说一说,then()
  4. 问学了哪些科目,操作系统,数据结构,C语言…
  5. 进程和线程
  6. 并发操作的是在进程还是在线程(从并发宏观上来说)
  7. 线程之间的资源是共享的
  8. 线程如何通信
  9. 数据库开始吟唱
  10. Http中常见的方法
  11. 状态码
  12. 301怎么设置(设置在响应头的location中)
  13. get,post
  14. put,delete
  15. 幂等性
  16. css3新特性
  17. 弹性布局
  18. react的理解
  19. VDOM的原理
  20. Hooks的使用和实现 (手写过react直接秒)
  21. 算法:一道树的middle题 (心态一定要放好,面试太紧张了脑子全是空白没全A出来,晚上复盘五分钟就a了…)

二面

面试官开会迟到了七分钟,感觉有点因果报应了,为什么面试官都不怎么问前端😭😭😭😭

  1. 经典问学了哪些课,经典回答C语言,数据结构,操作系统
  2. 前端工程化
  3. 一个URL过程 说了DNS解析、TCP三次握手、负载均衡,集群、渲染页面,解析HTML的过程,生成token构建DOM树,渲染树啥的,光栅,说的越详细越好
  4. session和cookie
  5. http和https
  6. https加密过程
  7. Restful规范,nextjs里面的接口文档swagger就是这个规范
  8. delete的用法
  9. 虚拟DOM的缺点优点(建议手写一遍虚拟DOM就懂了)
  10. 跨域,同源策略开始说
  11. 数据库
  12. 闭包
  13. 防抖和节流手写
  14. 算法:middle题,贪心+回溯

三面

leader真的太严肃了,感觉是干了十几年的大佬

  1. 问实习时间
  2. 问学校课程怎么办
  3. 问你两年内学校学习的课程怎么样(这时候已经感觉蚌埠住了)
  4. 有没有学得好的课程,(没好好学过)
  5. 怎么协调你们这个小组,你是什么职位
  6. 你怎么设计这个系统,你们的UI怎么设计
  7. 你怎么测试你自己写的接口对不对
  8. 你们的系统的设计稿怎么弄
  9. 微前端,SPA
  10. 问React中SPA使用场景
  11. C语言的printf怎么去改变参数(又没蚌住)
  12. 大端小端(懂得不多)
  13. 反问:如何协调学校课程与时间 面试官给我了很多建议,很感谢他
  14. 技术栈:vue,python,估计挂这了…

总结

上午感谢信,下午就有部门捞我了,反复横跳…

60

头条后端日常一面

\1. HashMap底层实现
\2. 解释一下volatile
\3. volite能保证线程安全吗
\4. 索引优化有哪些(没说全)
\5. 存储引擎了解哪些,介绍一下
\6. 大概描述一下B+树在mysql里的实现
\7. B+树插入数据的流程
\8. 叶子节点满了,叶子节点最大有多少(…)
\9. 默认事务级别,怎么实现
\10. MVCC是怎么实现的
\11. Redis有哪些数据结构?
\12. list是怎么实现的?
\13. zset,怎么插入数据,跳表插入数据流程。(说的好像不太清)
\14. redis内存淘汰策略
\15. 缓存雪崩的解决方案
\16. 击穿的解决方式
\17. 布隆过滤器工作方式,能解决击穿吗?
\18. timewait状态有社么作用?
\19. 为啥要等两倍时间
\20. 快速重传介绍一下
\21. 进程线程的区别
\22. 内核态和用户态的区别?
\23. 前端学过吗?
\24. http1,2,3(quic)各个版本区别?
\25. 服务器配置相关?
\26. 商城是自己做的吗

\27. 两数相加,输入输出写的有问题,但面试官还是给过了

两个小时后约二面

61

字节飞书后端日常实习面经

首先自我介绍下:哈工大深圳24届计算机专业学生。

进度:

2022.10.3投递 -> 2022.10.14 14:00 一面 -> 2022.10.19 15:00 二面 -> 2022.10.21 14:00 转岗,一面 -> 2022.10.25 19:00 二面 -> 2022.10.27 11:00 三面 -> 2022.10.28 hr面

一面(100min)

上来首先直接手撕算法,说代替笔试:

  • 10亿个数据中筛选出最大的100个(小顶堆)
  • 判断字符串x2是否包含x1(包含指x2的一个子串内容和长度和x1一样,但是顺序可变)

第一题开始思路错了,面试官提醒后完成了,第二题开始题目看错了,面试官提醒后改过来了(第一次面试有点紧张,😂)

接下来是八股:

  • tcp time_wait状态讲讲
  • 如果一个服务器出现很多time_wait状态可能是什么情况
  • tcp如何实现可靠传输
  • 线程同步的方式
  • 堆排序稳定吗(这个忘记了,现推说不稳定)
  • cpp都有malloc了,为啥还要有new
  • cpp构造函数可以是虚函数吗(不知道,现推说不可以)
  • 怎么实现智能搜索,例如输入ha,弹出哈工大,输入s,弹出深圳(我说哈希表,这题没有底)
  • 如何检测垃圾文本,例如“啊啊啊啊啊啊,屁股屁股,没有没有”,就是很多重复的字词,没有意义(不太会,就说了查重,面试官也没有给我垃圾文本准确定义)

除了最后两题没有底,其他感觉都还好,面试官最后说这两题有很多实现方式,答案很主观

晚上6点多接到二面通知

二面(70min)

首先自我介绍,我就介绍我学习国外计算机网课和自己os竞赛的经历

接下来问一些开放性问题:

  • 写了这么多项目,讲一个最有挑战性的(我说了下有很多,讲下最近的824的raft实现)

接下来是八股:

  • tcp和udp区别
  • 如何基于udp实现可靠传输(刚好144是基于udp的用户态tcp协议栈,我详细的讲了下实现细节)
  • 进程线程、协程区别(我很详细的说了,从os的底层实现到go的gmp模型)

问了30分钟,最后手撕算法

  • 写一个解析csv文件的类(写了40分钟,面试官说超时了。主要是我java好几个api忘了,一般我都是查文档,可是面试不能查,只能一个个试了😢)

这里提一句,反问的时候,自己嘴贱了句,说对你们这个文本搜索岗位不是很感兴趣,结果面试完,直接给我转岗重新一面了,我其实完全不是这个意思,说完也马上改口了😢

面完第二天早上还没有通知,我看面试流程显示转岗了。又要重新一面

转岗后一面(60min)

上来首先自我介绍(和上面一样),然后写算法

  • 最大子序和

然后开始八股:

  • 进程和线程的区别
  • 什么时候会从用户态陷入内核态,具体细节
  • io密集型和计算密集型分别适合多线程还是多进程(和上面的两个问题层层递进,好,这里给了点提示)
  • 进程通信方式(我很详细的讲,最后讲到套接字的时候可能讲的太久了,面试官说不用说了,我们问其他的😂)
  • tcp为什么要三次握手(这里说我没有说出关键点)
  • tcp time_wait要等多久,为什么(有一个点没有说,面试官稍微提示后说出来了,这一点记得,但是一时脑抽忘了说)
  • 线性一致性是什么
  • 除了raft你还了解哪些分布式协议,paxos知道吗(听过,没有了解,我说raft就是为优化paxos而生)

晚上7点告诉我过了

二面(60min)

首先自我介绍(和上面一样)

算法题:

  • 从长度为n的数组里找出最大的k个数(和一开始的一面那题很像,但是这个我是用快排)

然后问我说,看你os是用rust写的,然后技能树说自己擅长go,讲讲go和rust异同(内存管理,主要讲这个)

八股:

  • 浏览器输入网址发生什么(从dhcp,到dns解析,到http,到tcp,到arp,到nat、到局域网,因特网,我很详细地说了)
  • tcp udp区别
  • time_wait和close_wait细讲下(tcp11状态机在写144时就滚瓜烂熟了)
  • epoll poll select讲讲(从底层linux源码机制到对比我都详细讲了)
  • 红黑树会吗(刚刚epoll提到红黑树,我说完全不会,这个题目应该所有面试里是唯一一个完全不知道说的)

晚上面的,所以第二天9点多告诉我过了

三面

自我介绍(和上面一样)

开始问项目

  • 介绍你的15445(从内存缓冲池、到extendible hashtable索引、到火山模型、到事务控制,面试官问了下哈希索引的并发控制,也细细地讲了下)
  • 问我824是自学吗?go也是自学吗?

最后写智力题

  • 变色龙问题,三种颜色变色龙,两只颜色不一样的遇到一起会变成另一种颜色,输入三种变色龙的数量,判断最终能否都是一个颜色(想了一分钟,写了思路给面试官看)

反问的时候,面试官说我对计算机底层探究很细,但是也要注意mysql、redis、linux的使用,我说这些都多多少少会,并且现在也在学哈哈

面完后马上半小时,吃午饭的时候告诉过了,约hr面

hr面(50min)

聊天似的面试,很轻松

  • 自我介绍
  • os竞赛讲讲
  • 还有什么团队协作经历
  • 以后待在深圳发展吗,家哪里的
  • 读研吗以后
  • 如果发offer,什么时候到岗,能工作多久,一周能5天吗
  • 哈深计算机是第一志愿吗
  • 高考目标是哈深吗
  • 自我评价下
  • 之前三次面试自我感觉怎么样,还有没有可以做的更好的细节
  • 为什么选择字节
  • 为啥给你转岗了

面了50分钟,反问:

  • 之前的三次面评可以透露吗(hr笑了笑说不方便透露,但是三位面试官都认为你计算机基础很扎实,可能业务经历方面稍加欠缺,但是在可接收范围内,入职可以学。我寻思我就是业务经历的少才来实习啊啊😂)
  • 结果大概什么时候出呢(hr说3到5个工作日,今天周五,所以应该下周五前告诉我结果)

期待顺顺利利发offer给我,我很需要实习👀

------------------------------------------分割线--------------------------------------

11.2 上午hr打电话发offer了,艹真他妈爽!!!!!!!!!!!!!!!!!!!!!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

62

23届秋招 苏州青河科技java开发岗10.28三轮面试凉经

下午两点到三点,连续三轮面试,每轮20分钟。

面试好难啊,感觉寄了。

问了java的基本数据类型有哪些,分别占用多少字节。

问了list,set,map接口的区别。

问了ArrayList和HashSet的区别。

问了static关键字。

问了内部类了解哪些,说了匿名内部类,问应用于哪些地方。

问了MySQL数据库存储引擎有哪些。

问了增删改的sql语句怎么写。

问了表连接了解多少。

给定场景,让说几个sql语句怎么写。

问了prestatement和statement的区别。

问了触发器了解多少。

问了存储过程和函数的区别。

问了操作系统进程和线程的区别。

问了线程的实现方式有哪些。

问了设计模式了解多少。

63

字节 正式批 java 一二面

时间线

8/15 投递

8/31 一面

9/13 二面

10/12 三面 (因各种原因推迟到十一月份)

面经

一面

1、自我介绍

2、项目介绍

3、全程就一个场景题:抖音用户页面的消息功能设计,从数据库设计、中间件使用等等讨论,大概一个小时…

4、算法题:第一个缺失的正整数

二面

1、自我介绍

2、项目介绍

3、零拷贝

4、IO模型

5、netty

6、各种常规八股

7、算法题:判断一个树是不是另一个树的子树

64

SNK中国游戏服务端开发面经

9.30 一面 30min

  1. 自我介绍
  2. 竞赛经历
  3. 实习经历
  4. float占几个字节
  5. float数据类型与int类型相加是什么类型,为什么
  6. Integer类型一般不用==进行比较,主要考虑是什么
  7. Integer a = 1,Integer b = 1,它们是否相等
  8. HashMap是怎么样的一个数据结构,讲一下HashMap
  9. HashMap是安全的类吗,怎么判断
  10. 怎么把HashMap变成线程安全的类,对什么方法加锁
  11. 单例模式的双检锁的volatile是干嘛的,没有使用它可能会出现什么问题
  12. 快速排序的详解
  13. 一个二叉树,读出它的先序排序和后序排序
  14. 一个数据库表,包含了一些字段,这个表有什么问题
  15. 什么时候会选用udp
  16. 反转链表
  17. 游戏场景,玩家没收到奖励邮件,会从哪些地方排查问题

65

360Java一面

9.6

\1. 自我介绍
\2. 项目难点
+++ kafka延时发送系统通知
— 如何在业务端限制kafka不要消费太快
+++ 试着减少分区数量
— 那么基于mysql连接池用的是长连接,这些连接都被应用起来了,似乎分区数量不能太限制kafka的消费速度,不那么有效了
+++ 在应用端加个线程的sleep(卑微,事后百度可通过调整kafka配置文件中的参数来限制消费者一次拉取消息的最大数据量以及最大个数,从而限制消费速度)
\3. 帖子id、评论id怎么保证唯一
— 自增主键
\4. 楼中楼、嵌套评论怎么实现的
\5. 项目中表的设计符合三大范式吗
\6. BitMap如何进行活跃用户数的统计
— 用户id是怎么生成的
+++ 理解成怎么获取的把,扯了会话管理那一套
— 为什么需要拦截器去拦截每次请求
\7. 如何理解rpc框架,或者说rpc框架应该包括哪些功能
— 自定义的rpc是基于什么协议传输数据的
— 为什么不使用http
— 为什么不使用udp,udp不是更快吗
+++ 讲了下udp和tcp的区别
— tcp如何保证可靠性的
— tcp发送的报文一定是按顺序的吗,如果乱序了怎么办
— 考虑这么一种场景,应该说互联网上经常发生,不可避免,比如说我发送一个很大的文件,也或者说下载,几m大,也不是说很大,tcp报文是有上限的,你应该理解,6万多的字节放不下这个文件,需要分成好几个包去发送,因为两地之间路由器非常多,中间有某些数据在进行路由时晚到了,这是非常容易发生的情况,那你认为tcp是如何保证数据的顺序的正确性
— 发是连续发的,可能后面的先到
\8. 客户端和服务端的连接有连接池吗,还是说只有一个连接
\9. 讲讲随机的负载均衡怎么实现的
\10. 已经有了进程,为什么还需要线程
\11. 能说说你理解的并发和并行吗
— 进程有了多线程,能实现并行吗
\12. 产生死锁的条件
\13. 对栈和队列的理解
— 如何用队列实现栈(口撕题)

66

字节后端开发9.13三面

浏览器输入一个网址经过的过程

这个过程中涉及到的网络安全的问题了解吗

​ https

​ ddos

平时用linux吗

有了解分布式事务,有了解分布式事务的中间件和解决方案吗

MVCC讲一下

MySQL默认的隔离级别

非常详细地讲一下ConcurrentHashMap的扩容流程

削峰和超卖怎么解决

一致性与回滚

67

字节后端开发9.8二面

狂问实习

final关键词的用法

进程之间的通信方式

哪种通信方式最快,为什么

其他通信方式主要消耗的时间消耗在哪

内核态和用户态的区别

kill -9原理

代码:判断一个树是否是完全二叉树

两个人轮流抛硬币,先抛到正面的赢,第一个人先抛赢的概率

一个概率生成器构造等概率器

68

字节 后端开发实习生-今日头条 一面

1.自我介绍

2.项目介绍

3.从输入www.baidu.com开始发生了什么?

4.OSI七层模型有哪些?

5.tcp与udp的区别

6.tcp为什么安全

7.tcp的超时重传机制

8.golang的GC

9.三色标记法的灰色、黑色有什么区别

10.为什么区分灰色和黑色,灰色存在的意义?

11.写屏障是什么?

12.进程、线程、协程的区别

13.什么时候用线程,什么时候用协程

14.mysql的索引用的什么数据结构

15.B+树属于二叉树么

16.为什么不用红黑树

17.红黑树和B+树的区别

算法:最大岛屿数量

69

字节跳动基础架构后端开发面经(春招实习-已转正)

我也来回馈一下牛客的uu们吧

本人2023届某末流985硕……

字节跳动基础架构后端实习一二三面

基础架构后端实习一面(36min / 3.18日)

自我介绍

面试问题
  1. STL中的容器的底层实现,简单讲几个(简单讲了vector,array,unordered_map)
  2. unordered_map与map的底层实现的区别
  3. Linux中的哪些troubleshooting工具?
  4. GDB用法?如何用GDB dump一块内存下来查看
  5. TCP DUMP用法?
  6. 计算机视觉主要是在做哪几块?
  7. 介绍一下RESNet
  8. 个人获奖细节

问了17分钟,然后开始做题

算法题:台阶跳跃题,一个题干,三个子题目。

题目大概描述:从起点开始,起点后面N个台阶,最后一个台阶为终点。青蛙从第一个台阶之前开始跳,只能向前跳,可以向前跳任意台阶数目,每个台阶上有可以获得能量的蘑菇,也有减能量的毒蘑菇。青蛙初始能量为0,能量可以为负数,到终点时候能量为负数表示失败。求青蛙跳到终点时的最大可获得能量。如果到终点时候能量为负数,返回-1。

  • 问题1:求青蛙跳到终点时的最大可获得能量。
  • 问题2:加条件:青蛙每跳一次,消耗能量等于所跳的距离的平方
  • 问题3:加条件:青蛙每跳一次,消耗能量等于所跳的距离的平方,且每一跳会奖励一个能量

反问:对我们应届生实习有什么建议,部门主要做什么的

  1. 希望实习时间长一点。
  2. 这个部门主要研究Kernel Driver,芯片架构,主要是虚拟化,容器场景,异构计算,涉及到比较底层的东西。

基础架构后端实习二面(65min / 3.24日)

自我介绍

面试问题

原来二面主要是针对项目:

  • 项目做的什么
  • 我做的什么
  • 追问整个软件项目各个模块
  • 有什么原创的算法(有哪些难点)
  • 追着里面的某两个算法细问细节,深入到代码实现

遇到项目中涉及的底层的东西,面试官也会细问,大概是:

  • 线程与进程区别
  • 僵尸进程怎么处理
  • 使用信号量的场景线程/进程同步用什么东西
  • PV操作
  • C/C++中的进程同步用什么

然后就开始写代码……

做题:没做算法题,而是让我写了一个生产者消费者模型。我先写了一个基础版本(单消费者单生产者),面试官马上提出了这个版本在多生产者的时候就不行了,让我马上改,然后我改为多消费者多生产者。

反问:对我的评价或者建议

基础架构后端实习三面(60min / 3.28日)

自我介绍

面试问题

先随便聊了会儿学校里的情况

再大概聊了聊我个人的优点

然后开始聊计算机体系架构和一些比较底层的东西:

  • 操作系统开机时候的实模式和保护模式的区别
  • 内存分配算法有哪些,伙伴系统和slab内存分配机制
  • linux中的各种管理工具
  • perf
  • eBPF
  • 进程调度算法有哪些
  • CSF

然后开始做题。

做题:最长回文子串**********

在飞书上,要自己写输入输出和测试用例,不用本地IDE,直接用飞书编码

反问:对我学习底层知识的建议

一般第二或者第三个工作日就出结果,工作地点:成都

70

字节 后台开发 2面问题+思考

1、背景

​ 最近收到字节面试通过的通知,把自己当中碰到的一些面试问题、复盘分享出来,祝大家求职顺利。

​ 比较多放一个不太合适,按照123面这样一个一个具体说。当中有一些我的思考可能回答的点大家也可以参考。

​ 1面:https://www.nowcoder.com/discuss/1074492

2、字节2面 技术面

个人自我介绍【略过】

项目上,你做了哪部分工作,这些工作里哪些你觉得是难点?以及做的比较有价值的事情。

分布式id

  • 聊一聊雪花算法。还有其他的唯一id算法,背后的原理

雪花算法就可以谈各种,比如id 他是怎么分布的,哪一些位放什么信息,以及单台机器上生成id是否有序,雪花算法的缺点啊,推特最后为什么没有继续用呢?

还有比如java的uuid,或者美团的overleaf 方案等等,都可以谈。最起码我可以引入redis/mysql,做一个自增的id,然后引入了他就可能有各种的问题,比如单点故障啊等等,可以一直说。

go语言

  • golang的协程 是怎么实现的?和线程比有什么不一样,又给他带来哪些的好处?

这个问题1面有涉及到,所以后面也好好准备了一下。可以谈的点很多,除了上一篇提到了,还可以说栈,保护现场恢复现场,用户态内核态,对比等等。最后可以加上一句,避免了内核频繁状态切换的成本。

  • go channel的调度机制有了解吗?泛型?

这两个确实不了解,直接说不太清楚。

redis

  • 谈一谈常用的数据结构。

其实就是5个基本的,string,list,set,hash,zset。大概说说用途。

还有几个有意思的结构,hyperloglog,这个涉及到伯努利试验,桶分布等等,我觉得本科同学学过概率论的真的可以好好研究下,说出来很加分的。

以及geo 地理位置的结构。

顺着string也可以提bloom过滤器,应用场景,黑名单,顺着还可以下击穿穿透雪崩等等等等,只是串联起来 什么都能说了。

  • 五大数据结构怎么实现的,有了解过吗?

没看过源码,直说了。

  • 提到了跳表,有没有替代方案?

zset用到跳表,大概讲讲跳表怎么回事,降低了查询时间啊,以及mysql为什么不用跳表而是b+树,两个的区别等等,可以说很多也是。

  • redis物理集群怎么搭建,怎么部署 有了解吗?

只要是集群,就要意识到,要么主从那种高可靠集群,解决单点故障,要么解决压力过大的沙丁分片。有了这个框架什么都好说了,比如二者区别,大概是什么意思等等。

  • redis分布式锁有了解吗?

这个建议好好看看,有很多权衡的点。

首先结论是,redisson 都帮我们解决实现了,他解决 有许多需要考量的点,概括上来讲可以包括:

【basic】本地锁

1、死锁

2、重复锁

3、正确的删除

4、性能问题

5、可靠性问题

6、红锁和红锁的缺点。

  • redis有许多开源的 偏集群的方案,有了解吗?

不了解。但是只要是集群,就可以从AKF这个角度去考虑,那就可以提到redis在AKF上的考量。同时集群有集群理论,比如CAP BASE理论等等。

  • redis集群在cap关注的是哪两点呢?

p分区容错性一定是有的;集群的话,比如主从,信息可能同步不上来,不一致;所以AP。

  • base理论,和CAP 提出了什么新鲜玩意?

阐述一下base理论是什么,比如一致性,就可以说 强一致性、弱一致性、最终一致性,kafka特殊的一致性(ISR,OSR)等等,很多。

zookeeper

  • zk在CAP上是怎么的一个选择。

马上意识到选举过程200ms,是没法干其他事情的,所以在这个时间是不可用的,CP。那zk和eureka都可以作为注册中心,eureka在掉的时候有自我保护机制,心跳等等,保证可用但不是一致的;同样还可以说zk的目录树结构,隔离等等。

  • PAXOS协议有具体了解吗?

讲自己知道的就行,比如背后论文的故事,大概流程,角色等等。

  • 除了PAXOS,业界常用的RAFT有了解吗?

没具体了解,后续会了解一下。

  • zk的脑裂问题听过吗?

当时答得不太对,正确的是指集群里面,因为一些问题 产生两个主,不知道听谁的,具体见下一面,下一面面试官问到了。

算法 层次遍历

层次遍历改一下,一行从左往右,一行从右往左这样遍历。

71

字节 后台开发 1面问题+思考

1、背景

​ 最近收到字节面试通过的通知,把自己当中碰到的一些面试问题、复盘分享出来,祝大家求职顺利。

​ 比较多放一个不太合适,按照123面这样一个一个具体说。当中有一些我的思考可能回答的点大家也可以参考。

2、字节1面 技术面

个人自我介绍【略过】

mysql

    • 聊一聊mysql 你对索引的认识。
  • ​ 其实比较大众化的问题,基本上是往着数据结构B+树角度去谈,为什么是B+。

  • ​ 比如可以聊hash表、二叉树、多叉树等等,各自的优缺点;

  • ​ 同时基础更好的同学可以围绕着 io ,page,innodb,b树b+树区别上聊,可以说很多。

    • 提到了聚簇索引,非聚簇索引。那非聚簇索引存的是什么?
  • ​ 首先是要回答出,聚簇索引、非聚簇索引的区别,以及各自的存储引擎 是否涉及聚簇索引这个事情。然后才是存什么。

  • ​ 概括上来说,跟数据绑定在一起的,就是聚簇索引;没有绑定在一起的就是非聚簇索引。

  • 可以接着延伸,回表,覆盖索引等等。

网络

    • osi 七层模型描述一下。
  • 描述每一个层,大概干什么作用,有什么协议即可。同理可以扩展5层,5层是把哪些合并了等等。

  • 当时复习没注意这个点,网络层传输层还说反了,答得不是很好。

    • tcp udp有哪些区别?对应哪些应用场景?
  • 这个建议好好读计算机网络自顶向下,说的挺清楚的。

  • 最起码的有链接无连接,tcp的一些特性(可靠数据传输、拥塞机制、流量控制),比如应用场景 实时通信,比如报文头区别等等,可以涉及很多。

    • tcp udp 哪个传输效率更高?
  • 效率更高这个我无从下手,当时就说 咱们评判效率标准是什么?比如我是追求传输的快?还是追求质量?按照我的框架下给出对应的答案。

    • 能不能基于udp完成可靠数据传输呢?
  • 这个问题就是顺着我说的质量,接着往下问的。应用层上可以做到的,书上也会讲到。

多线程

    • 进程 线程 协程的区别
  • ​ 这个是因为我的简历上有go语言,协程,所以问了这个问题。

    • 多进程 多线程的区别
  • ​ 本科老师教授过openmp和mpi,我就按照这两个的区别回答了一下。其实网上面经回答应该也挺好的,没有固定答案,可能是看个人思考吧。

  • ​ 比如多个之间如何合作,共享变量怎么办,消息通信等等。java的也可以聊聊thread local,锁啊,进程通信(ip+port)等等。

算法 最大栈

最大栈,最大队列。和剑指offer的题目应该类似吧。

最大栈就是新建一个额外的栈,保存最大值;最大队列这样干的不是最好,得有一些操作,反正当时是没想到。

然后灵机一动,讨了个巧,用两个栈 实现一个队列,原来o(n),用两个栈的话最多也就o(2n)=o(n),符合要求,实现出来了。

72

字节跳动 后端开发 一二面凉经

2022/08/26 字节一面 项目+八股 30min,题目说了思路,但是做了20多min卡壳没做出来 总共近1个小时(人生第一次工作面试)

  • 项目 缓存怎么做的,怎么更新的

  • 项目是多线程安全的吗,如何提高项目的并发量

  • RabbitMQ以及Kafka有什么区别,为什么使用

  • Redis的大Key怎么处理,有什么影响,对持久化有什么影响

  • 数据库的事务特性,分别由什么保障的

  • MVCC多版本并发控制

  • 单链表排序:快排,归并

  • 无反问。

    2022/09/07 字节二面 55min GG

  • 虚拟内存和物理内存的区别,为什么要使用虚拟内存,答了进程隔离,同时使进程的运行空间大于实际的物理空间。追问:不用虚拟内存也能进程隔离,也能进行内存页的换入换出,为什么还用虚拟内存。

  • 项目的难点

  • spring security的认证流程,权限如何设计的

  • jwt过期了怎么办

  • 联合索引(a,b)什么情况下有效,为什么?

  • GC分区情况,为什么要分区,如何能够减少垃圾回收次数,程序应当如何设计,(没答上来如何减少GC)

  • MySql和redis的使用场景,有什么区别(大概说一下,一个是持久化,一个基于内存做缓存,MySQL存储有关系的数据,redis是key-value类型的)

  • redis的大key对redis持久化有什么影响

  • 各种开发框架有什么作用,(对技术的封装,隐藏底层实现细节,提供简易的方法接口)

  • 输入url到页面显示的过程

  • 题目,连续数组和为5的倍数的子数组的个数(想到了用前缀和,但是没有完全想明白,后来面试官提示了一下,但是依旧没有想出来,说了个暴力的方法,一行代码都没有敲就结束了)

73

字节正式批-Data-TnS后端一二三面经(已OC)

一面 2022年8月29日

  1. 自我介绍
  2. 进程调度策略?
  3. 死锁问题及解决方案
  4. 用户态vs内核态
  5. 滑动窗口?
  6. 数据结构:堆vs栈
  7. 描述一下堆的插入过程
  8. dfs vs bfs
  9. 数据库范式
  10. 数据库事务and隔离级别
  11. having关键字有什么用
  12. ==和equals的区别
  13. 聊一下GC?
  14. minorGC vs fullGC
  15. 如果大量出现minorGC,有什么原因?
  16. JMM?
  17. 类加载机制?
  18. UML中,类之间的关系有哪些?
  19. 设计模式了解哪些?
  20. 观察者模式vs订阅模式?
  21. AOP?
  22. 分布式系统的CAP?
  23. 算法题:最大子序列的和->进阶问题:既返回最大的和,又返回最大和子序列的起、止位置
  24. 项目

二面 2022年9月5日

  1. 自我介绍
  2. 介绍一下项目中的一个难点
  3. 说一下点赞功能
  4. 假设一个帖子点赞量很大,一个redis set太大了,该怎么解决?
  5. 假设在此基础上,还需要对点赞按照时间进行一个倒排,取出最新的20个点赞该怎么解决
  6. 请求一个页面会发生什么?
  7. 假如有登录状态呢?
  8. 算法题:通配符匹配

74

字节后端-质量架构(一面65min)

\1. 自我介绍

\2. 介绍一个自己参与度最高的项目

\3. 进程与线程你了解吗?

\4. 并发和并行的区别?

\5. 虚拟地址和物理地址你了解吗?

\6. 锁,你了解那些锁?读写锁?

\7. 有哪些同步方式?

\8. 为什么Synchronized是重量级的锁?

\9. 计算机网络中为什么三次握手却需要四次挥手?

\10. http和https的区别?你能说下ssl的握手过程嘛?

\11. 拥塞控制你了解吗?

\12. python你用的多吗?你知道迭代器和生成器的区别吗?

\13. Django你有使用过吗?

\14. 你有使用python进行过网络编程嘛?

\15. 排序算法你有了解吗?讲一下快速排序的思想,分析下时间复杂度?

\16. 做题

- 如何判断一个链表是否有环(构建有环的链表出了点问题,双指针,hashset两种解法)

- 爬楼梯(动态规划)

75

字节 抖音实习 Java后端一面凉经

\1. 自我介绍
\2. 介绍项目(简单说了一下博客和rpc框架)
\3. rpc项目中遇到的困难(随便扯了个注册中心)
\4. 这个rpc自己有没有在哪个项目中使用了(随便说了自己只有写demo测试过)
\5. 用redis做注册中心的问题
\6. 操作系统(没学,直接不会)
\7. redis的删除策略
\8. 说说对hashmap的了解
\9. ConcurrentHashMap为什么是线程安全的
\10. 线程池的执行流程
\11. 线程池核心线程和最大线程数的区别
\12. 线程生命周期
\13. 线程的阻塞状态(因为上一问说到了,然后又卡住了)
\14. tcp和udp协议的区别(不会)
\15. 算法题:数组中的第 k 大的数字(直接卡壳了,只会暴力解)
\16. 各种排序的时间复杂度
\17. 叫我写个排序,然后用来实现这道题(写了一个希尔排序,忘记了好多,扯了好久,最后写出来了)

76

2023届菜鸟base杭州Java面经(已oc)附时间线

9.19 中午12点约下午4点面试 因为我有3点的字节面试我怕来不及 所以约在了晚上7点 面完官网状态还是简历评估没打勾

9.20 通知9.21做笔试

9.21 9点做笔试3道题就a了一半差不多 下午查官网状态是面试中 晚上7点多约9.22下午1:30二面

9.22 二面完一会状态是等待面试结果 晚上变成面试中

9.23 上午10点hr约下午5点三面 并拉群 三面完状态变为等待面试结果

=隔了两天是周末=

9.26 早上10点看状态变为面试中 中午12点约下午5点hr面 并拉群 面完状态变为等待面试结果 hr承诺国庆节前会出最后结果

9.28 下午2点有个面试官打电话说9.21那个笔试做的不好所以看看要加一场补测问我啥时候有空最好就近期因为比较着急 我说那就现在吧 然后做了三道题 差不多都做出来了 面试官说这两天hr会发offer 并且也希望我能来菜鸟

9.29上午十点半 hr打电话说这两天发邮箱意向书 聊了下部门具体情况和实习情况 十月中下旬谈薪 发正式offer

9.29 下午6点 意向书啦!!开心

焦虑了一整个9月,经历了太多大起大伏,没想到一个垃圾双非本科生也能今年卷进大大厂,好开心啊,终于可以好好过一个国庆了

9.19 19:00 电话1面 70分钟

  1. 介绍职级p4
  2. 自我介绍
  3. 简历里提到的专利是做什么的,你负责什么部分?后面那个比赛也是做类似的工作吗?
  4. 确认简历里的一些基本信息专业排名
  5. 具体聊一下实习经历 20min
  6. jdk和jre有什么区别 我忘了
  7. ==和equals的区别
  8. final在Java中有什么作用
  9. String s = “123” 和 String s = new String(“123”)有什么区别
  10. bio nio aio有什么区别 我不了解
  11. hashmap是线程安全的吗,平时会有哪些数据结构能来保证线程安全
  12. 。。。

面经没写完,稍晚两天补上

77

2023届字节跳动base杭州商业变现部门Java岗一面凉经

9.19 15:00 一面

  1. 面试官先介绍部门,商业变现部门
  2. 自我介绍
  3. map有哪几种实现类,他们各自访问数据的顺序是如何的
  4. Java中在某个方法中定义一个字符串型变量,涉及到哪些内存分配
  5. 引用占多少空间
  6. 一个sql,学生表,包含一些类,姓名,性别,年龄,成绩,想查性别为女,年龄21岁的学生姓名,怎么设计索引
  7. Redis的list和zset这俩底层的数据结构分别是什么
  8. zset是一开始是用跳表吗?为什么不直接用跳表而要用压缩列表
  9. 分布式锁
  10. 结合对计网的一些理解,公司上的请求是怎么打到你开发的应用上的
  11. nginx在计网中哪一层?nginx和路由器转发哪个效率高,为什么
  12. 手撕:给定一个二叉树,返回该二叉树的之字形层序遍历

犯了跟潮流网络一样的错,没好好对待、准备这次面试,周一的面试,前面的三天包括周末都是躺着刷手机度过,完全不复习,一直在等博瑞的offer,太不应该了,没见过世面的样子就该吃点教训长个记性!在写这个面经的时候很痛苦,因为发现大概十道题,没有一道题是在接近40分钟的面试过程中,完全回答正确的,深刻认识到了自己八股的差劲程度,要好好积累好好背诵好好学习好好巩固好好反复,切忌再掉以轻心!!!

78

字节后端直播一面凉经

#字节# #字节跳动# 吐槽一下,字节这次面试难度是我实习秋招以来面试难度最大的,心态有点崩

1.介绍一下AQS和Sychronized底层实现的联系和区别,我答得是AQS内部使用lookSupport和CAS机制,而Sychronized依赖于操作系统的Monitor机制,然后他让我讲一讲操作系统的monitor是什么结构,怎么运作的

2.如果要你使用AQS设计countDownLatch工具类,该如何设计,AQS我很久之前看的,忘的差不多了,答得很不好

4.讲讲looksupport在操作系统层面的底层实现

5.讲讲NIO,讲讲Java的NIO是如何调用操作系统的NIO服务的

6.如果要你基于Tcp协议搭建服务器,该如何搭建?(没搞懂啥意思)

7.讲讲操作系统对NIO是如何封装的,底层的数据结构是什么,我答得select,poll,epoll原理,他说不是要我回答这个

8.你刚才说NIO的socket连接是一种系统资源是吧,那讲讲操作系统中NIO的socket连接数量有没有什么限制,如果有,和什么有关。(我支支吾吾的说了select的连接数限制,他说不是这个)

9.讲讲在高并发场景下,该如何优化NIO连接,如何配置

10.讲讲Redis分片

11.Redis的冗余和分片是同时存在的,该如何进行集群配置

12.我看你使用了Netty,那请你讲一讲如果让你实现一个netty框架,该如何设计

13.讲讲Netty为啥并发量大(我说NIO的优点,以及Netty将原生Java的水平触发改为边缘触发,他说这个没啥影响)

13.我看你在项目里提到了webSocket,那请问websocket建立连接的过程是什么,服务端做了哪一些处理。

14.你说websocket使用在聊天场景中,那你这里做了群聊实现了么?听说过写扩散和读扩散么?解释一下

算法:一道字符串dp,我用的dfs,当时心态有点崩,卡了十分钟才写出来,面试官说分析一下复杂度,说复杂度太高,于是跳过,过了一会意识到没有进行记忆化操作。。。。

还是我太菜了,以后还需要打磨打磨基础吧

反问,我从您问的问题里面感觉字节对操作系统的基础很重视吧,那您对学习这些有关操作系统的知识有什么技巧

面试官回答我说要注重在实践中学习,比如NIO和socket这块多学习抓包,学会跟踪调用。有时候只看一些技术博客学一些理论是没有多深的理解的。

还有一些记不住了,上面的大部分我都答得不怎么样

79

字节后端 日常实习一二面(已oc)

一面是个可爱的小姐姐,就给人感觉很亲切很放松,简单的问了一些问题就开始做题

一面9.16(45min)

1.进程和线程的区别

2.线程之间内存是共享的吗

3.进程之间、线程之间怎么进行交互

4.项目里线程之间的交互

5.进程间最高效的通信方式

6.共享内存和进程的地址空间的关系

7.代码题:1)K 个一组翻转链表,非递归和递归实现,如1->2->3->4->5->6->7->8->NULL,k=3,变为3->2->1->6->5->4->8->7->NULL

2)给定一个数组,判断可以积水的容量,如{ 5,2,1,4,3 } ,积水容量为5, 42. 接雨水

二面面试官小哥哥人也超级好,不嫌弃我菜愿意和我一起讨论,代码题我思路错了还会举例子告诉我这方法可能行不通,最后经他一步步引导发现其实就是双指针,感觉之前好像还做过这题,但一开始看到代码题的时候思路完全偏了

二面9.21(50min)

1.epoll的水平触发和边沿触发,项目里用的是哪种

2.实现带timeout的read接口,原来的 ssize_t read(int fd, void * buf, size_t count) 改为ssize_t read(int fd, void * buf, size_t count, int timeout),可以调用原来的read函数(其实就是封装一下原来的read函数,一开始没理解面试官意思懵了很久)

3.c++11新特性哪些对你很实用,auto,lambda,std::move

std::string byte = “xxx”

auto s = byte

问auto是拷贝还是引用,会推导成什么类型

4.代码题:溢出问题,一个数组vector<int32_t>,整体和是不溢出的,但部分和会溢出,怎么求和

80

字节跳动2023秋招研发第五场笔试【后端方向】凉经

题型:4道编程题 ,通过率20%,ac,20%,18.18%
1.根据子族谱,第一行是子族谱的个数,然后是n行子族谱,如A B C,代表B是C的父亲,A是B的父亲,要求输出第一代的名字和第n代的人数,不会,寄了
2.要求输出数组中满足要求的字串数, 如an < 2an+1 < 4an+2,用暴力解法做的
3.求各组满足要求的最小步数,每个相邻的步数的值相差±1或者0,第一步和最后一步的步长必须是1,不会做,寄

4.给出狗一天可能吃的几种饭量和狗粮总重量,且第二天狗粮吃的不会比前一天多,问有多少种分配方式,不会做,寄!

准备进厂搬砖了。

81

23秋招后端提前批字节百度凉经和教训

字节电商提前批一面挂 7.20

听说字节电商几乎没hc,居然过了简历筛选,很意外(实际上是很惨,因为面评可能比较烂,后面再也没有字节的面试了)。不过很感谢字节,给我练手的机会,大二找实习的时候也是一面挂。。。

1.介绍实习项目

2.MySQL怎么实现可重复读

3.Java实现同步的手段有哪些

4.聊聊开源项目

5.算法题

  • 搜索矩阵(我直接说出了最优解,但是面试官觉得不行,得用二分,然后我开始怀疑自己,不敢说了。长教训了,相信自己,遇到这种情况就上去怼,怂没意义,后面面滴滴快手用友的时候也碰到类似情况,就直接怼了)
  • 字符串转浮点数

百度SRE提前批二面挂

当时看百度Java上海没什么hc,就投sre了,挺后悔的,浪费了一次机会QAQ。

一面 8.17

1.聊经历和项目

2.tcp三次握手

3.浏览器输入www.baidu.com的全流程

4.SQL查询慢可能是哪些原因

5.Linux命令

6.算法题,很简单

7.是否对sre感兴趣

二面 8.24

1.为啥不做后盾来面sre(有点尴尬😅,我也说不出为什么)

2.从Java角度看进程和线程的区别

3.Java里面如何保证线程安全

4.详细说说你对CAS的理解

5.Linux命令

6.pagecache详细介绍一下

7.mmap

8.dns协议

9.dns怎么做负载均衡

10.如果要对RPC做性能优化,从哪些点考虑

11.突发的热搜问题怎么解决(开放题)

12.rpc这块负载均衡怎么做?轮询有什么缺陷?怎么判断各个endpoint的负载情况?

13.介绍一个你做的最满意的项目

14.Kubernetes为什么会流行?有什么优势?

15.Kubernetes部署pod的全流程分析

16.两个算法题,写完发邮件

二面结束第二天来了个电话,我当时在面试没接,过几天就挂了。罢了,可能是感觉不太match,早知道投Java了,焯。

这次的教训是不要乱投,浪费机会。

82

秋招的第一个意向字节

9月2日一面

9月7日二面

9月13日三面

9月14日hr面

9月21日意向

补充:一面当天通知过了、二面隔天通知过了、三面也是当天通知过了。

---------------------------------------------------------------------------------------------------

字节Data二面57min介绍一下研究成果?解决的问题、主要工作?变化检测的应用场景?介绍实验室相关的?研究过程中的分工?毕业要求?研究过程中的心得体会?会参考其他领域吗?编程语言相关?如何学习的?说一下classloader?了解log4j安全事件吗?系统中的静态链接和动态链接的区别?操作系统中的进程、线程?对Linux有没有更深的了解?算法题:英文题-输入是一个64bit的类型,如(010…011)->(110…010),我写的是将long转换成二进制然后反转,最后还原成long对工作的想法?哪里人?字节Data三面53minfor循环去删除集合中的元素会发生什么?ConcurrentModificationException?迭代器?(当通过 for 循环遍历集合时,一般禁止操作add or remove集合元素)项目中使用的垃圾回收器?服务器的内存,垃圾回收需要的时间?哪些元素可以做为GC Root?java线程池?项目中redis使用不同的数据结构的考量点?hyperloglog统计不精确的原因是什么?topic有8个partition,一个消费者组内有10个消费者,怎么消费?本地缓存和数据库的缓存如何保证一致性?分布式情况下?qps怎么测的?分析不使用缓存时为什么qps非常低?研究生期间做的比较难的事情是什么?算法题:全排列

83

字节跳动后端一面

楼主字节跳动正式批笔试冲突没做,挂了,然后被其他部门捞起来面试。

首先是一上来自我介绍,然后是写一道算法题。

写的是实现LRU,不许使用LinkedHashMap,允许使用HashMap和链表,链表要求自己实现,实现复杂度是O(1)

然后是面试官问几个项目,疯狂怼细节。

问到登录时用JWT,JWT能够保证安全性吗,各种问JWT的细节。

问到去中心化处理是怎么处理的(关于blockchain的)。

接下来是一些八股文。

1.知道哪些排序算法

\2. 排序算法的时间复杂度、空间复杂度、是否稳定、使用场景

\3. 快排退化为N*N的复杂度的场景

\4. HTTPS和HTTP的区别,详细描述HTTPS是如何运作的,包括一开始的密钥是怎么传输的。

反问:

\1. 表现的太烂,我就没问表现的咋样,自取其辱…

\2. 问笔试没做完挂了,是被其他部门捞起来的吗? 是的

字节跳动是面试过最难的公司,各种细节怼到爆炸。

84

9.22字节番茄小说后端开发三面面经(45min 已感谢信)

  1. 算法题,leetcode301 重排链表
  2. 飞书发起视频会议,有域名,怎么转换到ip的
  3. 网络中数据包的传输流程,具体。比如从大连到北京,是怎么传输的
  4. 场景题,飞书群里发红包,限制人数,限制总额,随机红包,给出设计方案
  5. 算法题 一个蚂蚁在12点的刻度上,可以向右走也可以向左走,走了n步最终回到12点,求有几种走法。让说思路(说了一个不对,没想出来,结束面试,寄)

85

字节后端开发二面 50分钟(已感谢信!!!)

1、聊了好久的项目,你是怎么做的?

2、多租户除了你这种解法,你还有其他的解法吗?

3、数据库的主从复制?

4、http请求get、put、post、delete的区别?

5、http请求如何认证的啊?(项目里衍生出来的)

6、数据库的delete、drop和truncate有什么区别?

86

字节跳动后端开发面试凉经

字节:

1.项目介绍

2.java的容器有哪些,说说map类型的数据结构除了hashmap,如果想要有序遍历map可以如何使用,采用那种数据结构,问hashtable是怎么保证线程安全的,加的锁属于什么锁,这个锁封锁粒度是多少

3.谈谈redis索引,B+数据结构为什么用于索引,不用红黑树,如果让你查询你觉得查询次数两种数据结构次数是不是相同

4.redis支持的数据类型,说说zset的底层数据结构是什么,跳表是查询一个数的步骤是怎么进行

5.k个一组的翻转链表,自己构建用例

87

字节 番茄小说 Java后端 9.14面试

  1. 自我介绍
  2. 选一个项目进行介绍,介绍项目中的难点和解决方案
  3. 先做一道算法题,岛屿数量(思路正确,但是dfs一开始紧张写错地方了,后面经过提醒测试过了)
  4. 计算机网络:udp与tcp的区别,udp怎么实现像tcp一样的可靠传输???拥塞控制的实现(我按照tcp握手思路答不对,应该是要基于udp本身的协议,不太了解底层协议,GG)
  5. 异步io,同步io和非阻塞io的区别
  6. 进程与线程的区别,进程用的堆栈情况,为什么要有线程,线程和进程的系统开销切换情况
  7. SQL题,平均分大于80的学科情况
  8. 反问:部门情况

88

字节暑期实习Java开发

7.29号–一面

一个小姐姐面试

自我介绍

1.点赞幂等如何保证?

2.分布式学了什么?

3.分布式解决什么问题而提出来的?

4.做分布式有什么麻烦?需要考虑把服务拆成微服务,那么维护,设计需要考虑什么问题?

5.分布式服务数据之间的流通?(这一部分分布式确实不知道回答什么 -。-,看我不太了解分布式果断终止话题,换其它)

6.spring框架用到了什么底层思想,如何实现的,有用到哪些比较基础的设计模式?

7.单例模式在哪个类用到了单例模式?

8.http和https区别,https干了什么?

9.tcp和udp区别,tcp如何解决粘包问题?

10.并发和并行区别?

11.redis有哪些数据结构 zset是一个怎样的数据类型?

12.git有用过吗? Linux系统命令 如何用过linux查看进程状态?

代码题目:一道中等题题号一千多忘了

8.2号-- 二面

自我介绍

1.问项目

2.前缀树词库如何生成?有无爬虫读取数据

3.redis相关八股:持久化机制,崩溃恢复机制,rehash过程,数据淘汰策略,线程模型,io多路复用?epoll讲讲?LT和ET区别?

4.mysql相关八股:聚簇索引b+树相关知识?abc最左匹配原则?MVCC能解决幻读嘛?redolog、binlog在哪一层?两阶段提交?加间隙锁一些原则?

5.http 502,504区别?timewait什么时候出现,它的意义?https流程

代码题:第K大 和面试官讲了下随机快排。

这部门两面,除了发现分布式相关知识确实不懂,其他八股都能基本背的上,两天后挂了。估计没啥HC了吧,反正也是拿来练练手img

过了两天后转技术中台不知道为啥给我转到客户端去了img

8.5号–一面

一个很年轻很年轻的小哥哥,甚至感觉像是实习生在面试我

自我介绍(自我介绍完后,面试官盯着我简历看了几分钟不知道问啥,几分钟后艰难的问出了问题)

1.能实习吗?

2.项目过程中碰到什么问题?

3.用redis实现共享session有什么优势吗?

4.redis缓存失效,如何保证及时更新?

(开始问八股,但是不知道为啥问的八股特别简单,当时已经觉得是kpi面了。)

5.栈和堆的区别?

6.http的header有哪些?method有哪些?

7.post也能得到数据为什么不用get?(可能想问post和get的区别吧) tcp与udp区别?

8.tcp如何保证三次握手可靠性?

9.操作系统的锁?(这个不太了解和他扯了pv操作,peterson) java里面有什么锁? 有碰到死锁的情况?

代码题:忘了

反问环节:

1.委婉的表达了是不是KPI面?(面试官尴尬的笑了笑,然后义正言辞的说道,部门肯定是有HC的,不然也不会发起面试邀请,并且表示面试官的时间都是很宝贵的(很赞同这一点)。)

2.然后进行常规反问环节

8.14号二面:

自我介绍完

正准备开始讲项目,等待老师的精彩发问,老师淡淡的说了句,好那我们来做下代码题吧?

题目1:比较版本号大小(没做过,但是不难,15min做出来)

题目2:二叉树中和为某一值的路径(就是简单的dfs,10min做出来了要我讲解思路,讲解半天,问我有没有用回溯,我和他明确肯定不需要用到回溯。target设成全局变量才需要回溯。)

题目3:离1小时还有10几分钟,不知道从哪里搞了到困难题,看不懂,直接发呆摆烂。

无反问:草草收场溜了。

周六发给我感谢信,整体流程快,面试体验良好,针对线上抗压式做题,谢谢面试官宝贵时间陪我刷题,真是栓Q!

89

字节+美团后端开发面经(已意向)

由于我本人没有记录全部问题的习惯,以下面经中的问题都是我回忆起来的一部分。

字节

一、项目

1.微服务注册与发现机制?

2.服务之间的通信?

3.负载均衡实现方式?原理?

4.项目中是否用到MYSQL调优?细说

5.实习项目

二、八股

1.线程之间的通信方式?

2.Java的notify()底层实现原理?

3.equals与==与hashcode

4.equals没有重写,调用时会调用hashcode方法吗?

5.Threadlocal原理?

6.Threadlocal和 synchronized的比较,优缺点?应用场景?

7.TCP和UDP对比,区别,使用场景,分别有哪些协议?

8.Cookie原理

9.cookie和session

10.虚拟机与docker对比,各自的用途和优缺点

11.docker与k8s的区别

12.docker的COPY指令和ADD指令区别

13.普通的二叉树寻找第k小的方法?时间复杂度?优化?

14.线程的上下文是什么?栈容量是多少?

15.介绍一下零拷贝

16.虚拟地址空间的作用?进程独占or全局共享?

17.页表存储的位置?内存不够了怎么办(多级页表与局部性原理)?

18.linux io模型

一面谈项目比较多,二面三面八股多

除此之外还有一些常见的数据库索引、调优问题,java集合问题,redis基础数据结构问题,http相关基础问题等,记不太清了

三、算法

1.最长无重复字串

2.最近公共祖先,子节点有指向父结点的指针,要求O(1)空间复杂度

3.S型打印二叉树

美团

一、项目

1.数据库怎么建表?字段有哪些?

2.索引怎么建的?

3.如何优化?

4.微服务架构的理解?优缺点?单机相比于微服务的优点?

5.实习项目

二、八股

1.JVM 与 JDK 与 JRE

2.java从代码到运行的程序的过程

3.hashmap经典问题(一系列底层原理)

4.java多线程的使用

5.线程池的使用

6.线程池执行任务的过程

7.synchronized原理(monitor)

8.Spring IOC

9.索引底层原理?为什么用b+树(IO)

10.慢查询优化

11.分库分表

12.垃圾回收算法

13.垃圾收集器的算法、使用场景

美团是项目结合八股比较多,所以问题大多和做的项目相关,记不太清了

三、算法

1.只出现一次的数字

2.海量数据统计高频数字(说思路)

3.第K大数,要求基于快排思想做。

90

字节番茄小说9.5后端一面,9.15二面

  1. HTTP与HTTPS区别
  2. 输入www.baidu.com的过程
  3. 每次HTTP都经过TCP吗
  4. HashMap数据结构
  5. HashMap什么时候扩容,扩容时间复杂度
  6. Redis Zset数据结构
  7. Zset依据什么排序
  8. 进程与线程区别
  9. 进程间通信
  10. 进程切换时都有哪些改变
  11. 进程切换时操作系统做了什么

算法题

合并区间

岛屿数量

反问

面试官没开摄像头,感觉纯纯的KPI😂

更新,约二面了(9.15)

二面 9.15(1h9min)

  1. 知不知道LRU,用什么数据结构实现,jdk里面有没有现成的数据结构(LinkedHashMap)

  2. 自定义String能不能被加载,双亲委派机制,各种类加载器的加载范围

  3. volatile了解吗,如果多个线程对某个加了volatile的数++操作,会有问题吗

  4. 怎么避免上述问题

  5. 原子类的原理

  6. 介绍下自定义线程池,核心参数有哪些

  7. KeepAlive参数是做什么的,从什么时候开始计时

  8. 来了一个请求,查询id,如何从很多id中判断哪些存在哪些不存在

  9. bitmap怎么实现的,在java中实现应该用什么数据结构(提示说int数组占用空间过大,应该用bit)

  10. 场景题,从20亿数据中挑选top10000数据,怎么处理

  11. 从很多数中取排序后的10000个数据(快排+剪枝)

  12. java怎么设置最大堆容量跟初始堆容量,怎么设置线程参数

  13. 判断题

    List<Long> longList = new ArrayList<>(); List<Integer> integerList = new ArrayList<>(); List<String> strings = new LinkedList<>(); longList.add(1L); integerList.add(1); strings.add("a"); System.out.println(longList.getClass() == integerList.getClass()); System.out.println(longList.getClass() == strings.getClass());
    
  14. 讲一下mysql分页语句,如果查询分页的index 10000到之后的数据,可能出现什么问题,怎么解决

  15. 有联合索引(a,b,c),select * from table where b > 123 and a like ‘aaa%’; 走不走索引

\16. 算法题

input

7

3 3 4 7 5 6 8

output

4

2 3 5 6

输入数组长度及数组,找到连续递增的最长子序列长度以及下标数组

大概一半问题没答出来,算法没写出来,sql也答得不好,寄

更新,当天下午约三面(绷不住了)

91

字节后端实习面经(中台)

8.29 一面(1h)

  • 自我介绍
  • 项目
  • Raft
    • Raft 是干什么的
    • 介绍 Raft 的流程
    • Leader Down 了怎么处理,怎么保障一致性
    • 了解 Prevote 吗
    • 知道有哪些项目用了 Raft 吗
  • 怎么用 go 来做并发和同步,用过 sync 包里的哪些东西
  • 锁的底层实现原理
  • go 的垃圾回收,优势在哪
  • 为什么要三次握手?三次握手的缺点是什么
  • Mysql 为什么用 B+ 树做索引,为什么不用 B 树
  • 算法:最长公共子串

8.31 二面(1h)

  • 自我介绍
  • 项目
  • 类似 课程表II 的一道算法题
  • 基于上题扩展了一下,假设我们可以同一时间修多门课,修每门课所需时间均为 1,那么修完所有的课需要多长时间(多源最短路)

9.1 三面(45min)

  • 自我介绍
  • 项目
  • 二叉树的最大宽度
  • 介绍一下 MVCC
  • Mysql 有哪些锁
  • 了解哪些开源数据引擎
  • 智力题:你有两个鸡蛋,100 层楼,鸡蛋在第 i 层或者更低的楼层丢下是不会碎的,在第 i+1 层或更高的楼层丢下是会碎的,你要找到这个 i。请设计一个方案,使得在最坏情况下需要尝试的次数最少。

9.2 HR面(20min)

  • 遇到的最大挑战
  • 最有成就感的事
  • 觉得企业的工作和学校的项目会有什么不同
  • 对部门业务了解吗
  • 有其他offer吗
  • 能实习多长时间

92

字节Data一面35min

面试官和所在部门技术栈都是go。

\1. 强引用、软引用、弱引用和虚引用的区别?

\2. java多态的实现原理?
\3. java中实现多线程同步该怎么做?高并发场景下如何解决同步问题?
\4. StringBuilder和StringBuffer的区别有哪些?String?
\5. A服务器在不停的往B服务器发包,如果发生了网络拥塞,A、B服务器分别会发生什么行为?
\6. 内存的页置换算法有哪些?口述lru实现?
\7. 物理内存和虚拟内存的区别?
\8. IO多路复用?
\9. 算法题:旋转数组找目标值、括号生成
\10. 问我对java的设想?以后做什么事情?

\11. mysql索引的结构?主键自增是严格自增的吗?高并发的情况下插数据?

面完还以为凉了,竟然火速约了二面,感恩!!!给牛友们分享一下,攒好运🍀

93

字节后端开发-电商业务-二面

二面一共47min

  1. 自我介绍
  2. 实习10min
  3. 为什么MySQL用B+树做索引而不用B树
  4. 内存缺页中断,尽量讲细一点
  5. TCP和UDP有什么区别
  6. 用UDP实现可靠的传输,有什么思路吗

接下来是三个思考题

  1. 你有一个5亿个数字的大文件,但你只有1GB内存的单片机,你的硬盘是无限的,现在我们需要对里面的内容进行排序,把排序的结果输出到一个文件里。
  2. 给定rand5()库函数,实现rand7()
  3. 30min未支付的订单,需要取消,怎么设计

一道算法题

  • 查找给定目标数字在升序数组中出现的第一个和最后一个下标,如果不存在返回两个-1

三面之后,感觉凉了

94

【字节面经】ai lab后端开发,已意向

回馈一下牛客社区,时间有点久,很多的都忘了,运气比较好总体偏简单。无hr面,三面后一周hr反馈通过,审批又过了一周,这周一意向。

背景:211本 华五硕

字节半年实习,本部门不校招,没有等转正其他部门直接溜溜球了

平时用的java开发,部门用go所以没问语言相关

有点大数据基础,实习也大数据相关部门,所以稍微有点大数据问题

一面

项目经历

实习时候的leader (估计飞书去问了)

算法 topk

二面
实习项目中学到了什么?技术深度方面?
http和rpc的区别?
http和rpc分别运行的协议,http和rpc的序列化?
数据库的join区别
数据库事务具体应用(在业务中具体怎么做,举例子)
threadLocal应用场景
redis为啥可以做缓存
redis做缓存一致性怎么解决
mr过程,求wc任务,要求拆成更细粒度来说
mr和spark比起来优缺点
计算机底层为实现并发有哪些支持
epoll的两种触发事件?

算法 最长不重复子串长度

总体来说问题都挺难回答的,不知道咋说,开放式问题比较多

三面

上来就讲项目,自己讲然后也没问技术

你觉得实习的时候部门产品的实用性,优势是什么

实习时候的mentor

然后两道算法题 二分查找 和大于等于target的最短子数组
自己未来几年的规划
还有什么想展示的他没有问到的亮点

95

字节一面java凉经

8.31 14:00-14:50 飞书视频面试

1.自我介绍+问项目

2.讲一讲项目中的rabbitMQ跟redis是怎么用的?

3.熟悉哪些限流算法?分别应用场景是什么?(令牌桶跟漏桶算法讲了下原理,应用场景没答上来)

4.讲一下mysql跟redis怎样保证数据一致性

5.数据库范式了解吗?讲一下,你设计数据库表的时候,会遵循三范式吗?(讲了三范式的原理,会遵循,但他说实际情况下不一定会)

6.讲一下InnoDB,mysql索引的数据结构有哪些?为什么不用B树?

7.java中都有哪些IO(讲了下三个IO模型跟原理)

8.讲一下Netty?底层源码看过吗?(只讲了使用过程,底层不了解,关键我简历上就写了个了解,上来就硬核源码是吧😆)

9.Netty是什么IO?为什么有了NIO还要用Netty?我直接用NIO不行吗?(封装了 NIO 的很多细节,使用更简单。 )

10.JUC都熟悉哪些?知道Atomic吗?了解CountDownLatch吗(Thread类等创建线程的方式,后面连续问两个我感觉要凉凉了)

最后:手撕没撕出来,一道中等题,代码随想录刷过,有思路但是代码没写出来,寄😭

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。注:lc46

96

2022/8/29 字节番茄小说后端实习一面

项目

  1. 会话管理怎么实现的,拦截器具体怎么做的
  2. 说一下Cookie和Session
  3. Redis里具体存的什么信息
  4. 点赞、相互关注用的Redis哪一种数据类型,底层数据结构是什么
  5. 缓存一致性的几种策略,为什么用”先更新数据库,再删缓存“

并发

  1. Java实现并发常用的哪几种方式
  2. sleep()和wait()的区别
  3. volatile怎么实现的可见性(提示内存屏障)
  4. 原子类的核心是什么
  5. CAS属于什么锁类型
  6. TreadLocal有了解么
  7. ThreadFactory有了解么
  8. 说一下ConcurrentHashMap的底层实现
  9. 线程池的核心参数有哪些;
  10. core 2, 有界队列 10,max 4, 拒绝策略为丢弃;1/3/7/13/17号线程的状态是什么

JVM

说一下Java的垃圾回收算法

MySQL

  1. 聚簇索引和非聚簇索引
  2. 写select语句看走的什么索引
  3. 如果MySQL宕机了,如何恢复丢失的数据
  4. MySQL如何实现事务

网络

  1. TCP/IP五层模型分别是什么
  2. TCP、UDP属于哪一层

算法题

lc[33. 搜索旋转排序数组]

97

字节跳动 互娱研发 后端开发面经 8.24

内部员工回复

提前批字节一面直接挂了,秋招再来一次🤪

一面1、前面几个都是项目相关问题2、Redis的热点key会带来什么问题?3、HashMap、HashTable和ConcurrentHashMap有什么区别?4、HashMap非线程安全,什么时候会出现线程安全问题呢?5、前后端分离时,cookie在什么情况下是有效的?6、前后端分离的状态如何维护?(jwt)7、jwt在前后端交互过程中通常被存储在哪里?在传输过程中是存放在什么中传输?(HTTP的header中)8、TCP的三次握手9、为什么seq要是随机值呢?10、TCP有哪些机制保证可靠性?11、通常用什么来标识一个TCP连接?12、一台机器到另外一台机器最多能有多少个TCP连接?13、HTTPS与HTTP的区别?14、HTTPS的数据加密过程?15、数据库中索引一般用什么数据结构?16、B树和B+树有什么区别?17、怎么实现分布式锁?18、如果当前线程申请了分布式锁,还没处理完就锁的时间要到期了怎么办?19、如果还需要是可重入锁呢?应该怎么设计?20、算法题:将阿拉伯数字转换成中文,如输入110010,输出 十一万零一十 算法题细节好多,面试官提醒下写了好久。。。

98

字节 PICO 一面

面试时间:08/25
面试形式:视频会议
面试岗位:后端开发

一面(45min)

  • 面试官介绍
  • 自我介绍

面试官介绍本次面试流程:算法+基础+项目+反问环节

算法

基础知识

os:

  • 进程和线程的区别?
  • 进程间通信方式?

linux命令:

  • 查看CPU状态?
  • 查看网络情况?
  • 查看磁盘大小?
  • 如何查看大小前5的大文件?

计网:

  • URL背后的过程?
  • DNS解析详细说一下?
  • cookie和session的区别?
  • session是如何保证安全性的?
  • http的状态码?
  • 502和504有什么区别? 不会
  • http请求报文的格式?

MySQL:

  • 创建索引要注意什么?
  • 多个字段都要创建索引,可以使用什么? 组合索引。
  • 使用组合索引匹配方式? 最左匹配原则

项目

  • 三种I/O多路复用技术介绍一下?
  • EPOLL的两种触发模式介绍一下?
  • 聊天服务器实现了哪些功能?
  • 支持图片视频传输吗? 不支持?
  • 为什么使用JSON?
  • 你项目中怎么定义的JSON字段?
  • Nginx是使用的那种模式实现的负载均衡?

反问:

  • 部门的主要工作内容以及技术栈?
  • 部门的规模大小?
  • 主要是在北京还是上海? 北京
  • 上班下班时间?
  • 新人培养制度?

一面已过,下周同一时间二面

99

字节data 后端开发工程师提前批一二面 面经

😅😅三面已经挂掉了,有兄弟找我要一二面面经。 HR说data 大数据开发工程师 会捞一下我。因此,来回忆一下前两面的内容,后续如果能被捞继续复习。

一面:一小时

spark 实时处理项目挖掘。

  1. 讲一下双流join?双流join 是事实表和维度表还是事实表和事实表join?
  2. Redis 主要是用来干什么的?

实验室项目挖掘。

  1. 介绍下无人车项目
  2. 介绍下Apollo OpenDRIVE 格式这里是用来干啥的,给下游导航模块提供数据的。
  3. 说一下实验环境,在哪的10公里?

两道题目手撕:

从左下角到右上角的路径个数
  1. dp写出来
  2. 用排列组合的方式会不会计算,分析分析
翻转二叉树

二面:一小时十分钟

项目介绍:

  1. 介绍一下自己一个做得好的项目。
  2. 说一下这里面难点在哪?我讲了双流join。
  3. 面试官反问如果存储的时候Redis 数据量过大咋解决的?这个问题在快手也被问到了 😱😱😱 大家知道怎么回答这个问题吗?能不能告知一下

网络:

  1. TCP 和 UDP 的区别?
    答了可靠和不可靠,答了应用场景。
  2. TCP 是怎么实现可靠性的?
    答了:ACK机制,三次握手四次挥手,流量控制,拥塞控制。没有继续追问。
  3. 为啥需要三次握手和四次挥手?
    为了保证全双工。发送方和接收方都有发送和接受的能力。没有继续追问。
  4. IP 地址和 MAC 地址的区别说一下?
    IP 是网络层,MAC是数据链路层。IP可以来做路由转发,MAC主要是ARP点对点发送。
  5. 只用MAC 地址不用IP 地址行不行?
    我说了IP可以有子网还有网段MAC不行。还有不在一个协议层。面试官说MAC地址不够?存不了这么大的范围?😥😥这个不会

数据库:

说一下事务,说一下ACID是怎么保证的。

操作系统:

说一下进程和线程的区别

算法:

写LRU cache,自己编写测试用例测试。

大数据基础:

  1. Hadoop 有哪几部分构成?MR,YARN,HDFS
  2. Hadoop 主要有哪些进程说说?NN,standByNN,ZKFailoverController,DN

反问:

  1. 部门技术难点?说难点主要在于业务的理解。
  2. 技术栈是啥?Spark 离线,Flink 实时。
  3. 发展方向?在实现流批一体?数据和计算分离?数据湖?

总结:

项目中存储的时候Redis 数据量过大咋解决的?有人知道这个问题怎么回答吗?能不能在评论区贴一下答案,谢谢!

100

字节 后端 一面凉经

  1. 项目经历

  2. 实习经历

  3. hashmap 怎么实现?

    答:数组 + 链表/ 红黑树,然后讲了一大堆添加元素的操作(算hashcode -> 算index -> 冲突解决)

    hashmap 扩容流程

    答:默认16,有个扩容阈值0.75,扩容2n

    然后呢?具体扩容过程

    答:( 沉默 )

  4. hashmap线程安全吗?

    答:不是,首先hashmap设计理念就不是多线程场景下的

    hashmap在并发场景下会有什么问题?

    答:能插入null key/ null value 肯定会有安全问题

    具体会有什么问题了解过吗?

    答:( 沉默 ) 然后说了有可能会有跟mysql可重复读一样的问题吧

    为了线程安全用什么结构?

    答:ConcurrentHashMap

    ConcureentHashMap 怎么实现线程安全?

    答:1.7 Segment数组,分段加锁 1.8 Node数组,synchronized + CAS

  5. Synchronized怎么实现的?

    答:jvm层面 取对象监视器monitor

  6. 除了synchronize还有什么方法可以保证线程安全的

    答:讲了volatile原理、然后还有Atomic原子类,CAS的ABA问题等等(感觉这个方向不太好,应该回答别的)

  7. 了解反射吗

    答:可以通过反射去拿到类的信息,赋值,执行方法等等

  8. 反射可以解决什么问题

    答:balabla讲了一大堆动态代理被打断了,然后又重复了一遍反射本身是用来解决什么东西的

  9. 反射有什么问题?

    答:需要绕过安全检查,会有安全问题

  10. 除了安全问题还有什么?

    答:( 沉默 )

  11. java内存模型

    答:讲了运行时数据区域,线程私有公有那些( = = 回答的不太对,当时应该想错了)

  12. 堆和栈有什么不一样

    答:堆存放对象实例、静态变量、字符串常量池,栈由栈帧组成,栈帧由变量表、动态链接等方面组成

  13. 申请一个对象,他会在刚刚提到的哪个内存模型模块去发生(这个问题我实在不是很理解想问什么)

    答:讲了对象创建的过程,就加载 验证 准备 解析 初始化

    对象一定会在堆里面

    答:我说我只知道有“逃逸”的名词

    追问知道逃逸对象在哪里吗?

    答:不清楚,可能是栈

  14. Spring?

    答:简单讲了IoC、AOP

  15. mysql范式

    答:背

  16. 了解mysql事务吗?

    答:ACID

  17. 了解mysql索引吗?

    答:聚簇索引、非聚簇索引(然后讲了InnoDB、MyISAM)、二级索引,讲了一堆

  18. 联合索引

    答:最左匹配原则,(a, b, c) 创建 (a)、(a, b)、(a, b, c)

  19. a = xx,c = xxx?

    答:应该是有的,因为a等于某个值,c也是按顺序的(当时回答慌了感觉凉了、不过仔细想想好像也没啥错的,其实这里用的应该只是a的索引,这个说法好像没啥毛病)

  20. b = xx, c = xxx?

    答: 没有,不遵循最左匹配

  21. 了解唯一索引吗(直接尸体冰凉,一慌全忘了)

    答:主键索引也是一种唯一索引,但唯一索引不仅仅包括主键索引

  22. 唯一索引有null值能生效吗

    答:(完全不知道)说了不可以(刚刚查了是可以的)

  23. 进程线程区别

    答:

  24. 为什么线程进程为什么性能损耗不同?

    答:可能是包括上下文切换信息不同

  25. 进程怎么跟操作系统申请资源分配

    答:完全不知道,只知道分配内存和文件描述符,会不会跟IO模型有关,系统调度

  26. 做题:num1, num2 循环大数减小数,减到有一个为0

    面试官说是简单题,但是我卡了一会,而且面试官人超好边写还给我提示,但是飞书和leetcode不一样好不习惯

    时间到了就做了一道题

  27. 反问

本人23届本科双非,感觉是无了,不过面试体验超好,面试官人很不错,很耐心,但是问题一开始都是比较大概念然后逐渐深入(然后我就原形毕露了),我太菜了qwq

101

给大家推荐几份面经吧

阿里-阿里妈妈-Java

1、mysql中myism和innodb的区别

myisam不支持事务,innodb支持事务

myisam只支持表锁,innodb支持表锁和行锁

myisam支持全文检索,innodb不支持全文检索

2、聚簇索引和非聚簇索引区别

聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据

非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

3、jvm内存模型以及程序运行时,它们是怎么一个过程

方法区

程序计数器

本地方法栈

虚拟机栈

4、jvm跨代引用是如何处理的

5、双亲委派机制的优点

6、消息中间件里的消息重复、乱序、丢失,请从生产者和消费者的角度去谈一谈

可以看出,保证消息的可靠性需要三方配合。

生产者需要处理好Broker的响应,出错情况下利用重试、报警等手段。

Broker需要控制响应的时机,单机情况下是消息刷盘后返回响应,集群多副本情况下,即发送至两个副本及以上的情况下再返回响应。

消费者需要在执行完真正的业务逻辑之后再返回响应给Broker。

但是要注意消息可靠性增强了,性能就下降了,等待消息刷盘、多副本同步后返回都会影响性能。因此还是看业务,例如日志的传输可能丢那么一两条关系不大,因此没必要等消息刷盘再响应。

如果处理重复消息

我们先来看看能不能避免消息的重复。

假设我们发送消息,就管发,不管Broker的响应,那么我们发往Broker是不会重复的。

但是一般情况我们是不允许这样的,这样消息就完全不可靠了,我们的基本需求是消息至少得发到Broker上,那就得等Broker的响应,那么就可能存在Broker已经写入了,当时响应由于网络原因生产者没有收到,然后生产者又重发了一次,此时消息就重复了。

再看消费者消费的时候,假设我们消费者拿到消息消费了,业务逻辑已经走完了,事务提交了,此时需要更新Consumer offset了,然后这个消费者挂了,另一个消费者顶上,此时Consumer offset还没更新,于是又拿到刚才那条消息,业务又被执行了一遍。于是消息又重复了。

可以看到正常业务而言消息重复是不可避免的,因此我们只能从另一个角度来解决重复消息的问题。

关键点就是幂等。既然我们不能防止重复消息的产生,那么我们只能在业务上处理重复消息所带来的影响。

幂等处理重复消息

幂等是数学上的概念,我们就理解为同样的参数多次调用同一个接口和调用一次产生的结果是一致的。

例如这条 SQLupdate t1 set money = 150 where id = 1 and money = 100; 执行多少遍money都是150,这就叫幂等。

因此需要改造业务处理逻辑,使得在重复消息的情况下也不会影响最终的结果。

可以通过上面我那条 SQL 一样,做了个前置条件判断,即money = 100情况,并且直接修改,更通用的是做个version即版本号控制,对比消息中的版本号和数据库中的版本号。

或者通过数据库的约束例如唯一键,例如insert into update on duplicate key…。

或者记录关键的key,比如处理订单这种,记录订单ID,假如有重复的消息过来,先判断下这个ID是否已经被处理过了,如果没处理再进行下一步。当然也可以用全局唯一ID等等。

基本上就这么几个套路,真正应用到实际中还是得看具体业务细节。

如何保证消息的有序性

有序性分:全局有序和部分有序。

全局有序

如果要保证消息的全局有序,首先只能由一个生产者往Topic发送消息,并且一个Topic内部只能有一个队列(分区)。消费者也必须是单线程消费这个队列。这样的消息就是全局有序的!

不过一般情况下我们都不需要全局有序,即使是同步MySQL Binlog也只需要保证单表消息有序即可。

部分有序

因此绝大部分的有序需求是部分有序,部分有序我们就可以将Topic内部划分成我们需要的队列数,把消息通过特定的策略发往固定的队列中,然后每个队列对应一个单线程处理的消费者。这样即完成了部分有序的需求,又可以通过队列数量的并发来提高消息处理效率。

图中我画了多个生产者,一个生产者也可以,只要同类消息发往指定的队列即可。

如果处理消息堆积

消息的堆积往往是因为生产者的生产速度与消费者的消费速度不匹配。有可能是因为消息消费失败反复重试造成的,也有可能就是消费者消费能力弱,渐渐地消息就积压了。

因此我们需要先定位消费慢的原因,如果是bug则处理 bug ,如果是因为本身消费能力较弱,我们可以优化下消费逻辑,比如之前是一条一条消息消费处理的,这次我们批量处理,比如数据库的插入,一条一条插和批量插效率是不一样的。

假如逻辑我们已经都优化了,但还是慢,那就得考虑水平扩容了,增加Topic的队列数和消费者数量,注意队列数一定要增加,不然新增加的消费者是没东西消费的。一个Topic中,一个队列只会分配给一个消费者。

当然你消费者内部是单线程还是多线程消费那看具体场景。不过要注意上面提高的消息丢失的问题,如果你是将接受到的消息写入内存队列之后,然后就返回响应给Broker,然后多线程向内存队列消费消息,假设此时消费者宕机了,内存队列里面还未消费的消息也就丢了

7、k8s的设计理念,源码是否看过,谈一谈这样架构的好处

8、程序计数器是如何工作的

9、volatile是干啥的?其中线

10、结合类加载和jvm内存模型说一下整个过程

11、了解那些数据库的索引数据结构?分别说说有什么好处?

12、微服务拆分的原则?优缺点?

13、启动三个线程实现顺序打印abc

14、动态代理的原理

15、容器了解多少?为什么k8s的设计里有pod,而不是直接用容器?

16、高并发场景下,有10台机器正在工作,其中有一台机器重启之后cpu load特别大,请从各个角度分析一下该现象出现的原因

17、如何用AQS实现一个锁

阿里-新零售-Java

阿里巴巴一面(55分钟)

先介绍一下自己吧

说一下自己的优缺点

具体讲一下之前做过的项目

你觉得项目里给里最大的挑战是什么?

Hashmap为什么不用平衡树?

AQS知道吗?知道哪一些呢?讲一讲。

CLH同步队列是怎么实现非公平和公平的?

ReetrantLock和synchronized的区别

讲一下JVM的内存结构

JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计JVM的堆的线程安全的?

讲一下redis的数据结构

redis缓存同步问题

讲一讲MySQL的索引结构

你有什么问题要问我吗?

阿里巴巴二面(45分钟)

根据项目问了一些细节问题

说一下HashMap的数据结构

红黑树和AVL树有什么区别?

如何才能得到一个线程安全的HashMap?

讲一下JVM常用垃圾回收期

redis分布式锁

再描述一下你之前的项目吧

你觉得这个项目的亮点在哪里呢?

你设计的数据库遵循的范式?

你有没有问题?

阿里巴巴三面(50分钟)

又聊项目

在项目中,并发量大的情况下,如何才能够保证数据的一致性?

elasticsearch为什么检索快,它的底层数据结构是怎么样的?

JVM内存模型

netty应用在哪些中间件和框架中呢?

线程池的参数

讲一下B树和B+树的区别

为什么要用redis做缓存?

了解Springboot吗?那讲一下Springboot的启动流程吧

如何解决bean的循环依赖问题?

Java有哪些队列?

讲一讲Spring和Springboot的区别

最近看了什么书?为什么?

你平时是怎么学习Java的呢?

阿里-阿里口碑-Java

阿里巴巴一面(38分钟)- 自我介绍

介绍项目, 具体一点

讲一下Redis分布式锁的实现

HashMap了解么吗?说一下put方法过程

HashMap是不是线程安全?

ConcurrentHashMap如何保证线程安全?

数据库索引了解吗?讲一下

常见排序算法

TCP三次握手,四次挥手。

深入问了乐观锁,悲观锁及其实现。

阿里巴巴二面(45分钟)

自我介绍+项目介绍

你在项目中担任什么样的角色?

那你觉得你比别人的优势在哪里?你用了哪些别人没有的东西吗?

Java怎么加载类?

linux常用命令有哪些?

Spring的IOC, AOP。

讲一下ORM框架Hibernate

设计模式了解吗?讲一下

自己实现一个二阶段提交,如何设计?

你还有什么想问的?

阿里巴巴三面(30分钟)

说一下自己做的项目

问了一些项目相关的问题

wait()和sleep()的区别

原子变量的实现原理

CAS的问题,讲一下解决方案。

有没有更好的计数器解决策略

讲一讲NIO和BIO的区别

Nginx负载均衡时是如何判断某个节点挂掉了?

讲一下redis的数据类型和使用场景

k8s的储存方式是怎样的?

Spring AOP原理是什么?怎么使用?什么是切点,什么是切面?最好是举个例子

算法题:给一堆硬币的array,返回所有的组合

阿里巴巴总监面(34分钟)

算法:给一个set打印出所有子集;多线程从多个文件中读入数据,写到同一个文件中;判断ip是否在给定范围内;打乱一副扑克牌,不能用额外空间,证明为什么是随机的。

Tcp和udp区别

线程池的原理以及各种线程池的应用场景

线程池中使用有限的阻塞队列和无限的阻塞队列的区别

如果你发现你的sql语句始终走另一个索引,但是你希望它走你想要的索引,怎么办?

mysql执行计划

数据库索引为什么用b+树?

你在做sql优化主要从哪几个方面做,用到哪些方法工具?

有没有想问的?

阿里巴巴HR面(23分钟)

自我介绍

平时怎么学习的?

有什么兴趣爱好吗?

怎么看待996?

怎么平衡工作和学习?

有没有什么想问的

阿里-阿里云-Java

一面:

项目介绍

字符串全排列

线程安全

设计题:设计一个微博系统,给了一个比较大的用户量

头条-后端 一面

1.介绍了一下做过的项目架构,和项目实现细节。面试官最近刚做了一个项目,跟我们做的项目一样,聊了比较久

2.看我之前是打acm的,说问道简单的算法题走个流程Orz。

题:一个先逆序再正序的数组,求最小值

5 4 3 2 1 2 3 返回 1

解法:二分

3.看我项目里有一个进程内缓存的项目,聊了一下,然后又问了concurrentmap和hashmap区别,concurrentmap的分段锁,最多支持多少个segment

二面

1.聊项目,聊了比较久

2.问了一到算法题,二叉树按中序遍历的方式转换为链表

解法:中序遍历,遍历的时候修改树节点的前后指针。需要用到一个辅助节点pre和一个节点记录链表头

三面

1.问了一个开放性题目,设计一个方案,根据用户地点返回附近的餐馆

按城市划分,将城市划分为网格,每个网格有不同的餐馆,先定位到用户在哪个网格,再获取周围网格中的餐馆

2.算法题:将一个字符串小数约分为分数,且分子分母约分过,需要考虑无限循环小数

1.15(3) 表示1.153333333333循环

解法:分三部分,整数部分,非循环的小数和循环的小数

非循环部分的小数变分数为x/10^n

循环部分小数变分数为y/10n(10m-1)

如上述例子中循环部分为 3/ 100*9

整数部分直接加上分数

约分使用欧几里得算分子分母最大公约数,再除一下即可

二叉搜索数第k大元素。

二叉树按层遍历。

堆排序。

topk。

两个set取交集

链表是否有环。如何找到入环节点

头条-后端

一面:

1.项目。

2.Reentranlock 与synchronized区别。 各自的底层实现

3.事务隔离级别。 innodb的默认隔离级别如何避免幻读?

\5. mvcc。快照读 当前读。

\6. jvm cms的步骤。 缺点。

\7. 有大量full gc如何排查?

\8. 堆 gc频次正常 时间正常。 出现内存泄漏是什么问题? 如何排查堆外内存? 你见过哪里用堆外内存?

\9. netty eventloop 大概做什么? io事件 读写事件。任务事件

\10. 任务事件中 如何保障多线程情况下线程安全的进行上层的writeAndFlush? mpsc队列

4.实现一个 LRU ? get为o(1)复杂度

二面。

1项目中 难点。讲两个

\2. 如何实现一个可靠传输? 序列号。校验和 重传 ack 滑动窗口。拥塞控制。等

\3. mysql架构。 sql经过解析器之后得到的解析树 如何转换成优化器的执行计划?如何选择?

\4. b+tree结构?索引的页分裂?innodb做了哪些避免页分裂的努力?都是从节点中间记录分裂吗?

\5. 辅助索引 一个范围查询。 如果当前值不在索引中。如何查处符合条件的记录的?

\6. innodb的特性? 自适应hash。聚簇索引。 insert buffer?

\7. 可靠传输一定需要建立连接吗?

\8. 双向链表消除相处重复的? 消除之后新链接在一起的仍相同继续删除。算法题 手写

\9. 数组中 指定元素值的最小下标。 如何最优?二分查找中继续二分查找 手写

\10. 红黑树特性?二叉搜索数第k大元素。 然后继续topk算法。 除了小跟堆之外。问还有别的呢? 基于快排思想的top k手写。

三面。

1.项目

2.kafka的传递保证

\3. 一次遍历打印出 二叉树的最大深度和最大宽度 (同层中节点个数最大值)

\4. 如何删除倒数第k节点

\5. 聊以后发展

头条-后端

一面:

\1. 项目介绍 20分钟

\2. mysql索引 优缺点 底层实现原理

\3. mysql的优化。 不限于sql优化

\4. mysql join原理

\5. tcp协议 如何保障可靠传输

\6. MTU是什么? MSL呢

\7. redis zset实现原理

\8. rdb 和 aof区别

\9. redis的主从同步原理

\10. 二叉树的后序遍历

\11. 二叉树按层打印

\12. 括号的有效组合

二面

\1. 项目介绍

\2. tcp udp区别。头部字节有哪些。多少字节

\3. 通过域名是如何从外网请求到你公司内网服务器的? 详细讲解一下

\4. 路由算法

\5. 当前路由到某一个节点,如何查找选择的下一个节点?

\6. ip 分几类? 如何划分的?

\7. tcptrace 请求一个目标ip。会把路由的所有节点ip打印出。是如何做到的?

\8. 最长回文子字符串

\9. 反转链表 递归。非递归

102

23秋招-阿里巴巴三面面经

应该是最晚的面试了,这轮是技术主管+hr双面,也是最后一面。

坐标:cco

岗位:Java

-

-

[主管沟通环节]

自我介绍

讲讲自己的项目

为什么要做这个项目?

饿了么,如何在附近50w的商户中,快速找到离你最近的20家饭店?

一个5升的瓶子,一个4升的瓶子,如何弄出三升的水

threadlocal了解么,讲讲

rpc用过么,讲讲你平时的实践

rpc中的序列化协议知道么,如何优化?

为什么要出国念书?

读研期间你的研究方向是什么?

[hr沟通环节]

出国留学是因为父母的建议,你是否在生活中比较容易听从别人的想法?

平时业余时间做什么?

能给我推荐一本你最近读的书么?、

了解我们部门么?

在实习中有哪些收获、进步与不足?

你觉得应聘这个职位,你的优势和劣势是什么?

你平时如何和同时同事、上级沟通?

你手上目前有什么offer?

如果给你offer,你选哪个?

103

23秋招-阿里巴巴二面面经

岗位:JAVA开发岗

部门:阿里cco

进程:二面

一共面了1小时20分钟,相比一面全是场景题,这次基本都是数据结构和算法相关的设计题目。感受偏难,不管说什么面试官都要问个问什么,有股子pua味。最后反馈说要综合对比一下才能出结果。

一个键值对如何插入hashmap?

哈希的应用场景?

图搜索场景如何应用哈希来优化?

MD5使用哈希冲突,会有什么问题?

数据结构题

1.1T数据,内存有限,如何把这些数据排序

2.一个医院,有病人,会按照先来后到排序,现在来了个病重患者,你如何设计一个数据结构和算法来处理这些病人。

趣味题目

桌子放硬币,轮流放一个,放不下时算输,如何设计必赢策略。

算法题

1.输入一个正数n,输出所有和为n的连续正数序列。

2.有一段文字,包含6个字母 ABCDEF,假设这六个字母出现的频率分别是 A 27 B 8 C 15 D 15 E30 F5。现在要进行编码,如何设计让总文本最短

104

阿里 国际事业部 Java一面(已挂)

2022.12.14 1小时20分钟

1、自我介绍

2、问实验室项目 问了很久 问得很细节

3、问微服务项目 问了很久

4、手撕 寻找二叉树路径和为目标值的路径 回溯

5、手撕 x的n次方 一直要优化复杂度 从 n 到logn 再到常数级

反问

105

阿里速卖通Java面试

一、12.6一面(80min)

​ 面试形式是阿里视频,一开始先做一个算法题:162. 寻找峰值——力扣,然后是面试部分:

0、自我介绍

1、在菜鸟实习的感受

2、看你一个项目里面是PM,在做PM的时候遇到什么问题?

3、项目中有用到过什么设计模式?

4、如果你是项目的PM,有一天线上的应用响应变得很慢,你应该怎么排查?

5、equals和hashcode方法有什么区别?如果只重写equals不重写hashcode会有问题吗?

6、String和StringBuffer和StringBuilder有什么区别?如果是一个非static类型的方法里的字符串你会使用哪个?StringBuffer是如何保证线程安全的?

7、HashMap的线程安全问题如何解决?

8、HashMap的扩容机制?jdk的升级过程中在这方面有什么不同吗?如果初始化的时候给HashMap的长度赋一个9,那他的长度就是9吗?

9、看你项目里面做了很多微服务的内容,你能说一下我们为什么要构建微服务吗?

10、synchronized工作机制?

11、wait和sleep有什么区别?

12、用过volatile吗?他和synchronized有什么区别?你是在什么场景下使用的?

13、JVM的内存模型

14、在new一个对象的时候,Java虚拟机做了什么?

15、在实习的时候遇到了什么比较困难的技术问题?

16、你是本科生对吧?看你的学院是人工智能xxxx,为什么会走Java开发的方向呢?

17、说一个作为负责人开展项目的经历

18、你是如何调动队员的积极性的呢?有没有实际的例子?

19、反问

二、12.8二面(50min)

0、自我介绍

1、说一下在学校做的机器人的项目

2、看你拿了奖学金,在学校成绩怎么样?

3、问一下操作系统吧:进程和线程的区别?

4、进程间的通信方式是什么样的?

5、套接字是什么?有用过吗?

6、问下数据结构:链表和数组有什么区别?

7、树的深度优先遍历用什么数据结构,如果不用递归的话?广度优先遍历用什么数据结构?

8、快速排序是稳定的吗?时间复杂度是多少?再说几个排序算法

9、实习做的项目,说一下架构和链路,你做了哪些工作?

10、微服务中服务发现和服务注册知道吗?如果调用方有A1、A2……A10,被调用方有B1、B2……B10,HTTP是如何请求的?

11、设计模式的七大原则

12、现在有一个Person类,他有一个手hand,hand可以去抓握杯子cup,这就有个问题是person依赖了cup,而人不一定是有杯子的,比如说在原始社会,那么你怎么设计才能解决这个问题

13、实习中了解哪些中间件?

14、反问

三、12.13交叉面(30min)

1、看你博客写得还不错,是从什么时候开始写的?

2、看你里面记录了不少算法题,考你一个算法吧:有一个文件里面有很多ip,统计出现次数最多的10个IP,你会怎么做?

3、项目

106

阿里CTO线Java面试

一、11.30一面(80min)

1、实习项目,每个都问了一遍,从业务流程到技术实现(45min)

2、有用过索引吗?什么样的字段要建索引

3、知道最左匹配原则吗?为什么是最左,而不是最右

4、设计RPC协议,从流程到报文(30min)

5、我再问最后一个问题,A和B进行TCP传输,B的网线被拔了,A会怎么做?

6、反问

总结:面试官对项目问得很细,里面涉及到的业务背景、架构设计、技术实现,包括遇到的问题都会详细问到,后面设计RPC协议的问题,也问的很细。同时面试官人也非常好,在我答不上来的地方会予以提示,把我的思路带进去。

107

阿里

面经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之间的关系。

108

时间线:
x 投递 安全工程师
x+16 一面
x+23 二面
x+32 三面
x+50 HR面
x+53 口头意向
x+56 正式意向邮件

一面

时长:30分钟

  1. 自我介绍
  2. hw的职责
  3. hw的成果
  4. 分享一下有意思的案例
  5. 每年的hw的分数和规则有什么不一样的地方
  6. 除了hw以外自己会去挖漏洞吗
  7. 代码审计的思路,审计的流程
  8. 代码审计是java还是php的
  9. java用的多吗
  10. java反序列化(fastjson、log4j、本身的反序列化的区别)
  11. java fastjson怎么修复
  12. java原生反序列化(readObject、writeObject)的修复
  13. 黑盒渗透测试的思路
  14. 找回密码的逻辑漏洞
  15. 有没有做过开发相关的,写小工具之类的
  16. 了解阿里、菜鸟吗
  17. 反问

二面

时长:35分钟

  1. 自我介绍
  2. 今年hw的经历,展开说说
  3. 这次hw和往年有什么区别,和往年不同的地方,规则、攻击方式等
  4. 对供应链的数据分的看法
  5. 甲方视角下关于代码审计的想法
  6. 对越权类漏洞的看法,从研发的角度来看的话
  7. 最近发生的安全事件以及看法(聊了spring4shell和log4shell)
  8. 可以说一下对这两个的看法吗(其实面试官问的是安全事件以及看法,但是我莫名就回答成了漏洞的原理。。)
  9. 西北工业大学攻击事件,对这样的事情怎么看
  10. 上海数据泄露事件的看法
  11. 以甲方视角聊聊对安全行业的看法,安全措施、安全策略和思路之类的
  12. 在自己的职业规划里有什么自己的要求,如果选择以菜鸟为offer的话是什么想法
  13. 为什么没留在实习3
  14. 反问

整体没问什么技术问题,大多是对某些事件、某些问题的看法,面试官介绍了很多菜鸟的运营模式、产业之类的,包括工作的路线什么的,整体面试体验很好

三面

时长:25分钟

  1. 自我介绍
  2. 介绍实习经历和项目经历
  3. 写poc的要点、会写哪些产品的poc
  4. 指纹识别的要点
  5. 做测绘引擎时的关键因素有什么
  6. 实习3的hw成绩
  7. 你们能取得这个成绩的关键因素是什么
  8. 聊了下实习3
  9. 反问

HR面

时长:40分钟

  1. 自我介绍
  2. 聊了下对攻防演练的看法
  3. 聊了下攻防演练中从防守队视角最容易或最常见的攻击类型
  4. 聊了下工作地点的意向程度
  5. 反问

HR面完3天给了口头意向,再过3天邮件正式意向

109

银泰 Java开发 一面 面经 已凉

10.12 一面 30分钟

1.自我介绍。

2.实习经历。

3.spring启动过程。

4.spring代理。

5.mysql索引。

6.mysql优化。

7.mysql隔离级别。

8.insert加锁。

9.事务隔离级别。

10.分布式事务了解,MQ实现。CAP理论。

11.JVM内存区域。

12.栈溢出。

12.堆划分。

13.年轻代GC。

14.老年代回收器。

15.G1运作。G1与CMS区别。

16.TCP/IP 四层模型。

17.四次挥手。

18.滑动窗口协议。

19.硬中断和软中断。

20.io中select poll epoll区别。

21.设计模式了解。适配器模式。

22.反问:技术栈:阿里内部,分库分表,RPC。

10.14 感谢信

110

阿里 本地生活 一面

一面

  • 部门:本地生活-履约调度研发组
  • info:业务是履约调度,外卖配送的物流全程
  1. 自我介绍
  2. 介绍科研项目
  3. 让选一个项目进行介绍
  4. 介绍一次秒杀流程做了哪些事情(包括限流、库存、下单、mq、redis等等)
  5. redis的库存减了,而数据库减库存失败,导致有的商品没有卖出怎么办?
  6. 秒杀过程中,有的商品临时加库存了,怎么处理?
  7. 数据库减库存时的乐观锁是怎么用的?为什么要用乐观锁?
  8. 消息队列向数据库方发送了重复的请求,怎么处理?
  9. 两个sql语句,一个的where条件是唯一索引,一个where条件是普通索引,两个查询的加锁方式有什么相同?
  10. sql语句中between…and…,加的什么锁?
  11. 编程:写单例模式(懒汉、饿汉 两种方式)
  12. 编程:判断一棵树是否是另一棵树的子树?
  13. 介绍一下令牌桶的原理,如果让你设计一个令牌桶的限流,你怎么做?

111

秋招面经总结

字节

一面
  1. 实习经历
  2. java哪些线程池,线程池参数
  3. synchronize和volatile区别,前者是否公平锁
  4. 单例模式有哪些写法,写出双重校验锁的
  5. 字符串全排列,结果不重复
  6. 部门:大数据,数据拼接,与算法相关
二面
  1. 实习经历
  2. 虚拟内存
  3. 局部性原理及其应用
  4. 浮点数咋在计算机表示
  5. 怎么排查问题,top命令,怎么排查线程占用高
  6. 容器最多能盛多少水
  7. str2int实现
三面
  1. 实习经历
  2. 未来规划
  3. 阿里和字节比较
  4. 字符串第一个{}里的字符串
  5. 字符串A包括字符串B所有字符的最短子串
四面
  1. 做SDK怎么提升性能,为什么分开部署比集中部署更消耗CPU
  2. 概率生成器,p概率生成1,1-p概率生成0,怎么0.5概率生成1,0.5概率生成0
  3. 字符串去除空格,原地
  4. 平时有没有深入了解什么技术
  5. kafka是推还是拉
  6. Netty为什么性能好
  7. http和rpc的区别
  8. 堆和栈,为什么堆保存对象,栈保存函数参数这些

美团

一面
  1. 实习经历,挑一个最难的点,怎么解决的
  2. 进程之间通信有哪些
  3. http和https区别,细说,对称加密和非对称加密,为什么非对称能保证安全
  4. k个一组反转链表,不足k个也要反转
  5. 阿里和字节区别
  6. 熟悉的中间件讲一下
  7. CAP理论
二面
  1. 实习经历
  2. 类只有一个int类型,这个类的对象占多大空间
  3. 页表,脏页
  4. MTU是什么
  5. 四次挥手第一次挥手时,如果客户端再也发不出消息会怎样
  6. kafka生产者发送消息瞬间,消费者突然停机,什么情况消费者重启后会接收不到消息
  7. 公平锁与非公平锁,哪个常用一点,synchronize是哪类
  8. fib数列
  9. 二叉树最大路径和

美团二面体验不太好,一方面自己在实习,八股没看的很细,只记得一点点,所以只会做题,这些不常见的八股不会,自然而然的挂了,有点可惜。

猿辅导

一面
  1. 进程之间通信,管道有什么缺点
  2. rpc,序列化协议为什么protobuf和thrift效率高,编码有没有了解
  3. hystrix进程隔离,信号量和线程池的比较
  4. 虚拟内存
  5. redis底层数据结构,跳跃表
  6. 技术上和非技术上遇到的挑战
  7. 做的这个服务治理中间件和service mesh有什么区别
  8. z字型打印二叉树
  9. 找工作看重的东西
  10. 想要做什么方向
二面
  1. 数据库连接池设计
  2. 项目介绍
  3. 还原ip
三面
  1. 设计鉴权系统,需要考虑哪些东西,怎么解决
  2. hystrix框架信号量和线程池隔离的区别
  3. 怎样设计发短信服务,不同的服务调用有不同的超时时间
  4. 为什么不在网关里做服务发现而要有注册中心
  5. 服务提供者的连接数不太一样,假如有一个宕机了,怎么做负载均衡呢

总之,猿辅导的面试体验还是挺不错的!

百度

一面
  1. 旋转有序数组求target的index
  2. 反转链表
  3. java的字符串拼接有哪几种方式
  4. equals和==区别
  5. 实现变量线程安全方式有哪些
  6. threadlocal原理
  7. aotomic底层原理
  8. finally作用
  9. concurrenthashmap原理
二面
  1. 全程项目
  2. 用到过jdk的什么工具
  3. kafka partition有什么作用
  4. 项目怎么提升性能
  5. 怎么实现熔断功能

聊得挺开心,反手一个挂,百度可真有你的。

快手

一面
  1. hashmap,treemap, concurrenthashmap区别
  2. CAS是啥,有啥问题
  3. mysql隔离级别,都是怎么实现的
  4. redis和mysql的区别和特性
  5. 在那些场景用过redis
  6. kafka主要用于什么场景,流量削峰咋实现的
  7. 分布式锁,有什么问题
  8. aotomicInteger用什么实现的
  9. 找零钱/树的最大路径和二选一
二面
  1. cookie是什么,可不可以被修改
  2. spring、spring boot、spring cloud区别
  3. http和rpc区别
  4. http哪些方法,什么时候用,对应restful的什么
  5. http有哪些请求头
  6. 二叉树2节点之间距离
  7. 旋转排序数组找最小值
三面
  1. java有哪些垃圾回收器
  2. G1的流程,G1在什么时候stop the word
  3. CMS和G1的区别
  4. redis用什么数据结构存储dau,用户登录数量
  5. 项目
  6. 怎么解决项目上线之后,由于新上线部分的代码对已有代码的影响导致出现问题
HR面
  1. 项目经历,遇到了什么问题,怎么解决的
  2. 实习经历,和学校的项目冲突怎么处理的,怎么应对压力,实习项目介绍,怎么跟别人对接
  3. 找工作看重哪些点,有哪些offer
  4. 怎么评价你这场面试的表现

一天面完3轮技术面,快手的面试体验还是可以的,而且HR面之后说2周出结果,也是刚好2周出结果,给快手点赞!

京东

一面
  1. 项目经历
  2. equals和==的区别
  3. String、StringBuilder和StringBuffer区别

面试时还说是校友,结果就问了半个小时,还问校园经历,头一次见到技术面问校园经历,一面完直接给我挂了,妥妥的kpi面。

蚂蚁金服

一面
  1. 项目经历
  2. java实现同步的方式有哪些,哪个最常用
  3. synchronized再java集合里面哪些用到了,它的原理
  4. java对象的内存布局
  5. java创建对象的过程
  6. 自己实现Boolean类型
  7. 实现Power(a, b)
  8. mysql mvcc的实现
  9. 可重复读怎么实现

八股较多,后面已经没怎么看了,招架不住,还在等消息。

拼多多

一面
  1. 项目经历
  2. 二叉搜索树其中两个节点交换了,求中位数
  3. 有写过底层的代码吗?比如网络、OS

面试官对项目经历还挺感兴趣,做的是算法工程方面的工作,可能是不匹配吧,自认为答的还可以,结果还是挂。

微软

一面

54min

  1. 给出一个整数数组,包括正数和负数,求最大不出现在这个数组的负数
  2. 给一堆金币,不能取相邻两堆,求最大能取的和。
二面
  1. excel数字转字母列号

总结

目前拿到其中一些offer,总的来说快手、猿辅导和字节的面试体验还不错,京东真的名声臭了,之前都不打算投,结果还真的这样。之后应该就不面互联网了,希望能给后来人一些帮助。

112

阿里-夸克智能搜索引擎开发实习一面

9.23阿里-夸克智能搜索引擎开发实习一面

9.23下午两点临时约面,下午四点电面

面试官听声音像二十五岁左右的大佬,光听声音就有很强的大佬气息,面试完之后还把我每一个答得不太好或者能有更优解的题目重新给我讲了一遍,还从个人角度给我提了我作为非科班走程序员道路的很多建议,非常感动,个人认为这次面试哪怕是挂了,也非常有收获,体验感满分

自我介绍

实习经历

讲下vector

讲下map

map底层

红黑树底层

红黑树创建时间复杂度

红黑树查找时间复杂度

假设有一万个数,如何找出出现次数等于10的数?

假设有一万个数,如何找出出现次数等于10的数?(数字大小:1~20万)

我答了个桶排序,面试官顺便就让我手撕桶排序

说算法时间复杂度

写完桶排序,面试官让继续写代码写查找出现次数等于10的逻辑代码(写了半天,面试官说还行,但是没这么复杂,说我想的太复杂,亲自敲了一遍代码还给我分析,最后还优化了一波)

反问环节:

面试情况

需要加强和改进的地方(面试官真的给了超多建议和自己的看法,受益匪浅!)

给阿里的面试官一个大大的赞!真的是又温柔低调又厉害的高情商大佬

113

阿里巴巴本地生活(Java凉凉经)

听得出面试官年龄不大!人特好!以下内容顺序不固定!

1、手撕算法-返回数组中频率不小于2的元素。

2、HashMap的㡳层原理,以及扩容机制,以及转化为红黑树的底层源码。

3、Redis的㡳层数据结构,以及是先缓存还是先DB。

4、HTTP的长短连接、以及HTTP的状态码。

5、Volatile和Synchronlize的区别,以及volatile关键字的用法。

6、多个Java程序运行时,如何进行查看具体是哪个进程,使用Linux命令。

7、ping是位于网络模型的哪一层。

8、MySQL数据库里面如何设置保证原子性。根据自己的理解。

9、索引的低层原理,以及为什么要用B+树,而不是用B-树之类的。

10、wait和sleep对象分别是什么。

11、反问环节,请面试官指点指点。

有些想不起来了,全程快一个小时,被问得有点蒙。再见。

114

阿里菜鸟一面面经

内部员工回复

因为是突然的电话面试,没有录音所以**只列出记得的一些问题,基本上简历上写到的都有问到。

  1. SpringBootspring****的区别?优势?
  2. 说说SpringBoot的启动类注解。
  3. SpringBoot****的自动装配是怎么实现的?
  4. 代理模式是什么?Spring的动态代理有哪些具体的应用场景?
  5. Java****三大特性
  6. 多态是怎么实现的?
  7. 泛型的类可以被重载嘛?
  8. 线程池了解吗?请求的具体流程是怎么样的?
  9. 线程最大数量和什么有关?
  10. MySQL****数据库默认的隔离级别?
  11. 索引的执行引擎?
  12. 聚簇索引和非聚簇索引?
  13. 回表指的是什么?
  14. 索引的底层数据结构?
  15. **为什么用****B+**树?
  16. 输入url到页面显示的过程。
  17. DNS是怎么用域名查找到ip****地址的,具体流程。
  18. Http****请求是怎么解析的?
  19. Http****传输完一次消息还需要重写连接吗?
  20. httphttps****发送时候的区别?
  21. Redis****的过期清理如果数据量很大的情况怎么办?
  22. MQ****的对象有哪些

115

阿里一面凉经

9.20 17:00

四十分钟电话面,举着电话手巨酸,忘记录音全靠回忆,没有算法题

  • 她自我介绍,我自我介绍(点淘,直播业务,别的没听清)
  • 聊实习项目xxx,实习中遇到的线上事故
  • 你说cpu飙升,频繁Full GC,怎么排查的及其原因
  • 公司的配置中心,实现原理?(不了解,根据自己的观点说了一下)
  • 问自己的项目,挑一个困难点聊聊(好像对我的实习项目没啥兴趣)
  • 一系列技术选型问题
  • RabbitMQ和Kafka的对比,从实现原理上说一下。(回答的不行,太久没复习了)
  • RPC框架?(想问我Dubbo,没学过,说了下自己的理解)
  • 一个http请求全过程(回答的不太全面)
  • 限流算法?(脑子抽了,只想起来滑动窗口和令牌桶)
  • IOC和AOP
  • HashMap,TreeMap,HashTable
  • Java GC
  • Redis过期数据淘汰策略
  • 一致性哈希
  • 线程池
  • 几个hr问题,如在学校怎么学习的、工作规划等等
  • todo 想起来再补
  • 反问面评:有的点可以再深入学习一下原理,不过知识面还算全面,可能太久没有复习理论知识了。

面试官是个小姐姐,面试体验还不错,很多地方都会深问一下,感觉还蛮难的…有点凉凉

焦虑…

116

阿里cto面经(三面挂)

好久没写面经了,记录一下阿里cto业务中台的三面记录。整个过程一二面面试官给我的感觉都很好,不管是专业度还是耐心,三面主管面的时候就感觉很不对劲,面试官频繁打哈欠,左顾右盼的,说话也感觉不认真,可能也是我太菜了吧,中秋完后一查状态流程结束了。阿里的电话面没有手撕。

阿里cto电话一面

自我介绍
介绍一下学校奖励和参加竞赛
在美团接的需求是产品提的吗
数据库三范式
数据库隔离级别
数据库事务性
乐观锁和悲观锁
实习内容具体说一下
你刚才说维护代码过程解决了几个bug,能具体说一下吗
你在美团实习最大的收获是什么
快速学习新语言的方法
实习过程中有没有最想学习某个人的某个方面
为什么想做一个博客
面向对象的设计原则

阿里cto电话二面

自我介绍
实习时优化的背景和优化的过程
leaf的原理
分布式ID自增产生算法有哪些
项目中比较有成就感
项目中有建立索引吗
项目的搜索是如何实现的
mysql的字符串匹配如何利用索引
博客评论功能如何实现
order by走索引吗

阿里cto视频三面

第三面主要针对实习提问,以业务为主
对实习小组的技术系统掌握到什么程度了,比如应用划分,技术协同
亿级别的数据量大概有多少
分库分表的原则,优缺点
更新的频次和数据量的大小
分库分表后热点区域的数据块的访问有什么好的解决方案吗
小组提供数据库的应用场景,在什么情况下会用
打车这里对这个服务的要求是什么
目前所做的服务在可用性方向的挑战是什么,为什么还不能用
针对实习的优化问问题

117

偶然听到的一次阿里面试

想找个没人的地方办公,无意中听见后面的师兄在面校招生,就把听到的问题记录一下:

HTTP访问一个网站,发生了哪些过程?
TCP三次握手发生了什么?
三次握手建立起来的连接,在操作系统层面表现的是什么?
JVM的内存模型
java代码运行的时候怎么进行类加载的,这个类加载和刚刚说的JVM有什么关系?
说几个线程的状态
Thread.sleep()
Thread.wait()进入哪个状态
Redis使用什么机制提高了数据读取和写入的效率?
Redis怎么保证可用性?
假设有大流量的请求进来,如何解决?
springboot支持多例吗?生命周期是多长?多例和单例的区别是什么?比如存活时间
spring里用到了哪些设计模式?
springcloud中的Nacos主要的作用是什么?
算法(只说思路):
一维数组里是正整数,会重复,求其中连续增长的最长子串的长度?如果不是连续子串呢?
41个正整数,找出其中出现次数最多的数

118

阿里后端简历面凉经

2022年3月 阿里后端简历面凉经

  1. 数组和链表的区别
  2. 100x100的二维数组先横后纵的访问性能和先纵向后横的访问性能哪个好,10000000x100000000呢
  3. TCP和UDP的区别
  4. TCP可靠性是如何实现的
  5. 设计一个可靠的UDP
  6. 三次握手和四次挥手的原因
  7. 四次挥手为什么最后要等2MSL
  8. 什么是红黑树、B树、B+树
  9. 红黑树和B树的比较
  10. B树和B+树的比较
  11. 聚簇索引和非聚簇索引
  12. 找二叉搜索树的第k大数
  13. 缓存了解吗
  14. 用B+树当索引的好处:哈希索引、B+树索引的比较
  15. 事务的四大特征
  16. 事务的隔离级别
  17. 最左匹配原则是什么,给了几个例子问查找对不对
  18. 二叉树的后序遍历口述思路

119

阿里巴巴 CTO线 java一面

2022/8/31 一面 50min

  • 自我介绍

  • Java的基本数据类型,double精度丢失,BigDecimal的原理

    计算时,先成于10的N次方,先把小数都变成整数,整数存储是没有精度问题的,做完了相应的运算之后,再除以10的N次方。

  • 手写一个String类,能否被类加载器加载;双亲委派机制,如何打破;String类可以被继承吗

  • hashmap的常规八股

  • 浏览器发送url后,域名怎么转换为ip地址;域名对应的不止一个ip(负载均衡),了解哪些负载均衡的算法

  • http和https的区别,对称加密算法和非对称加密算法的区别

  • mysql的qps从1到10000,性能的变化情况

  • 大量请求执行update语句,有什么方法优化;引入redis的数据一致性问题

  • mysql索引的底层实现,为什么用b+树,模糊查询命中索引的条件

  • mysql的事务隔离,MVCC如何实现

  • Spring bean的生命周期和作用域,BeanFactory和FactoryBean的区别

  • Spring aop的底层实现,动态代理的实现方式,在哪些实际业务中应用过

  • 线程池参数,执行原理;工作队列有哪些,有什么区别

  • 微服务的设计原则

  • Dubbo有过了解吗,rpc和http调用的区别,rpc框架需要哪些模块,负载均衡应该设计在客户端还是服务端

  • 了解微服务的网关路由吗,Spring Cloud Gateway可以用作哪些功能

  • 单机限流的算法,需要集群限流的话应该怎么实现,计数法的弊端是什么

  • 领域驱动有了解吗

  • Java面向对象的设计原则

120

【面经分享】2022阿里Java后端实习面经,已上岸

阿里JAVA后端

第一轮:电话初面试

第二轮:技术面谈

第三轮:电话初面试

第四轮:HR最后确认

一面:

首先确认对阿里的意向度(如果异地更会考虑对工作地点(杭州)的意向度!阿里很看重这个);其次面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察java的技术基础和原理,比如Spring框架以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等,重点考察是不是有比较钻研技术和技术上的亮点【不一定每个面都很厉害但一定要有亮点】;

二面:

技术面,根据项目深入的了解技术实力,了解您的知识面,了解您的问题解决能力以及技术灵活运用能力,也通过这一过程考察团队合作能力、学习主动性和创新性,可以挑选2-3个做过的有典型性的项目做一个仔细 技术回顾和自己独到的理解【这会成为您的加分项】;

三面:

他们最后的高管复试会涉及到相关的技术问题,大部分是对你的整体价值观做宏观的把控(比如上进心,责任心,心态,工作激情等)HR确认:

基本就是从大方向了解一下您的心态、抗压能力,工作中的角色、未来大致的规划以及对阿里的意向度。
【技术基础以及的问题多看看书准备下就行了,不懂的直接说不懂没关系的;在项目细节上多把关一下,根据项目有针对性的谈自己的技术亮点,能表达清楚可以引导面试官来问你比较擅长的技术问题,个人就可以尽情发挥】

阿里比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考;

阿里面试问的问题会比较底层

1、Java内存结构,spring的aop的实现方法,java数据库问题定位和性能调优;

2、关于Java异常的续承层次结构,讲述异常的续承关系;

3、java中重载和重写有什么区别,分别用什么关键字;

4、关于分布式消息队列,分布式缓存;.

5、关于hashmap源码实现, jdk

6、关于设计模式,uml,jvm 内存回收机制问题

7、java线程如何启动?java中加锁的方式有哪些,怎么个写法?

8、对乐观锁和悲观锁的理解;

9、ORACLE中的SQL如何进行优化,都有哪些方式?事务有哪些特性,在ORACLE中隔离有哪些级别?

10、介绍一下自己最近做的一个典型的项目;

11、在项目中遇到了哪些问题,自己是如何解决的 ;

12、目前系统支撑的用户量是多少,假如用户量提升10倍,系统会出现什么样的问题,如何重新设计系统【这里主要是想了解您的问题预见能力以及问题解决能力,考查思路】

13、使用memcached是一个什么样的原理

14、如何存放数据到memcached集群中,介绍一下这个过程。跟进的问题,讲一下一致性哈希算法的实现原理。

15、JVM中堆是如何管理的,JVM的内存回收机制,介绍一下

16、分布式事务实现方式

17、热点账户问题(项目中有就会问)

**第一轮技术面试(电面)涉及Java基础点(可参考):**session、java锁 、gc原理、hashmap 、listlink arraylist 区别 、aop 原理 、多线程 、kafka 原理和容错、spark hadoop 原理、redis 同步机制、classLoader 机制、Http 协议、cookie的限制、HashMap key的要求 , hashcode一致两个对象是否相等、JVM的原理……

旁听面试-java:

1、人选介绍目前目前技术管理侧重;

2、对阿里推荐对应岗位的理解度;

3、系统设计是怎么样的;

4、做的一些架构,数据源来自于哪里并深入问;

5、模块边界,缓存机制;

6、选用技术选型时,A和B的区别;

7、多线程如何用,有什么好处,和进程的区别;

8、多线程的过程;

9、多线程同步的方法,X项目中如何去实现;

10、分布式架构在你目前项目中的体现;

11、跨主机通信用过什么,接口等;

12、大数据存储;

结尾:

1、你自己觉得你擅长什么,以后想走的路线,技术还是管理;

2、Java面试题分享:

3、JMS的两种模式是那些;

4、富客户端怎么更新;

5、自己设计类似ESB这样的企业数据总线应该有哪些功能;

6、系统架构设计;

7、集群中怎么控制session;

8、怎么样知道java存中是哪一些模块消耗内存比较多;

9、应用服务器的参数调整

121

9.5阿里java一面凉经

时长:1h

方式:电话面

内容:

1.前半小时全部都在聊实习经历,问了实习的工作内容等等。

2.然后从这个开始引出了一些RocketMQ相关的内容,包括持久化,重复消费的问题。

3.提到zookeeper,dubbo,答不上来(g)

4.红黑树和平衡二叉树

5.还了解什么数据结构?

6.知道什么排序算法?时空复杂度?

7.HashMap的扩容机制,还有为什么要这么设定?

8.进程、线程,进程/线程间共享数据的方式,如何保证线程内的数据安全。

9.TCP、HTTP

10.反问

122

阿里一面

部门是高德地图,岗位是Java后端开发

自我介绍之后,面试官说没看到我的简历,所以直接开始八股

  1. 讲讲ConcurrentHashMap,讲讲扩容
  2. 线程池提交任务和回收线程的过程
  3. 阻塞队列是怎么实现的
  4. ReentrantLock是怎么实现的
  5. AQS是怎么实现的(2-5老组合拳了)
  6. 非公平锁怎么实现
  7. 介绍MySQL索引的原理
  8. 介绍Redis底层数据结构
  9. 讲一件Redis过期键的淘汰
  10. Redis的高可用是怎么保证的
  11. Redis Cluster模式怎么确定key被分到哪个服务器

2个手撕

  1. 从十亿个数字中找出最大的10个数字(不可以使用堆)
  2. 实现一个阻塞队列

9.5号已约二面

123

秋招03——我与量化私募(上)

我是大三上第一段实习接触到量化私募的,当时是做C++交易系统开发,而正是第一段实习不错的印象,让我在秋招也对量化私募赛道有较多的关注~

从阿里离职,大概有半个月时间没有面试和学习了,虽然有一家量化私募的return offer,tp以及字节,在秋招的压力下我又投递了五六家私募,九坤的梧桐计划因为我太菜挂掉了,现在暂时拿到了两家的意向,其他仍在流程中

相对来说,私募的面试在大致流程上和互联网大厂相仿,但会多一些智力题以及和个人发展相关的题目,而且也会更看重学历

1. C++:

1.1 虚函数,虚函数表生成的时期,推测虚函数储存的位置,知道其他对象模型的储存方式吗

1.2 实现shared_ptr,移动构造,拷贝构造,赋值运算符重载…

1.3 C++14/17,gcc/g++版本

1.4 C++内存模型

1.5 static的作用,静态函数和静态成员变量,编译过程和static

1.6 同一段程序在不同情况耗时不同的问题

1.7 g++使用时有什么编译选项,o1,o2是什么,有哪些优化的地方呢

2. 操作系统 & 计组

2.1 编译的四个过程

2.2 静态链接和动态链接的区别,优缺点,步骤,linux相关命令

2.3 详细讲解符号表和重定位

2.4 C/C++中浮点数的存储方式

2.5 详细解释cache miss问题

2.6 设计程序确定是否cache miss

2.7 CPU的频率大概是多少,原子时钟周期

3. Python

3.1 pandas,numpy常用函数

3.2 numpy快的原因

3.3 pandas和numpy可以优化的地方

3.4 django和falsk相关,了解fastAPI吗

4. 其他技术问题

4.1 解释k8s和docker的概念和原理

4.2 k8s和vmware的区别

4.3 解释flink的概念,理解与使用

4.4 设计信号传输集群,传输格式,储存格式,部署方式,深入具体使用的开源组件和技术细节

4.5 比较C++和Rust

5. 智力题 & 开放题

5.1 3升5升取4升

5.2 3升7升10升共10升取5升

5.3 空瓶换饮料问题

5.4 速算:100以内的加减法×98×88

5.5 奶入茶还是茶入奶

5.6 井盖为什么是圆的

5.7 人生最重要的三个选择

124

20220831-阿里JAVA一面

内部员工回复

电话面

1.自我介绍实习介绍

2.Java反射机制使用场景

3.什么时候发生Full GC

4.ConcurentHashMap和HashMap

5.了解HBase吗

6.MySQL扩容的方式

7.Redis为什么快

8.一致性哈希

9.小内存排序大文件具体怎么操作

10.虚拟内存的作用

10.Easy: 二叉树最大深度

11.项目中遇到的难点,如何解决,如何调试

12.反问

125

2022春招阿里巴巴研发实习生JAVA面试汇总

一、杭州淘系java实习生一面(2022.3.3)50min(挂)

电话面试,17:00~17:50,五十分钟的极致八股拷问,问的都不难,自己太菜了,有的没答上来

0、自我介绍

1、平时用什么语言比较多?项目用的什么语言?机器人比赛用的什么语言?

2、有用过什么中间件?(Redis)那你说说对Redis的理解?

3、使用Redis的时候有碰到什么并发问题吗?怎么解决的?

4、项目中Redis和MySQL是怎么实现同步的?

5、在数据库方面的理解?有什么比较熟的点吗?(说了MySQL性能优化的方式)

6、数据库的特性知道吗?

7、数据库的三大范式知道吗?

8、数据库的隔离级别(太菜了,这么简单的都说错了,跟分布式下的问题搞混了)

9、HashMap的底层,源码有看过吗?

10、hashmap的扩容机制

11、再说一下ConcurrentHashMap的底层

12、项目中有碰到过死锁的问题吗?怎么解决的?

13、BIO、NIO这些有了解过吗?(不会)

14、反射的原理?(说了比较浅的一点)

15、类加载器知道吗?有哪些?类加载的过程是什么样的?(这里答得也不好)

16、说说对JVM的理解?(说了JVM的内存模型)

17、垃圾回收算法有了解吗?

18、G1收集器有了解吗?

19、什么时候会触发Full GC?Minor GC?(忘了)

20、多线程了解吗?说一下线程池的参数?(少说了两个)

21、网络有了解吗?说下三次握手的过程?

22、说下四次挥手的过程?为什么要四次?

23、TCP和UDP的区别?

24、TCP的粘包?(没听过)

25、HTTP和HTTPS的区别?

26、GET和POST的区别?

27、cookie和session的区别?

28、进程和线程的区别?

29、信号量、信号这些有了解吗?

30、用户态和内核态了解吗?

31、项目中有用过哪些设计模式?介绍一下自己熟悉的

32、说一下对spring的理解?IOC和AOP?

33、spring中bean的生命周期?

34、spring的源码看过哪些?里面用过哪些设计模式?

35、分布式的原理CAP?(忘记了)

36、有了解过netty吗?有了解过dubbo吗?(没)

37、消息队列了解吗?(原理不懂)

没有算法,没有反问(???问到这已经四五十分钟了,不知道是因为要挂还是时间到了)

总结一下:面试过程中没什么互动,基本上是一问一答的形式。问得也比较基础,奈何自己太菜了,有的没答上来。还是要经常复习一下八股,真的容易忘。

挂了。

二、菜鸟网络java实习生一面(2022.3.15)30min(过)

面试官忙着开会,迟了半个小时,问的时间也短。

0、自我介绍

1、学校里课程的成绩怎么样?有没有学校的课程应用到实际的例子?(学的C语言,用在机器人项目上了)

2、机器人怎么做的,遇到的各种问题;听说我是队长,问我队员不听话怎么办?

3、看你这项目……嗯……挺基础的,就不问了吧。 (55555)

4、网络原理学过吧?知道三次握手和四次挥手吗?(我:知道,需要我说他们的过程吗)

5、不让你说过程,你就说说为什么是三次和四次吧?(……愉快地回答)

6、了解什么数据结构吗?(我:栈、队列、红黑树、平衡二叉搜索树……)

7、那你说一下树的遍历方式吧!(???我红黑树都抛出来了你就问我这? 深搜、广搜)

8、我没有什么问题了,你有什么要问我的?(???x2,没了?)

总结:面试官前一天打电话的时候就说今天很多会,所以迟一点我也有心理准备,不过面试时间挺短的,面试官全程一直在说ok,八股也就问了一两个,面试体验挺好的(主要是时间短,狗头)。

三、菜鸟网络java实习生二面(2022.3.24) 1h(过)

前几天先打电话过来让我在阿里伯乐平台上做了两个题,面试官盯着我做的那种,一个简单的算法题,一个多线程的题。

0、自我介绍

1、OSI七层模型?传输层主要做什么?

2、TCP和UDP的区别?

3、你刚刚说UDP速度快一些,为什么快?

4、HTTP和HTTPS的区别?

5、TCP建立连接和断开连接的过程

6、了解哪些排序算法?

7、怎么判断链表有环,如何找到这个环的入口?

8、如何反转一个链表?(说了之后面试官问还有没有其他实现方式,不知道了)

9、听说过倒排索引吗?(没听过,好像说的是这个)

10、如何遍历一棵二叉树?

11、了解过java语言吗?说一下NIO的优点和Netty,说一下Netty的……模型(后面没听清了,没了解过netty,就说了一下NIO,netty直接说不会了)

12、听说过零拷贝吗?(没听过)

13、说一下垃圾回收算法

14、说一下CMS的算法

15、说一下触发Full GC的条件?Minor GC?

16、为什么有了垃圾回收算法,还会内存泄漏呢?

17、静态方法和实例方法的区别?(这个没说清楚)

18、那你说一下他们的使用上有什么区别?(面试官试着引导我,但是我菜呀)

19、Java中一个字符占几个字节?int、long、double占几个?

20、ArrayList和linkedlist的区别?分别适用什么场景?

21、== 和 equals() 的区别?

22、说一下HashMap的底层

23、HashMap的扩容机制?什么时候扩容?

24、你刚刚说到负载因子默认是0.75,那为什么是0.75呢?

25、你刚刚说到哈希冲突,如何避免哈希冲突呢?(只说了两三个方法,其他的有点忘了)

26、如何实现线程安全的hashmap?(ConcurrentHashMap)那你说一下ConcurrentHashMap是如何实现的吧?

27、数据库了解吗?你说一下InnoDB 和 MyISAM 的区别?

28、你刚刚说到了索引的底层是B+树,你能说一下他是如何用B+树实现索引的吗?

29、B树和B+树的区别?

30、使用查询语句的时候,什么时候索引会失效?(说了两三个,记不清了,面试官也在问还有吗)

31、行锁和表锁有什么区别?他们是如何实现的呢?(不知道怎么实现)

32、说一下乐观锁和悲观锁

33、你刚刚说到了CAS,那你能说一下怎么解决他里面的ABA问题吗?

34、数据库的隔离级别?为什么要设置这些隔离级别,他们有什么作用?(感觉作用上面的回答面试官不是很满意)

35、你现在是大三对吧,明年本科毕业。你平时有关注什么技术吗?怎么学习的?

36、了解哪些业界比较流行的技术或者框架?说说你对他们的理解。

37、了解哪些业界的人,谁是你的偶像和标杆?(业界不认得谁啊……我说了学校的教授,面试官马上问名字是怎么写的,应该是百度了)

38、平时做的项目有过总结吗?有想过如何优化吗?怎么实现优化?(主要说了对MySQL的保护、读写分离、集群配置等,还有对并发问题的一些处理)

39、最有成就感的一件事是什么?为什么?(我说了机器人比赛拿奖的时候)

40、在机器人比赛中做了哪些努力?遇到哪些问题?你主要负责什么?(后面就是项目细节了,详细问遇到的问题,虽然面试官是做Java的,但是硬件层面的东西他都听得懂……)

41、有过实习经历吗?是一直在学校吗?

没有反问。

总结:阿里二面对八股文的广度要求还比较高,并且有好几个问题是之前挂了的一次面试里面没答上来的问题,好在后面又都看过。并且对于知识的深度也有要求,当提到一个点之后,面试官会一直追问到源码层面,死记八股文显然是不行的,还得有自己的理解和判断。同时一定要保证回答的真实性,不能瞎编。

四、菜鸟网络JAVA实习生三面(2022.3.25) 30min (过)

​ 二面面完几个小时之后,阿里的HR打电话过来,并且加了钉钉,约了第二天三面。之前的面试都是面试官直接打电话约的,并且都是电话面试,这是我第一次加上阿里的HR。三面是钉钉视频面试,面试官一看就是个大佬,气场很足,没有笑过。也就是围绕着项目在问,对一些设计提出了质疑。顺便问了问怎么学习的,在看什么书。

​ 总结:三面的面试官是主管级的,他并不问八股,也不问算法,只在意我的项目具体是怎么实现的,并且对里面的一些细节提问,对一些设计提出质疑。一定要对自己的项目细节十分清楚,并且明白这样设计的理由和利弊。

五、菜鸟网络JAVA实习生HRG面(2022.3.29) 30min (过)

三面面完几个小时之后,HR钉钉联系我,约了HR面的面试。也是钉钉视频面试。

0、面试官自我介绍

1、是哪里人?为什么选择这个学校?为什么选择计算机专业?

2、你刚刚说互联网前景好、竞争激烈,那么你能说说你有什么优势能够在竞争中胜出吗?

3、那你的不足呢?

4、你刚刚说小时候有接触过电脑,是做什么?第一次接触编程是什么时候?

5、说说你的项目吧,是怎么做的?除了简历上的项目还有其他的项目吗?

6、在前面技术面试的时候跟面试官交流这些项目,你学到了什么?(我说了有一个设计,面试官说浪费成本,应该舍弃)

7、那你现在觉得面试官的观点正确吗?为什么在当时做项目的时候要这样设计呢?(想秀技术,想巩固一下新学的知识)

8、你刚刚说到秀技术,其实很多程序员都喜欢秀技术,你怎么看待这样的行为?

9、在前面技术面的时候,你的回答有没有什么亮点?

10、前面的面试官有说我们这个部门是负责什么业务的吗?(然后给我详细地介绍了一下业务,说了一堆我又听不懂,正在发呆,忽然问我)

11、在这样的工作环境中,你觉得对你的技术和个人生活方面有什么样的提升?

12、在前面跟面试官交流的过程中,你觉得自己有哪些不足还需要弥补?

13、你刚刚说没有来过杭州,那你在杭州有亲戚朋友或者学长学姐吗?

14、结合前面的面试体验,你能不能用三五个词来概括一下阿里巴巴的面试体验?

15、假如让你从前面三个面试官中选一个作为你的导师,你更愿意选哪一个?

16、你是做后端的,为什么大学的时候会去做机器人项目呢?机器人的项目对你做后端开发有什么帮助?

17、看你经常写CSDN博客,在CSDN里面你有关注的博主吗?他的网名叫什么?为什么关注他?

18、看你写的博客有的阅读量还挺大的,你还记得这些博客吗?为什么这么受欢迎?

19、家庭情况,有兄弟姐妹吗?父母想让你去哪个城市?有女朋友吗?

20、最快什么时候能实习?现在疫情影响,学校支持出去实习吗?

21、反问

三天之后给意向书了。

126

23秋招面试记录(continuing)

已上岸

  • 字节(8/8)
  • 用友-高潜(8/29)
  • 科大讯飞(9/13)

蔚来一面(7/20)

  • map的put流程
  • redis的zset实现
  • mvcc机制
  • sql(课程a比课程b得分高的学生信息)
  • 数组中最长的等差数组(可不连续)

第四范式一面(7/21)

  • 5层网络模型中各自典型协议
  • 局域网中涉及的协议
  • 3次握手过程
  • kmp
  • 层序遍历
  • 中序和后序推倒前序
  • 反转链表

中望一面(7/27)

  • 网关作用
  • 路由器和交换机区别
  • java的gc
  • hashmap不重写hashcode或者equal方法可能导致的问题
  • hashmap长度为2的幂次的原因
  • 前后序能否推导中序

用友一面(7/29)

  • 进程、线程
  • 线程、进程的通信方式
  • ISO五层模型
  • mtu作用
  • mysql存储高精度数据适用的数据类型
  • redis数据结构(hash)
  • redis的hash的put流程
  • mysql索引组织方式
  • kafka架构

米哈游一面(忘记录了,凭记忆了哈)(8/1)

  • 大小端
  • aof、rdb区别
  • 快排的最好、最坏时间复杂度
  • 算法题:字符串转数字
  • 算法题:快排

第四范式二面(8/8)

  • 网络5层模型,如何给他人介绍此5层模型
  • 场景题:可支持多人同时点餐的小程序,点餐流程,如何推送,如何并发点餐
  • 场景题:网站支持作者发布文章、读者订阅作者,在首页推送读者订阅的作者们更新的最新的10篇文章,如何设计mysql表,写sql,谈优化,如何利用缓存

用友二面(8/8)

  • 作业编排模型,如何设计
  • 火焰图
  • 场景题:redis加分布式锁,锁时长的续费问题,如何续费,具体实现;以及续费过程中如何保证流程正常

科大讯飞一面(8/11)

  • 进程、线程区别
  • mysql事务的使用场景
  • 在浏览器中输入 www.baidu.com 在网络栈中发生的事情
  • dhcp协议
  • tcp粘包
  • 常用排序算法及时间复杂度
  • redis写入后的数据一致性

百度一面(8/15)

  • mysql超大表的处理
  • mq如何保证消息不重复
  • 算法题:给一数组,数组元素为struct{id int,pid int},要求树化

科大讯飞二面(8/17)

  • 纯项目面

百度二面(8/22)

  • 纯kpi面,不想回忆

招商银行一面(8/24)

  • 二分法能否用于双向链表
  • java的hash表底层数据结构及put流程
  • java中是多进程还是多线程,多进程和多线程的区别
  • 分布式锁的实现方式
  • 线程对临界区的保护机制
  • mysql的事务四大特性,解释原子性和一致性,能否用mysql实现分布式锁
  • 算法题:leetcode 322

招商银行二面(8/31)

  • 纯项目面

美团一面(8/31)

  • 线程和协程的区别
  • 零拷贝
  • select和epoll
  • reactor模型
  • 解释mysql事务四大特性
  • 事务四种隔离级别
  • mysql的innodb引擎的索引数据结构
  • ISO网络模型
  • http和https区别
  • https的非对称加密
  • 线程池的参数
  • 算法题:数组中最小的k个数

美团二面(9/7)

  • 电影院的数据表设计
  • pv操作
    • 商店能容纳10名顾客
    • 有一个店员,且店员一次只能招待一名顾客

阿里一面(9/9)

  • java类的装载过程
  • hashmap的扩容
  • 浏览器输入url后发生的事情
  • 协程和线程的区别
  • 设计模式

阿里二面(9/10)

  • 学习经历

美团三面(9/13)

  • 学习经历

荣耀一面(9/13)


京东一面(9/14)


深信服一面(9/18)

  • go的slice和数组的区别
  • go的select如何做到有优先级的选取
  • java的hashmap和treemap的实现,何时treemap的性能优于hashmap
  • 进程通信的方式和优劣
  • tcp和udp的区别
  • 如何使用udp完成可靠的传输
  • 函数50%的概率输出1,30%的概率输出2,20%的概率输出3

微软一面(9/19)

  • 两个字符串的最长相同子串长度

滴滴一面(9/19)

  • 协程模型
  • 虚拟内存
  • 进程切换
  • 手写协程池
  • go的defer和return
  • mysql索引
  • B+ VS B
  • 查索引的过程
  • 事务特性
  • linux的ps、find命令
  • redis数据结构
  • redis分布式锁
  • 算法题:逆波兰表达式

127

面经分享

本人投递较晚,4月20号开始投暑期,然后就只有一个阿里 kpi 一面,三十分钟,没有参考意义。

随后到五月中旬,心情很低落。被美团买菜后端开发捞了,但是一面算法没过(个人较菜)。

boss 找投递机会,准备字节教育后端开发一面(基础还行,算法又挂了)。

经同学推荐,转客户端,投递字节飞书客户端,然后第三面挂了。

然后被腾讯 pcg 捞了,只有两面,都通过了,现在怀疑是 hr kpi,池子里都是大佬。

最终在师兄的推荐下开始字节新业务后端开发日常岗位面试,终于不是 0 offer了!

美团一面后端:

\1. 自我介绍
\2. 你认为你们项目的亮点在哪
\3. 你说到 SpringSecurity,你是怎么学习的呢
\4. Linux 了解哪些命令
\5. Object 类有哪些方法,细说一下每一种
\6. 用过哪些集合类,说一下 ConcurrentHashMap,说一下 ConcurrentHashMap源码在多线程下有哪些优化
\7. wait() 和 sleep()区别,sleep() 使用过吗,怎么用的
\8. volatile 说一下(原子性,可见行,有序性,指令重排,内存屏障,volatile 原理)
\9. 线程池7大参数,原理,拒绝策略
\10. GCRoot 引用对象
\11. 新生代晋升到老年代过程
\12. 说一下索引失效
\13. 联合索引实际场景如何建立索引
\14. 数据库隔离级别分别是什么,解决了什么问题
\15. 脏读、幻读、不可重复读
\16. MVCC说了一半,面试官打断说不需要说可见行算法,下一个问题
\17. Next-key lock 提了一下,没说别的
\18. linux 命令询问,chmod,什么是777,三个777分别代表什么,分别代表那个组
\19. 框架,Spring IOC, 循环依赖,三级缓存

字节飞书客户端:

一面:

\1. 自我介绍
\2. 项目登录过程实现、SS 授权和认证过程、JWT 如何使用、如何实现表单重复提交
\3. Redis 数据同步如何解决
\4. AOP 怎么理解的,动态代理 JDK 和 CGLIB
\5. 如何理解线程池、参数、拒绝策略、原理
\6. Java 里面的锁机制,synchronized 原理、作用、锁升级,AQS原理,ReentrantLock 源码
\7. 手写 DCL 线程安全方法,解释为什么需要加 volatile
\8. 第 K 大,leetcode 215,使用快速选择排序 O(n)

二面:

\1. 自我介绍
\2. 输入 URL 访问流程
\3. TLS 什么时候使用对称加密,什么时候使用非对称加密
\4. 中间人攻击了解吗?(不了解)
\5. 可靠传输如何优化?(类似加速网络请求)
\6. DNS 缓存在代码中如何实现?
\7. 网络中的二进制如何对应真实内容?(我说的粘包,但是不对,后来说表示层的功能。再后来说前后端交互使用规定的JSON格式,但是他说JSON格式在网络中也是二进制,如何在网络中体现?我就说了序列化,然后他说序列化只是一部分,后来我就不知道了,有大佬知道可以教教我哈)
\8. MySQL 索引如何提高查询效率
\9. 如何看SQL 语句是否使用了索引
\10. 如果你设计优化器,如何优化联合索引?
\11. 如何理解事务?
\12. 面向对象语言的特点
\13. GC如何判断回收的垃圾对象?
\14. 如何判断引用计数器什么时候加1,减1?
\15. 如何知道对象什么时候被引用?
\16. 那什么时候GC进行回收呢?Minor GC、Full GC
\17. leetcode 给一个字符串,判断最长的回文子串的长度,如何优化

三面:

\1. 自我介绍
\2. 十六进制转换为十进制 代码编写
\3. 感觉一面二面面试官怎么样?
\4. 你感觉一二面令你印象最深的题目?
\5. 你还学习过哪些语言?做过哪些项目?
\6. 你认为 Python 和 Java 的区别有哪些?历史、编码过程、框架方面
\7. HTTP 的历史,HTTP 1.0、1.1、2.0、3.0
\8. 当前腾讯视频用到了哪些协议?
\9. 设计一个缓存系统,如何在客户端保存用户的图片?缓存唤出策略、缓存的级别、缓存的存储方式(文件还是数据库,什么时候用文件,什么时候用数据库)、网络图片下载失败重试
\10. 你认为你项目中印象最深刻的难题?学到了什么?
\11. 你写的代码大致有多少行?

腾讯 pcg 后端:

一面:

\1. 自我介绍
\2. 浏览器输入 url 过程
\3. MTU 和 MSS
\5. 状态码详细问答 502 504 403 404 302 301
\6. UDP 如何做可靠传输
\7. TCP 如何可靠传输
\8. 流量控制和拥塞控制的区别
\9. 考察 NGINX 如何转发,NGINX 里面包含什么
\10. AOP 动态代理 项目横切日志如何做
\11. IOC
\12. 看过那些书
\13. 如何解决慢查询
\14. 12345678 单链表,从尾部到首部每 k 个反转一次,不足 k 个不用处理,返回反转后到链表 k = 3,87654312

二面:

\1. 总监面
\2. 由于总监时间有限制,直接算法题
\3. 二分查找数组指定元素的最小索引,包含边界值处理,测试用例的设计。(算是运气好)

字节新业务后端开发:

一面:
\1. 自我介绍
\2. 数据库表如何设计的
\3. 系统中的 JWT + SpringSecurity 如何实现认证和授权的
\4. HTTP 和 HTTPS 的区别
\5. 拥塞控制和流量控制的含义和区别,包括拥塞的四个算法
\6. Innodb 索引介绍一下
\7. 项目中用到哪些索引,怎么用的
\8. 覆盖索引是什么
\9. ACID 如何保证的(undolog, AID, redolog, mvcc)
\10. Redis key过期怎么办?如何删除key?(淘汰策略)
\11. Redis 分布式锁你是怎么理解的
\12. leetcode 540

二面:
\1. 自我介绍
\2. 系统中为什么使用 Redis?怎么使用的
\3. 详解 JWT,如何实现系统登陆的,如何解决 JWT 的 Token 续期问题
\4. 防重复提交如何实现的
\5. AOP 是什么(我是从 JDK + CGLIB 源码角度解答的)
\6. 然后他说我面过好多次了,基础可以就没有问我八股了(实际上这面之前字节已经面过五次了)
\7. 做题:第一题:leetcode 763,第一题没思路,然后给了第二题:分糖果,过了之后又出了一个题:leetcode 162,还好会二分

三面:(三面没录音,记不太清晰了)
\1. 自我介绍
\2. 项目简介,问项目系统设计从软件工程的角度如何考虑,包括需求,设计,安全多角度思考(结合自己的系统)。
\3. 做题:合并 N 个不等长的有序数组为一个有序数组,动态输入。(20分钟之内)
\4. 问了操作系统 read write 底层原理
\5. 操作系统线程切换的底层原理,设计哪些寄存器的内容,如何变化的
\6. 计算机网络的拥塞控制,有哪些缺点,如何改进
\7. 了解 QUIC嘛,有哪些优点,解决了 HTTP 2.0哪些问题

128

阿里本地生活java暑期面经

楼主投阿里投的很晚(4.19才投,那会儿阿里暑期好像要结束了),能给面已经很好了,这波能意向感觉还是有蛮大运气成分的。

04.24 一面(35mins)

  1. HashMap。
  2. ConcurrentHashMap。
  3. ThreadLocal。
  4. 悲观锁乐观锁。
  5. static。
  6. 线程和进程的区别。
  7. TCP三次握手?
  8. 二分查找、排序。
  9. 索引底层。
  10. 索引覆盖、最左前缀匹配原则。
  11. 缓存击穿和缓存雪崩。
  12. 反问环节:面试评价,hc问题,后续流程问题。

总结:可能是因为我非科班,面试中问了很多偏向计算机基础的知识点,很多都忘掉了没写上去。

04.29 二面(55mins)

  • 全程项目

总结:问的挺深的,要把项目搞搞清楚才行。

05.06 hrg面(15mins)

总结:面完就感觉不太对劲,等了一周被告知不合适,估计没hc了。hr人很好帮我推荐到了其他小部门。

05.17 交叉面(45mins)

  • 全程项目

总结:还是问项目,然后扩展着问了点os和计网。

05.18 hrg面(50mins)

总结:技术(30mins)+常规问题(20mins)。

05.23 OC

  • wx告知。

05.25 意向

  • 收到邮件。

129

阿里C++暑期实习面经

(一面60min)

项目- [ ] 流程、难题、怎么解决?效果如何?
- [ ] 所用模型结构,训练模型如何设立
- [ ] 故障数据不够怎么使用神经网络
- [ ] select,poll,epoll的区别
- [ ] select阻塞非阻塞,同步异步的区别
- [ ] 服务端一下子涌入大量数据怎么办

- [ ] C++的多态
- [ ] 深浅拷贝的区别
- [ ] 指针和引用的区别
- [ ] STL各种容器及特点
- [ ] C++内存管理
- [ ] 有指针为什么还要用迭代器
- [ ] 迭代器的作用
- [ ] 查找算法及时间复杂度
- [ ] 栈溢出的原因
- [ ] TCP保证传输可靠的方法
- [ ] TIME_WAIT和CLOSE_WAIT的意义
- [ ] TCP保证传输正确的算法,保证传输安全的方法
- [ ] 什么时候会发生粘包
- [ ] 粘包怎么解决
- [ ] MYSQL的锁机制
- [ ] 怎么实现乐观锁
- [ ] 如何判别用哪个线程去操作
- [ ] InnoDB的隔离级别和特点
- [ ] 索引的目的及优缺点
- [ ] 聚簇索引和非聚簇索引
- [ ] 索引的数据结构,为什么用它
- [ ] B+树的缺点
- [ ] 索引为什么不用红黑树
- [ ] 索引为什么不用哈希表
- [ ] 内存淘汰机制
- [ ] LRU的实现
- [ ] C++的几种模式
- [ ] 单例模式是否线程安全

- [ ] 了解的框架
- [ ] 如何学习新内容
- [ ] 自己的优势
- [ ] 深度学习的意义与优势

(二面25min)

项目- [ ] 项目多大会崩溃
- [ ] 怎么定义高并发

- [ ] MYSQL定义一个递增主键,结果不连续的原因
- [ ] 查询语句LIKE走索引么
- [ ] 什么时候查询不走索引
- [ ] TCP的五层模型(从底层往上)

- [ ] 有一亿个随机数,只有1k的内存可以用,找中位数
- [ ] 轮流抛硬币,你先抛,获胜的概率

阿里云基础事业部,已凉

130

字节提前批 三面

内部员工回复

字节 后端-基础架构 三面 8.23 大约45min (二面20天后)
三面一看就是大佬,目测35+。全程只简单问了一下项目,然后就问我对于那些方面擅长一些,理论和实战方面都行,我说OS和计网知道的多一点,后面我将为自己这句话付出代价。
一、自我介绍问论文和实验室项目有没有关系,可能以为是落地项目。
二、项目(感觉大佬一眼就知道项目哪些地方值得问,上来就对着我两个项目都用到的muduo入手去问,可惜没看源码)rpc项目的日志模块怎么实现的?你用了开源的muduo库大致介绍一下(简单说了网络模型)前面说的多reactor模型,你说一下回答说主线程reactor负责建立连接,然后分发连接给子线程reactor,那会带来哪些问题?我瞎蒙惊群效应你做的rpc项目是为了完成业务吗回答只是简单模拟了一下聊天的业务序列化协议为什么用protobuf?聊天项目nginx你用了之后掌握了多少,有没有看专门书籍和源码我回答了知道正向代理,反向代理,如何配置tcp负载均衡文件,怎么解决惊群效应。ros小车项目介绍一下,我说了自己的工作内容。三、操作系统说一下你擅长的哪方面回答进程和内存管理说一下进程的调度算法有哪些?进程间通信说一下socket有多少类型内存管理说一下,寻址怎么做的?我先说根据地址线找到对应物理内存单元,然后通过控制线确定读写信号,再通过数据总线读写内存单元,再说需要mmu进行从虚拟地址到物理地址的转换。针对我说的分段,分页,端页,说一下地址转换?我觉得不能说太久,直接以分页管理来说明。页表在哪,怎么得到?现在如果系统中磁盘被大文件占满,怎么查找大文件并删除?linux内存管理的slab算法知道吗?四、计算机网络首先提问网络方面你哪些方面知道的多?http1.0,1.1. 2.0, 3.0的区别?TCP Tahoe 和TCP Reno拥塞控制算法知道吗?前面说不了解,补充了拥塞控制算法的四个过程?ip包重组的过程怎么知道网络包要不要交付二层还是三层?交换机怎么区分二层转发和三层转发?vlan知道吗?netlink听说过吗?
没有手撕,没有反问。。。感觉要寄

131

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwFp5KoA-1677410119299)(D:\books\pics\5.png)]

132

字节网络开发——系统架构面经

7.22一面

项目:

介绍下项目,交流下他们部门主要做的,好像有重合,但是做的不太一样(网络监控、流量调度),流长对应到的实际问题场景是什么

C++

  • new和malloc的区别。延申问了vector中的allocator。

  • vector是怎么开辟空间的,适用什么场景。

  • map和set的底层以及区别。

  • 动态链接库和静态链接库的区别,在实际应用中如何考虑,一般情况下内存充足,保证应用程序时间响应

    操作系统

  • 进程 线程 协程区别。延申讲到Go语言实现协程*****(那会已经听不太懂了)

  • 异步I/O与同步,I/O复用,写时复制

  • 现在内存大小16G,malloc(10G),会发生什么,如果现在再加一条语句给这些内存赋初值,又会发生什么

  • 操作系统内存的结构:五大部分。(我答了,但是面试官好像问的是要继续深入???进程调用时,内存的情况,用户态、内核态,没太听懂他要说啥了)

    计算机网络

  • ping工作原理

  • TCP如何保证可靠传输

  • 在建立三次连接时,如果某个报文丢失了,会发生什么

  • 超时重传,超时重传的时间是怎么设置的

  • 什么是TCP粘包和拆包

  • TCP是面向字节流的,那么一个消息在多个报文中,怎么来恢复这个消息

  • 流量控制和拥塞控制区别

    手撕代码:160. 相交链表

7.28二面

可能是方向比较匹配,整个聊天也比较舒服,算是相互交流

  • 介绍他本人(Google过来的)以及他们SDN团队(网络监控、网络告警、网络诊断、网络安全、网络仿真)
  • 讲项目,P4、分布测量、爬虫,处理速度有没有评估过
  • 常见的路由协议
  • 手撕:翻转数组里面出现的质数
  • 问环节:继续问他们所负责的方向,结合实验室正在做的交流了一下

8.3三面

项目:30分钟

  • 主要的问题场景,吹就行,DDoS啥的都能干

  • 在实际场景中,P4交换机难以部署(更换成本大),传统的方法可能侧重于将报文镜像到高性能服务器做分析,怎么去考虑这个问题。答:P4交换机侧重于做在线实时过滤,相比于直接镜像,减少大量工作量,吹就行。

  • Datacon比赛,关注点在数据集的大小

  • 职业规划

  • 手撕:25分钟

  • 代码改错,迭代器相关,迭代时,找到相对应的元素就删除,迭代器会失效

  • 手写实现平方根运算,会不会不收敛,复杂度之类的

    交流环节:5分钟

  • 还投了哪些公司

    8.15HR面

  • base 工作方向 有没有投其他公司 会不会继续投别的公司

  • 字节文化的介绍

  • 一周后给结果

今年形势不好,祝大家都有满意的offer!!!

133

字节 系统架构 提前批 二面

一面:

\1. http三次握手,状态码,交互细节。

\2. 为什么要三次握手

\3. 四次挥手,状态码,传输细节,为什么握手要三次,挥手要四次

\4. 数据链路层怎么传输数据的,展开说说

\5. Arp协议中网关怎么去转换ip地址到对应MAC地址的

\6. 如果数据包不在当前子网内,怎么传输到目标子网网关的

\7. MySQL的行锁怎么实现的

\8. MySQL的事务,展开说说

\9. MySQL索引了解吗

\10. 索引是怎么实现的

\11. 索引有哪些,介绍下

\12. 联合索引中间可以有null值吗,为什么,测试过吗?

\13. B+树的特点,原理

\14. B+树索引和hash索引的区别,优劣

\15. 了解死锁吗

\16. MySQL怎么解决死锁的

\17. 平时遇到过死锁吗,怎么解决的

\18. JVM的垃圾清除说一下

\19. 垃圾清除算法有哪些,介绍下

\20. 知道的垃圾收集器有些什么

\21. 垃圾的判断方法,引用计数法为什么用的没有GCRoot的多,缺点是什么,为什么

\22. 平时测试过JVM的垃圾清除吗

\23. Redis的了解,介绍下

\24. Redis的持久化机制

\25. redis怎么实现持久化的

\26. 算法题:删除链表的倒数第k个节点

总结:完全没有问项目问题,计算机网络部分问的特别细!死问我数据链路层的传输原理,答得磕磕绊绊,有好些题都没有答得很好,算法题倒是挺简单的,最后反问,面试官说我答得挺好的,但有些地方细节上还需要再学习优化下。

希望可以收到二面的通知!!!

二面: 一共1h20min,先是聊项目。
\1. Redis跳表怎么设计实现
\2. Redis的持久化
\3. Redis崩溃后怎么恢复数据,介绍下恢复的过程
\4. Redis的字符串底层数据结构实现
\5. Redis怎么对字符串进行管理
\6. 数据库的索引原理
\7. tcp的状态机,详细介绍
\8. http1/2/3介绍
\9. http和https的区别
\10. 介绍下SSL(上面提到了)
\11. 接触过网络编程吗,介绍下
\12. select,poll,epoll介绍下
\13. 你提到了select有长度限制,那长度超过了怎么办,为什么会限制成 1024个
\14. io多路复用介绍下
\15. 介绍下红黑树,插入过程说一下呢
\16. 以tcp连接过程为例,介绍下Socket编程过程中用到的api
\17. 三次握手发生在哪个api调用的阶段
\18. 具体哪两个api之间发生三次握手
\19. 介绍下拥塞控制算法
\20. 基于什么样的场景判断发生拥塞了
\21. 为什么要用三个连续重复确认是发生轻微拥塞(上面提到了)
\22. udp了解吗,说下udp和tcp的区别
\23. 从udp和tcp的数据包头来说下区别呢
\24. 操作系统的进程和线程,从底层分析下区别
\25. 进程间的通信方式
\26. 管道通信说一下
\27. 消息队列,说一下你的了解
\28. posix详细说说
\29. 共享内存说下呢,期间会用到哪些具体的linux api呢
\30. Linux的死锁说下,怎么解决死锁
算法题 :二叉树的序列化和反序列化

总结:问的很细,网络编程中间的好多api我只是粗略的了解过,答得不好,最后算法题做的也不好,虽然做出来了,但过程有点曲折,就很离谱,给个数组,要我自己建树,然后序列化,再输出数组。

134

23届秋招字节一面

数据库的隔离级别 具体问题 解决方案

乐观锁 悲观锁 自己设计实现

mysql的自增id是严格自增的吗?

服务器A向B发包 如果遇到网络阻塞都会发生什么

Java中String StringBuffer StringBulider 都有什么区别

自己设计一个深clone 说了一下思路 不会写。

算法 : 都是lc原题

旋转数组搜索

括号生成

一共大概就这么点问题 只有30min

感觉答的都还可以啊 聊的挺深的 除了深clone没写出来以外 算法都写出来了。

面这么短时间是被刷kpi了吗

135

字节跳动后端开发一面面经

#字节跳动后端开发面经# #一面面经#
2022.8.17 14:00-15:30
## 项目相关
\1. 为什么要做这个项目?

\2. 我看别人有做聊天室的项目,你怎么不做那个项目?

\3. epoll它的工作原理(具体过程)

\4. epoll、select、poll的区别

\5. 说了select线性表要从用户态复制到内核态,具体怎么复制的(用户态复制到内核态的过程)

## 进程和线程
\1. 进程、线程、协程的概念

\2. 系统创建进程的时候会给进程分配哪些资源(内存空间、文件描述符表)

\3. 线程中包含哪些资源(线程占用进程的内存空间、有自己的线程栈)

\4. 如果线程栈溢出的话,怎么发现
(用什么工具检查内存溢出,只说了valgrind,问有没有其他)

\5. 线程的资源怎么回收
(一整个说错,说成wait_pid进程回收了?)

\6. 怎么看进程当中有哪些线程(语句)

\7. 怎么查看网络的状态(netstat),如果只想看close_wait状态的连接(netstat -),并且关闭这些连接怎么办?
我说的RST,面试官说RST一个个来不够高效

## 计网
\1. HTTP协议状态码 500 501 502 503 504分别代表什么?可以举出具体场景嘛?

\2. 说一说四次挥手的整个过程,主动关闭方、被动关闭方 Time_wait 有2MSL ,为什么(两个理由)

\3. 当存在大量close_wait的连接时怎么处理?

## Mysql
\1. 什么是聚类索引和非聚类索引

\2. InooDB 为什么要使用聚类索引?
为了查询效率

\3. 什么是 InooDB里面的联合索引?

\4. 给出一个表A 有a1~a5 个列,联合索引(a2,a1)

select a5 from A where a2=1 and a1=2
( 请问用到联合索引了嘛? 它的具体过程呢,怎么回的表)

## 编程题
滑动窗口
给定一个s=abcabkbb 求最长的不重复的长度,这里是cabk 4
acm编程,小bug没有挑出来

发面经攒人品

感悟:面试官人很好,我是fw,等感谢信ing

更新:一天后收到感谢信

136

被暴捶的字节提前批后端开发-data三面凉经

三面:一小时十分钟 已挂

项目:

  1. 你对离线还是实时处理比较擅长
  2. Spark 和 Flink 的区别
  3. spark 使用的版本
  4. 你用spark streaming 不用flink 最后项目的效果是怎么样的啊
  5. 双流join 的具体过程。流A和 流B 具体用什么表示?join的时候如何判断两个同时存在
  6. Kafka 如何实现消息的有序消费?(指定partition或指定key)
  7. 指定partition的话,如果发生了数据倾斜,一个key 的数据全发到了一个partition会出现什么问题 不会😰
  8. 我回答会造成OOM,突然想到Kafka 数据是落在磁盘的。答什么内存溢出啊。追问:为什么会内存溢出?😰不知道,答得可能磁盘会满。
  9. 那怎么解决这种造成的Kafka 的倾斜问题?不会😰
  10. Kafka 同步消费和异步消费知道吗?
  11. 说一下Kafka 的分区是如何进行leader election 的?
  12. 说一下Kafka 如何实现高吞吐?
  13. 说一下零拷贝技术?说一下传统 IO 四步操作?

做题:

题干:Atoi 实现 public static long valueOf(String str)

注意以下几个点:

- 异常处理(RuntimeException),

- 状态机

- MIN_VALUE,MAX_VALUE处理

追问:这个方法是线程安全的吗?一开始回答的是需要加synchronized关键字,后来改口String不可变变量线程安全。好像答的不对。有人知道怎么答麻烦告知一下。

追问:synchronized 对静态方法加锁是怎么实现的?说下内部原理?不会😥 有人知道这个怎么回答吗?

八股:

栈里面可以有对象吗?不会

虚拟机栈里面存的是什么?

如何判断对象可回收?

GC Roots 有哪些?

场景题目:

设计一个缓存系统,10万条<key,val> 存到五台机器上如何设计?呵呵,这是让我从头设计一个Redis吗?😨

我说可以用Redis 的集群实现。面试官说,别用Redis,自己设计一个。

我:先说的按照range 分到五台上,对于数据倾斜的加上随机数在存到五台机器上

面试官:我想得到一个key,怎么知道去哪台机器上拿?如何拿到?我模拟 namenode 说的记录key和所在的块的位置,面试官给否了

我:再挣扎一下,给自己挖个大坑。我觉得也可以用哈希把key 分散到五台机器上

面试官:那再加上一个机器不就是要rehash了吗? Rehash 你打算如何去解决?不会 😥

面试官:行吧,那先这样,如果一台机器宕机了咋办

我:我觉得可以多副本,然后一个副本放在本机,另外两个放到其他的两个机器上

面试官:你还没有回答我怎么去找到缓存的key啊

我:我好像理解成设计分布式文件系统了,要的是设计cache。

时间到了,就这样吧。😥大家知道这道场景题怎么答吗?蹲一蹲

反问:

新人培养机制:面试官吹了一波字节平台好,场景多,业务线多,锻炼人适合应届生。

对我有啥建议:建议好好享受学校生活,有时间多出去玩

总结:

首先,有兄弟知道项目部分中中7,8,9如何去解决Kafka 的倾斜问题的?能不能在评论区里贴一下答案,谢谢!

这次面试暴露出自己看八股不仔细,重点知识没研究透。还有自己项目里面的细节,要给别人讲的项目重难点没有彻底搞明白很被动。发下凉经攒攒人品,继续加油加油加油!!!

137

字节提前批后端123面+hr面面经

一面 220728

做题

剑指 Offer II 026. 重排链表

操作系统

进程与线程是什么,区别和联系

进程间通信方式有哪些,用过哪些

了解虚拟内存吗?说一下虚拟内存的好处和解决哪些问题

介绍一下主从Reactor

linux看CPU、看内存、看网络、看磁盘的命令分别是什么

linux如何寻找大文件[gg]

git命令都有哪些,大体介绍一下

计网

说一下分层,每一层干啥的有啥协议

TCP协议和UDP协议的报文中都有哪些东西

TCP协议里面的seqNum是怎么初始化的

HTTP协议 一共有多少种

HTTP状态码有哪些

HTTPS协议握手过程

Redis

redis的rbd和aof的文件存储格式

redis如何实现主从同步

redis rdb的时候发生了啥 写时复制机制

redis 怎么查大key

项目

略,就是让我介绍一下,没深入问

总结

比较注重操作系统计网

二面 220802

八股

unicode和ascii的区别

utf8和unicode

java注解用过吗,怎么用的

用过什么rpc框架,大概说一说

TCP和UDP都适合什么场景

HTTP3为什么用UDP

java注解了解吗, @Target和@Retention都是干什么的

写一个简单的SQL: 将表中所有id>3的数据的名字更新为张三

java GC: 新生代老年代、可达性分析、三种清除

java8默认的垃圾收集器

java的容器类,大体介绍一下

ArrayList和LinkedList的底层实现

HashMap和TreeMap的底层实现

做题

leetcode 70. 爬楼梯

leetcode 25 k个一组翻转链表

实习

简略的问了下

总结

面试官很和蔼,做题的时候会尝试让你想出多个解法

三面 220809

问题

让你去设计一个可靠的通信协议你去怎么设计

HTTP3的新特性

HTTP2的新特性

数据库索引了解吗

数据库联合索引是啥

最左前缀原则: 一个sql题,给你一张表还有几个语句,判断走不走索引

数据库事务了解吗

Mysql怎么实现的可重复读

undolog里面具体存的啥

项目一(我把一些与项目无关的问题放到这了)

raft协议当时是怎么搭建的

最开始怎么选举

选举完了命令传播怎么传播

commitid applyId都是干啥的

如果从节点挂了会怎么样

如果主节点挂了怎么开启新的选举

这个项目遇到的难点

项目二(我把一些与项目无关的问题放到这了)

redis 渐进式rehash

redis rdb写时复制

为啥项目里要用netty

netty比javaNIO好在哪

为啥用protobuf,比json好在哪里

总结

较长的时间都是在问项目,会让我比较项目中与实际工业界的项目有哪些不足,有没有优化思路

面试官比较和蔼,会跟我探讨和提醒

四面hr面 220810

平时怎么学习技术

家是哪的,未来想去哪里工作

可以来实习吗

为什么选择做后端

。。。

还有几个忘了

意向书 220817

从6月21号放暑假复习到今天基本一天没歇,感谢字节给我校招的第一份offer!!!

138

字节跳动提前批 面经(已意向)

更新

一周又一周,本来说上周三出结果,到这周还没,我感觉要凉了,无限的审批中

9.1更新,两周啦,🈚️

9.2更新,hr打电话说下周出结果

9.6更新,昨天中午社招官网状态变成面试已完成,今天收到意向书

前言

因为一直在实习,没投提前批,看着字节提前批快结束了,就投了简历,互娱研发,后端开发,然后第二天就发邮件选面试时间

一面

没问项目,没问实习经历,只问了一些基础

  1. ArrayList和LinkedList的区别,设计一种数据结构能够结合这两种结构的优点
  2. Java所有类都有一个共同的父类是什么,那个类有什么方法
  3. hashcode和equals的关系是什么
  4. 工作中哪里用到了hash
  5. 项目中的JVM用的是什么回收器
  6. 介绍一下CMS回收器
  7. 计算机基础课程熟悉哪些
  8. 为什么三次握手是三次,四次挥手是四次
  9. 介绍以下操作系统的内存管理
  10. 什么是页面置换
  11. 进程和线程的区别
  12. 算法题1:原创的,类似组合总和2
  13. 算法题2:二分找到有序数组中某个数最左边和最右边的位置

第二天早上十一点左右约了二面

二面

二面比较难,问了很多场景设计、系统设计的问题,由于比较有针对性,我就不详细描述了,大概就是让我现场设计一个系统,从接口、数据存储、前端等等方面都要设计,考的是平时的积累和代码习惯

还有写sql,也没写出来,就说了一下思路,是那种很具体场景下的sql

算法题,是之前没见过的,返回比目标数最大的最小的数,说思路说了一二十分钟,写代码写个半个小时

项目里做过最有挑战的地方是什么

面试结束前问了几句八股:

  • 什么是用户态和内核态
  • 什么情况下会导致用户态切换到内核态
  • 系统调用是什么

问的都是比较灵活的问题,面完觉得自己要凉了,第二天早上十一点左右发邮件约的三面

三面

三面是主管面,感觉气氛有点沉默,面试官一直在思考要问我什么,哈哈

  1. 堆和栈的区别是什么?gg
  2. 平时工作中用到了什么设计模式,我说策略模式,面试官:手写一个策略模式吧。gg
  3. mysql调优的经验
  4. 多线程间的同步
  5. tcp和udp的区别
  6. tcp的拥塞控制
  7. 你的优点是什么
  8. 一道智力题
  9. 你需要改进的地方是什么(没答上来,确实想不起来)
  10. 算法题:k个一组反转链表
  11. 未来一两年的职业规划

其他想不起来了,从二十分钟开始就一直在聊天,四十来分钟结束的,结束后一个多小时约了hr面

hr面

常见的hr面问题,十五分钟结束,现在等结果中

139

字节跳动后端开发面经(已意向)

内部员工回复

先讲一下时间线吧,7.7号投递 -> 7.17一面 -> 7.21二面 -> 7.28三面 -> 8.2HR面 -> 8.13OC -> 8.15意向

因为楼主没有录屏,所以可能有些遗漏。

一面 7.17(60min)

一面的面试官给我留下了非常好的印象,面试开始时告诉我他有两个显示器,所以有时目光不会直视我,并且他会做一些必要的记录,如果我回答完他没有立即回应的话,希望我能理解。

1.自我介绍(介绍实习项目)
2.根据我的实习项目对我进行提问,问的较为仔细,需要对自己的项目有较深的理解
3.OSI7层网络了解吗?说说具体有哪些层,并且每一层起到什么作用?互相之间如何协作?
4.应用层,传输层,网络层,数据链路层都有哪些协议?它们都起到了什么作用?
5.MAC地址在传输过程中会改变吗?
6.CSMA/CD协议作用于哪一层?如何工作的?如何降低碰撞几率的?
7.TCP三次握手,四次挥手聊一聊?
8.进程,线程,协程了解吗?说说他们的特性和区别。
9.select,poll,epoll的区别?
10.进程间的通信方式有哪些?共享存储的优点和缺点分别是什么?消息队列与管道相比有什么优势?
11.JDK8默认使用的垃圾收集器有哪些?新生代为什么普遍采用复制算法?老年代为什么普遍采用标记清除算法?
12.虽迟但到的算法题环节:
(1)接雨水
(2)链表每k个进行反转

二面 7.21(70min)

1.自我介绍(介绍实习项目)

2.也是针对项目进行提问,相较于一面更为深入,例如会问为什么选择使用这项技术?有没有和其他技术进行过对比?可扩展性如何?

3.TCP和UDP区别是什么?TCP依据什么来保证可靠性?TCP是面向什么进行传输?

4.HTTPS和HTTP的区别?HTTPS协议链接建立流程是什么?HTTPS中的S代表什么?介于拿两层之间起作用?对于应用层透明吗?

5.数据链路层为网络层提供了哪些服务?ARP协议是哪一层的协议?

6.ICMP报文能起到哪些作用?分别是如何起作用的?

7.虚拟内存了解吗?有什么作用?

8.讲讲请求分段,请求分页,请求段页的实现方式及使用场景

9.请求分页的具体工作流程能不能讲讲呢?页面置换算法有哪些?(其中我说了LRU,结果后面算法题出的就是LRU😂)

11.你平时喜欢使用什么关系型数据库呢?(回答的是mysql)

12.mysql一般使用哪些引擎呢?

13.Innodb和myisam的区别是什么呢?哪种情况下该使用innodb,哪种情况下使用myisam呢?为什么?

14.当查询数据库时使用limit 10000,10有什么弊端?有什么好的解决方案吗?

15.什么时候索引会失效?能够使用>和>=的时候你会使用哪一个?为什么?

16.当查询条件有xx == null 时索引一定会失效吗?

17.执行计划了解吗?

18.智力题

有36匹马,6赛道,每条赛道之间的名次不可知,只能获知单条赛道马的名次,问最少比多少次能知道前三名?

19.算法题

(1)LRU(后面又让改成带过期时间的LRU,我使用的惰性删除)

(2)查找旋转数组(时间复杂度要求O(logn))

三面 7.28(70min)

前两面面试官询问Java方面的知识点比较少,三面面试官问的比较多

1.自我介绍(介绍实习项目)

2.针对实习项目和简历中的项目展开地毯式考察(花费大概25min)

3.HashMap如何是如何实现的呢?JDK8HashMap的散列算法能不能从源码层面来介绍一下?为什么扩容是两倍呢?自己手写实现过HashMap吗?

4.我看之前答垃圾收集器答的蛮好的,你能介绍一下CMS垃圾收集器的优缺点吗?为什么CMS会将serial old作为后备垃圾回收器?

5.对象只会被分配到堆吗?(答:不是,还有可能会栈上分配)

6.什么时候会进行栈上分配?

7.ThreadLocal的作用?如何实现?会不会出现内存泄漏?如何避免内存泄漏?

8.Spring AOP 的作用?如何实现的?

9.Spring 自动注入如何实现?(这个涉及的方面就比较多,讲了好久)

10.了解SSD的原理吗?(答:不知道,只知道磁盘,所以就讲了下磁盘存储原理和寻道算法)

11.操作系统是如何判定内存访问越界的?

12.访问越界后操作系用会如何进行处理?

13.用户态转换到核心态的过程?

14.进程切换过程?线程切换过程?

15.当我们ping的时候发送的是什么包?

16.TCP协议头部长度是使用哪个字段?如何计算的?

17.TCP如何实现流量控制和拥塞控制?

18.TCP的滑动窗口移动流程你能具体讲讲吗?

19.当我们输入一个SQL查询语句时,mysql数据库引擎是如何执行并得到最终结果的?(答:先查询缓存->解析器->优化器)

20.智力题

(1) 一个桶能存储5升水,一个桶能存储3升水,如何操作能量出4升水?

(2)两根质地不均匀的木头,从一端烧到另一端需要60分钟,如何操作能准确量出15分钟?

21.算法题

你之前说了解析器,那我现场出一道算法题吧,我会输入一个SQL语句,你需要将where后面的查询条件解析为一棵规则树

例如:where (a == b and c == d) or (e == f or (g == h))

我需要生成一棵树,结构为

or

- and

- a == b

- c == d

- or

- e == f

- g == h

楼主运气比较好,肌肉记忆写出来了,面试官几个测试用例也通过了,算是有惊无险。

HR面 8.2 (30min)

询问实习期间的挑战和解决问题的思路,就拉拉家常,如实回答就好~。

HR面完后,HR加了我微信,长达11天的审批流程后终于OC。

总结

总的来说,字节跳动后端开发考察具体语言知识是比较少的,计算机网络,操作系统原理考察的比较多。智力题也会进行考察可以事先准备下。算法题我的体验是每面都有一道Hard,不过是比较常见的(除了最后一面)。

面试体验也十分的好,可能是我运气好,没有遇到故意刁难的面试官,特别是最后一面的面试官,一直在呵呵的笑(很友善),搞得我也一直在笑,哈哈。

今年秋招十分的不容易,希望这篇面经能帮助到大家~

对了,楼主base成都

140

字节跳动飞书提前批二面

\1. 问项目

\2. 进程间通信的方式

\3. 信号量是什么

\4. 共享内存是什么

\5. 用过共享内存吗,接口是什么

\6. 全局变量放在头文件还是cpp文件

\7. #define的作用是什么

\8. unorderedmap原理

----回答不出来开始问性格了

\9. 你觉着你自己有什么优点

\10. 你觉着你现在有什么缺点需要克服

\11. 你对去互联网公司和去车企国企有什么想法

算法:

给定一个不重复字符串m“abcd”,和一个字符串n“fdbsradcadcbewrfds”

从n中找出连续子串的开始下标,要求找出的连续子串中的字符和m中的字符一样,不要求顺序一样。如果找不到返回-1

(给十五分钟,飞书竟然还支持倒计时,十五分钟到了面试官就说看一看然后就开始说其他的了,没让我写完再运行,我是小垃圾,我没法十五分钟写完。)

准备的java让我面c++那我不铁定挂,啧,秋招运气不好的事情也太多了吧。

141

字节Pico后端面经

一面

Http状态码:301 302 304 403 499 502 503

Http/1.1 http/2,https的传输过程
进程,线程区别,线程调度
进程内存模型
同步 阻塞 非阻塞
异步,以及它们的区别

Utf-8与unicode的区别

MySql的执行流程

Innodb的行锁是怎么实现的,
隔离级别
Limit分页的执行流程
一道sql(自连接)

一道算法(打家劫舍改编版)

二面(已凉)
项目交流
C++与Go语言的区别
C和C++的内存模型
栈和堆的区别
什么变了量会存栈里面,什么变量会存堆里面
静态对象放在什么区
C++代码从编写到最后执行的流程
C++里面怎么实现线程
网络分层以及代表协议
Mysql数据库的常用引擎以及它们的区别
为了保证网络接口的安全性,需要做哪些措施

代码题,K组翻转链表(全部写出来,定义数据结构,创建链表,然后链表翻转)

142

23字节校招后端凉经(一面,如有后续持续更新

面试概况

投递较早,投后半个月左右约面试,时间线较长。
曾经挂过一面,不清楚是否会有影响。
面试时间大约50分钟,用飞书面试,有手撕代码环节。
面试官算比较好说话,整体体验不错。

面试内容

十分钟左右简历+自我介绍,十分钟八股,二十五分钟做题,五分钟反问。
由于我是非科班,问了学过的课程、实习经历等。
八股题

  • 实习项目用的什么数据库?(MySQL、Redis)
  • MySQL和Redis特点、使用场景对比?
  • 关系型和非关系型数据库对比?
  • MySQL索引(类型,特点,使用场景),Redis索引?

算法
LC739: 每日温度。单调栈可解。一开始没想起来,给了提示。

反问
技术栈:Go相关内容(没展开讲)
面试反馈/评价:不能透露。

总的来说面得一般,算法写得比较慢+一开始没想起来,从反馈猜出来八成是凉了。后面继续努力吧。如果有后续再更新。

143

字节跳动 火山引擎 秋招 一面

2022.08.11 20:00

45分钟

1.介绍下你的秒杀系统,深挖redis,数据一致性,MQ消息可靠性

2.秒杀用户退款了怎么办

3.mysql的锁有哪些呀

4.简单介绍下堆和栈的区别

5.TCP三次握手

6.TCP怎么保证可靠

7.让你设计一个微信朋友圈的点赞功能,你怎么测试呢

8.算法题:字符串模式匹配,例如“aabb”匹配“北京 北京 杭州 杭州”,输出为True;“aabb”匹配“北京 北京 北京 北京”False

144

字节国际化电商 后端开发二面

  1. 拥塞控制
  2. 服务器挂掉了,客户端会怎么做
  3. tcp三次握手和accept函数
  4. 数据库隔离级别,脏读和幻读的区别
  5. 虚拟内存、请求调页的具体过程
  6. select语句的存储引擎执行过程
  7. 算法:给定m个不重复字符。求一个字符串中刚好由这m个字符组成的连续子串的起始位置

145

字节国际化电商 后端开发一面面经

  1. 项目难点、解决方案、如何应用在实际场景中
  2. MySQL:读写分离的应用场景、主从复制的实现原理、慢查询优化、引擎、采用的索引
  3. Redis:zset底层数据结构,使用场景(评论点赞)
  4. 算法:一个先升序后降序的数组,求数组中不重复元素的个数:双指针,一个在头一个在尾,往中间移动。类似合并两个有序数组

146

字节提前批 AI LAB 后端开发 一面面经

面试官人很好!虽然我菜,但是聊的很开心(自以为

———————— 面经—————

  • 自我介绍
  • 问答环节(15min)
    • 介绍下实习干了啥
    • 分布式锁有了解么,有哪几种,挑一个说一下
    • channel 关闭的时机
  • coding
    • 最长回文字符串
  • 智力题:一个圆形棋盘,双方分别下子, 采取什么策略能赢,规则:
    • 你先下
    • 下子的地方不能重复
    • 谁没地方下谁输

求个二面!!!

147

字节C++ 一面

0811 2pm

\1. 自我介绍,没聊项目相关的,直接开始做题

\2. 给一个swap指针的函数,参数是指针,问输出是什么,然后问怎么改可以swap值而不是指针。这个地方有点没有理解清楚题意,中间挺卡的,后来又沟通了下才懂,很简单。

\3. 内存对齐,一个struct问占多少空间,CPU读某个值读几次

\4. 虚拟内存是怎么实现的,页表的原理

\5. 有哪些中断,讲一讲中断

\6. 页式存储比段式存储好在哪里

\7. linux用的是几级页表

\8. 进程和线程的区别

\9. 进程的内存分区

\10. 线程独占的资源

\11. 线程的同步机制有哪些

\12. 如何设计生产者消费者

\13. 自旋锁和互斥锁的区别,如何用原子操作来实现互斥锁

\14. 无锁队列

\15. 操作系统你还哪里比较熟悉吗?(…)

\16. top命令是怎么实现的

做题:

\1. flood fill 简单题,自己处理输入输出

\2. 如何判断大端序、小端序

应该是凉了,但是面试官人很温柔,而且好帅啊,面试体验不错!

148

字节 新业务 后端 日常实习

这是22年6月初的面经,挂上的有点晚啦~~

字节 一面

  • 时间:70分钟
  • 自我介绍+设计题+基础+编程
  1. 设计题:设计微信群(可5000人的群)发/抢红包的功能

  2. 接上:会涉及到哪些数据库表的修改?

  3. 接上:你觉得在哪些地方会用得到redis和消息队列?

  4. 计网:介绍一下七层模型。

  5. TCP和UDP的应用场景分别是什么?

  6. HTTP的短连接与长连接

  7. TCP拥塞控制的慢开始

  8. 了解网络代理吗?

  9. 说一下你了解的Linux指令

  10. 删除文件的时候,rm -rf,为什么要加-rf之类的东西?

  11. 了解软链接和硬链接吗?

  12. 杀死进程的指令中,kill -9 pid,为什么要加“-9”才能强制杀死进程?

  13. 说一下数据库事务的ACID特性。

  14. 介绍一下悲观锁和乐观锁

  15. 乐观锁是怎么实现的?

  16. 数据库加了读锁,还能加写锁吗?

  17. 数据库如何避免一个事务的写操作对另一个事务的读操作产生影响的?

  18. 你了解sql语句的“for update”和“share mode”吗?

  19. 数据库的持久化特性:数据库崩溃是怎么恢复的?

  20. 编程题:**763 划分字母区间

  21. 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

  22. 返回一个表示每个字符串片段的长度的列表。

    示例:
    输入:S = “ababcbacadefegdehijhklij”
    输出:[9,7,8]
    解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。
    每个字母最多出现在一个片段中。
    像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。
    提示:
    S的长度在[1, 500]之间。
    S只包含小写字母 ‘a’ 到 ‘z’ 。

字节二面

  • 时间:60分钟
  • 自我介绍+基础+编程
  1. 项目相关——数据库处理失败的订单,如何将redis的库存加回去?
  2. redis怎么保证库存预减不会有多线程的冲突呢?
  3. 压力测试1000个线程你是怎么做的?(答的压测软件)如果用代码你怎么写?
  4. 数据库索引的数据结构是什么?为什么用这个?
  5. 对数据库表的a,b,c三列分别加索引(不是联合索引),查询条件为a=? AND c=?时,索引使用情况是什么?
  6. TCP是怎么保证可靠的?
  7. HTTP的状态码502是什么?
  8. 你了解哪些加解密算法?
  9. 说一下你知道的Linux命令
  10. 什么情况下要用线程池?
  11. 线程池的类名是什么?
  12. ConcurrentHashMap的底层原理
  13. 编程题:**152 乘积最大子数组

字节三面

  • 时间:60分钟
  1. 网络的七层模型?
  2. TCP和IP协议分别在哪层?
  3. 传输层和网络层的作用是什么?
  4. 说一下TCP的滑动窗口
  5. 你知道哪些Linux命令
  6. 如何查看某个端口被哪个进程占用?
  7. 说一下设计模式
  8. Spring中的Bean默认是单例的吗?什么情况下用到非单例?
  9. 写一个单例模式
  10. 说一下有哪些排序算法?
  11. 给你100万个数(取值范围在1~1亿),如何快速地排序?内存占用多少?
  12. 说一下synchronized和ReentrantLock的区别
  13. 什么叫可重入锁?
  14. 写sql语句:给一个表,有3列(学生id,班级id,学生成绩)
  15. 求每个班的平均成绩
  16. 给第一问加两个条件,要求平均成绩大于60,并按照递减顺序排列
  17. 求每个班的最高成绩的学生记录(学生id,班级id,学生成绩)
  18. 编程题:**236 二叉树的最近公共祖先

149

字节跳动 飞书 java后端一面

\1. 项目:

- 如何做主从数据备份的,从节点是备份了二分之一主机就可以了,还是需要全部备份完。

- 如何做主从切换的,参考raft,哨兵机制。

\2. hashmap说一下

\3. 说一下hashmap的扩容

\4. 修改hashmap,如何在有业务并发访问的时候,保证访问数据的正确性,对业务层屏蔽掉底层的扩容。

\5. 说一下tcp的三次握手四次挥手。

\6. tcp如何保证可靠性

\7. 数据库的索引的底层实现

\8. 说一下你是怎么理解ACID中的一致性的(这个问题总共被问到了三次,我自己找不到正确答案,希望有仁兄能告诉我。)

w: 事务前后的一致性限制不能被打破,程序员写代码的时候需要注意不写出打破一致性的代码,

例如+100,其他的地方就需要-100,不能-50。 转钱的时候,保证加钱和减钱一起完成,或者一起不完成。

m: ACID不是应该是由数据库保证的嘛,为什么要由程序员来保证。

m: 一起完成不是原子性嘛,为什么和一致性有关呢。

w: …

\9. ACID一致性和CAP一致性是一样的嘛。

\10. 说一下什么是脏读什么是幻读。

11.如何解决脏读幻读不可重复读。

\12. 如果让你自己实现数据库连接池,你会怎么实现。

\13. 数据库的同一个连接能够同时连接多个线程嘛。

算法:

找数组中第K大的数字。(堆解法,说一下复杂度,好像复杂度还蛮高,用快排的方式实现一下。)

150

字节提前批一二三四面,olap引擎开发工程师后端

一面 7.22

1.自我介绍

2.实习项目

3.LSM论文

4.LSM如何实现范围查询、或者hbase、clickhouse他们如何实现的范围查询

5.rocksDB了解吗

6.项目中怎么实现的垃圾回收

7.hbase的预写日志机制、immutable memtable(memstore)、hive

8.不说lsm,其他存储结构怎么实现的范围查询,让我下去看看range index、clickhouse等实现

9.算法:最大公共子序列

体感:一面问得比较深入,也比较有感觉,面试官是个小姐姐,有种思维碰撞的感觉

二面 08-02

1.自我介绍

2.为什么来字节?为什么学计算机?你觉得你比科班的优势在哪儿

3.先写个sql:结果没写出来…,就差group一个字段而已,其他都差不多了

4.单例模式

5.tcp三次握手、四次挥手

6.垃圾回收算法,就简单说下标记整理复制三个

7.简单问了下实习项目

8.算法:全排列

9.反问:具体做的业务,公司内部是自己实现的存储引擎吗?sql解析也是自己实现的吗?内部的工具和开源clickhouse等相比有啥区别,内部的注册中心和zk有啥区别…

面试官很认真的给我解答了,体感面的比较简单,反问比较有意思

三面 08-09

1.自我介绍

2.说了实习项目,问得比一面还深

3.继续lsm论文,compacted过程,说了下wiscKey论文的kv分离的思路

4.堆外内存和jvm堆分配的区别(直接内存虚引用,不会在垃圾回收时来回拷贝数据),directBuffer和unsafe申请有啥区别(不会)

5.实习项目中dapper论文,全链路追踪

6.关于全链路和实习中一些高可用的事儿

7.sstable是有序的吗

8.又想问rocksdb内核,我说我没学过c++,可能对rocksdb具体实现不太清楚

9.然后问了滴滴的事儿,在离线混部,问我什么可观测性是必要指标,什么不是,为什么不用raft而是改成redis实现主从(我说历史问题和实现投入成本,改为redis比较简单,可以实现幂等)

10.然后问了快手实习的事儿,我说了两个难点:groovy表达式实现项目组件化和binlog消费有序

11亲缘性线程池和根据key进行hash到不同的partition保证有序,groovy也没怎么问,毕竟是个脚本语言

12.算法:两数之和

13.反问:部门具体是做啥呢

体感:感觉不错,就是问得会很深入

三面就50分钟大概,然后快6点收到过了,结果又约了四面,这啥操作啊 我只想三面赶紧结束随便顺个offer然后回家放松下,难受啊,感觉要凉在四面了

四面 8.25

1.自我介绍

2.你理解的后端是什么

3.滴滴的项目,在离线混部

4.便利蜂项目

5.什么是线程安全

6.手写一个线程安全的阻塞队列

问项目就是我讲完后就结束了,没问为什么这么做或者项目一些高可用问题啥的,我还以为会挂呢,因为就是没有感觉难到我的感觉…

过了,约了五面,不确定是技术还是hr…

151

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oPwKqyUB-1677410119302)(D:\books\pics\6.png)]

152

字节跳动后端一二三面面经(已感谢信)

岗位 后端-data-抖音/直播/电商/剪映

一面:0801,1h

  1. 实习相关(10min)
  2. 字符串常用的方法,String、StringBuilder、StringBuffer区别,使用场景
  3. Integer对象作比较的时候(==、equals、-128-127缓存)
  4. volatile关键字有什么用
  5. volatile和其他的线程同步方法有哪些应用场景
  6. AQS常用的组件
  7. AQS主要的方法(方法名字忘了,说的原理和模板方法模式)
  8. 设计模式,对设计模式怎么看,怎么学习比较好?
  9. ClassNotFoundException和NoClassDefFoundError的区别(只知道一个是异常,一个是error)
  10. 项目中怎么处理异常
  11. 常用的Linux命令,netstat有哪些参数?
  12. 如何排查项目CPU占用过高,打印堆栈信息用哪个命令?
  13. Java中clone方法,clone方法创建对象和new对象有什么不同?使用场景分别是什么?
  14. 线程的状态,以及如何切换?
  15. Redis的过期淘汰方案(面试官问了我很多实际生产的问题,后来我说了一下就是做着玩的)
  16. 假如Redis还没过期,但是内存已经满了怎么办(应该回答报警扩容的,没想起来)
  17. 为什么要选用Redis呢,有没有什么其他的替代方案
  18. 缓存击穿,分布式锁解决,分布式锁key是什么
  19. 查询缓存可能会查不到是一个什么场景?(一开始没太明白要问啥,查不到就去查数据库呗,数据库再查不到就返回空,后来感觉可能是缓存穿透问题?)
  20. Redis数据结构
  21. springboot和springcloud介绍一下
  22. 还有哪些分布式框架
  23. spring循环依赖
  24. 代码:带过期时间的LRU

二面:0804,50min

  1. 自我介绍
  2. 实习相关(20min)
  3. 算法,排序链表
  4. 代码中有输出语句,把程序里面的状态输出到外部屏幕的整个状态,操作系统都做了什么
  5. 为什么要分为用户态和内核态,是什么触发了这个切换
  6. 具体用的哪个系统调用
  7. 代码写好了之后是怎么被运行的
  8. JVM本身也是一个程序,它是怎么运行起来的呢,操作系统做了什么事
  9. 在浏览器输入网址的过程,DNS是怎么进行解析的
  10. 报文来到了路由器,路由器怎么知道发送到哪个端口,路由表是怎么建立起来的
  11. 场景题:
    1. 存商品数据,kv形式,用什么存(我只会redis和mysql,我说的mysql因为数据量很大。。。)
    2. 如果只通过商品id来取数据,没有范围查询,索引应该怎么设置(是不是应该答hash索引的。。。总说B+树,我都忘了hash索引这个东西了。但是hash索引也不是人为设置的啊。。)
    3. 索引的分类和底层
    4. MySQL服务器挂了怎么办
    5. MySQL主从怎么同步,有什么问题
    6. 直接访问MySQL延迟很高,比如MySQL集群和线上的服务不在一个网段,有什么解决办法吗(不会)
    7. 想要在表上新增一列应该怎么做(我说的线上直接加)
    8. 线上的MySQL库会很大,直接加会出现问题吗(我没了解过,想了一下感觉可能会造成MySQL的一段时间不可用,下来搜了一下好像MySQL5.6以上已经支持了线上修改表)
  12. 反问

操作系统+场景题有一半没答上来。

三面:0808 50min

  1. 自我介绍

  2. 项目相关(15min)问的一些技术动机,回答的不太好。

  3. 实习经历(5min)

  4. 算法题 二叉树Z字形层次遍历

  5. 场景题:给两个流,一个是系统发出去的推送,一个是用户点击推送的行为。如果十分钟内用户点击了,生成一个正样本。如果用户没有点击,或者10分钟后点击了,生成一个负样本。

    我写了两个消费者,第一个消费者就是把所有发出去的推送都用Redis暂存一下,第二个消费者消费用户点击的推送,从redis中取出,对比时间,十分钟内就生成一个正样本,10分钟外就生成一个负样本,然后删除。同时布置一个定时任务,每隔12小时扫描一下redis里面的key,如果有超过10分钟的了,就读取出来,然后生成一个负样本。

  6. 然后问我如果不借助redis,并且数据量非常大,怎么实现。(不会)

    我的理解是这两个一个是全部,一个是被点击的,是需要做差集去求出没有点击的。但是又在两个消费者里,不通过一个中间件,怎么计算呢。。有没有大佬解答一下

项目和场景题都不行。项目问的不是很难,但是技术动机思考的确实不够,面试时脑子也有点短路,下来复盘了一下,其实可以回答的更好的。场景题真的就是自身知识的局限性了。

0809感谢信

153

字节一面

抖音短视频

1、聊项目

2、说一下mysql的索引

3、b树、b+树说一下

4、红黑树呢

5、数据库的隔离级别和事务

6、mysql是如何保证原子性和持久性的

7、mysql的undolog是什么,有什么用,怎么保存日志的,有什么样的结构

8、binlog是什么

9、mysql怎么保证数据的可回滚和备份的

10、mysql的隔离级别详细说一下RC和RR

11、redis的哪几种数据结构

12、zset怎么实现的

13、跳表说一下,然后围绕着跳表一直问,就问懵了

以上四十分钟左右

14、***********************

二十分钟写了之后就结束面试了。

154

超参数秋招提前批后端一二面(二面已通过,已约三面ceo面)

超参数的面试整体感觉还是比较有创业公司独角兽的风格,不像大厂面试会问很多八股文。

一面
1.字节的实习相关25mins
2.设计题:有前置依赖的情况下,如何找到可行的执行顺序。(实际上就是lc的课程表)
3.算法 两条链表的加法

二面:是我秋招这几场面试里压力最大,最考验临场思考和思维能力的面试,但是确实能从中看出面试官的功力,必须点赞!
1.字节的实习相关20mins
2.开始代码折磨 35mins
2.1 矩阵乘法的复杂度是怎么样 具体分析一下
2.2 现在我给你这个矩阵乘法的代码,你看下有没有问题
2.3 你觉得这个代码可以怎么优化,
我说:是从算法层面优化,还是代码底层机制执行的优化呢,是不是涉及到时空局部性?
面试官说会和空间局部性比较相关
2.4 这里是不是有访存的瓶颈,怎么解决
2.5 你想用额外的空间解决,这样当然可以实现,现在想一下不用额外空间的做法
2.6 怎么实现稀疏矩阵的矩阵乘法
2.7 如果告诉你两个矩阵至少有一个稀疏矩阵,怎么优化相乘的算法

在面试官的引导之下找到各个问题的关键点回答出来了。总体感觉这场面试最最重要的还是面对陌生场景的思维能力,颠覆了我对面试的印象,学到了很多很多❤️

155

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9ECwoBS-1677410119303)(D:\books\pics\7.png)]

156

【面经分享,附答案】字节系统架构,一面,后端开发

一面

总结:完全没有问项目问题,计算机网络部分问的特别细!死问我数据链路层的传输原理,答得磕磕绊绊,有好些题都没有答得很好,算法题倒是挺简单的,最后反问,面试官说我答得挺好的,但有些地方细节上还需要再学习优化下。

1)HTTP 三次握手,状态码,交互细节

HTTP 三次握手就是 TCP 三次握手,HTTP 是应用层协议,它的任务是与服务器交换信息。至于怎么连到服务器,怎么保证数据正确,HTTP 不管。事实上它总是假设数据是正确地传输的。

而 TCP 的任务是保证连接的可靠,包括防丢、防错。为了做到这些,在初次连接时要进行3次握手,以保证确实连接到了目标机器。而连接上后具体传送什么数据,TCP 是不管的

状态码:1xx 信息类提示,2xx 请求成功,3xx 请求重定向,4xx 服务器异常,5xx 客户端异常

交互细节应该就是 TCP 三次握手

2)为什么要三次握手

3)四次挥手,状态码,传输细节,为什么握手要三次,挥手要四次

4)数据链路层怎么传输数据的,展开说说

5)ARP 协议中网关怎么去转换 IP 地址到对应 MAC 地址的

关键点:ARP 高速缓存、广播 ARP 请求报文、ARP 响应报文

6)如果数据包不在当前子网内,怎么传输到目标子网网关的

首先,如何判断这个数据包的目标 IP 地址和当前主机的 IP 地址是否在同一子网(网段)内?利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的 IP 地址分别与它们的子网掩码相 “与” 后的结果相同,则说明这两台主机在同一子网中。

其次,网关到底是什么呢?网关实质上是一个网络通向其他网络的 IP 地址(一般都是路由器的 IP 地址)。而默认网关(Default Gateway)就是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包

当一台计算机发送数据时,根据数据包中的目标 IP 地址,通过子网掩码来判定目标主机是否在本地子网中,如果目标主机在本地子网中,则(通过二层设备 - 交换机)直接发送即可。如果目标不在本地子网中则将该信息送到缺省网关/路由器,由路由器将其转发到其他网络中,进一步寻找目标主机。

7)MySQL 的行锁怎么实现的

InnoDB 行锁是通过给索引上的索引项加锁来实现的

8)MySQL 的事务,展开说说

先解释下 ACID 特性,然后说下 MySQL 如何保证 ACID 的:锁来保证隔离性(可扩展四种并发问题、四种隔离级别、行锁的三种算法、着重提一下 Next-Key Lock 解决幻读问题 ),redo log 保证持久性和原子性(持久性对应 WAL 和 CheckPoint,原子性对应 redo log 两阶段提交),undo log(MVCC)保证一致性

9)MySQL 索引了解吗,索引是怎么实现的

10)索引有哪些,介绍下

聚簇索引、非聚簇索引、唯一索引、联合索引、覆盖索引、前缀索引

11)联合索引中间可以有 null 值吗,为什么,测试过吗?

12)B+ 树的特点,原理

13)B+ 树索引和 Hash 索引的区别,优劣

14)了解死锁(DeadLock)吗

什么是死锁?两个线程互相请求对方的资源,并且不释放自己的资源,形成循环等待,导致死锁。

死锁的四个必要条件?互斥条件、请求和保持条件、不剥夺条件、循环等待条件

如何避免/预防死锁?破坏四个必要条件其中之一即可:

  • 破坏互斥条件:不可行
  • 破坏请求和保持条件:线程启动时一次性请求完所有需要的资源,运行途中不允许请求其他资源
  • 破坏不剥夺条件:请求新的资源时得不到满足,必须释放已经保持的所有资源,待以后需要时再重新申请
  • 破坏循环等待条件:给资源编号,只允许顺序申请资源

15)MySQL 怎么解决死锁的

16)平时遇到过死锁吗,怎么解决的

17)JVM 的垃圾清除说一下

18)垃圾收集算法有哪些

三大垃圾收集算法:

  • Mark-Sweep(非移动式算法,不需要 STW)
  • Mark-Copy(新生代垃圾收集算法,移动式算法,需要 STW)
  • Mark-Compact(移动式算法,需要 STW)

19)介绍下知道的垃圾收集器有些什么

新生代:

  • Serial(Mark-Copy、单线程)
  • ParNew(Mark-Copy、多线程)
  • Parallel Scavendge(Mark-Copy、多线程;关注吞吐量;自适应调节策略)

老年代:

  • Serial Old(Mark-Compact、单线程)
  • Parallel Old(Mark-Compact、多线程)
  • CMS
    • Mark-Sweep、多线程;
    • 追求低延迟;
    • 四个阶段(初始标记、并发标记、重新标记、并发清除),第一和第三阶段需要 STW;
    • 采用 “增量更新” 解决 “对象消失” 问题;
    • 一般还会设置 Serial Old 做老年代收集预案,因为 CMS 会出现并发失败问题 “Concurrent Mode Failure”(无法处理“浮动垃圾” 导致堆被完全占满而报错 or CMS 垃圾收集运行期间预留的内存无法满足程序分配新对象的需要),这时候就会触发 Serial Old 用 Mark-Compact 算法做老年代收集;
    • CMS 基于 Mark-Sweep 算***有大量空间碎片产生,往往会出现老年代还有很多剩余空间,但就是无法找到足够大的连续空间来分配当前对象,而不得不提前触发一次 Full GC

面向全堆:

  • G1
    • Mark-Copy、多线程;
    • 四个阶段(初始标记、并发标记、最终标记、筛选回收),第一和第三和第四阶段都需要 STW;
    • 采用 “原始快照” 解决 “对象消失” 问题;
    • 面向局部收集、基于 Region 的内存布局;
    • 非纯粹地追求低延迟,而是在延迟可控的情况下获得尽可能高的吞吐量;
    • G1 无论是为了垃圾收集产生的内存占用还是程序运行时的额外执行负载都要比 CMS 要高;
    • 目前在小内存应用上 CMS 的表现大概率仍然要会优于 G1,而在大内存应用上 G1 则大多能发挥其优势

20)垃圾的判断方法,引用计数法为什么用的没有 GCRoot 的多,缺点是什么,为什么

两大方法:

  • 引用计数法(无法解决循环引用问题)
  • 可达性分析法
    • 两个阶段:根节点枚举、对象图遍历
    • 可扩展根节点枚举必须进行 STW(OopMap,安全点和安全区域);三色标记法分析为什么对象图遍历理论上也必须进行 STW(浮动垃圾、对象消失),因为这个阶段时间较长所以设计了两种方案(增量更新、原始更新 SATB)使得对象图遍历不需要进行 STW

21)平时测试过 JVM 的垃圾清除吗

22)Redis 的了解,介绍下

可以说下 Redis 是基于内存的,单线程工作的缓存,先介绍下为什么说 Redis 是单线程的(关键点:IO 多路复用、文件事件处理器);然后可以介绍下除了基于内存和单线程,Redis 还有哪些特性使得它那么快(Redis 特殊设计的数据结构 ziplist、skiplist,SDS 等;Redis 的虚拟内存机制)

23)Redis 的持久化

两大持久化机制:

  • RDB:存储数据库状态,二进制文件 dump.rdb;SAVE、BGSAVE fork 子进程自动间隔性保存
  • AOF:追加写入,存储命令(先写入 AOF 缓冲区,根据 appendfsync 参数决定何时写入并同步磁盘);AOF 重写、fork 子进程 AOF 后台重写(AOF 重写缓冲区)

24)算法题:删除链表的倒数第 k 个节点。

157

2022.8.8 字节跳动抖音电商三面面经

上来就是手撕算法
第一题是leetcode原题 剑指offerII 006 排序数组两个数字之和
第二题没做过 大概是求一个数组最多可以分为多少份大小相等的集合。我用的暴力+dfs+visited数组做的。
后面就是聊实验室项目,具体项目架构是啥样的,项目几个人做的,项目落地了么,项目指标如何等等。
最后就问能不能来实习一段时间。。。早有耳闻今年字节得实习才能转正。。。没想到真落到自己头上。。
三面后hr联系通过,问能不能去实习。。。。。

158

2022.8.3字节跳动抖音电商2面面经

  1. 自我介绍,学校里做过啥,担任过什么职位么。参加过什么活动?
  2. 项目简单介绍一下
  3. redis rdb做持久化的具体流程? 按行扫描还是按key扫描?(不会,有会的大佬可以回答一下)fork的是线程还是进程?
  4. sql题 转账考虑边界条件(for update加行锁,当前读)
  5. 系统设计题 一个4G内存大小的机子怎么排序100G大小的数据?归并排序。需要读几次,写几次?
  6. 手撕代码 求一棵二叉树两个节点之间的最长距离。
  7. TCP三次握手及状态变化,具体的状态名称?
  8. TCP连接过程中双方有什么数据结构。(半连接队列,全连接队列)。
  9. 如果让你通过UDP实现一个TCP,那么需要怎么设计?(流量控制,超时重传,差错校验,递增id进行顺序性校验。)
  10. epoll,为什么用epoll,epoll里为什么用红黑树?epoll会阻塞么?怎么解决呢?
  11. 异步IO框架了解过么,怎么执行的。是一开始就分配一个线程给一个连接么?(不是,那是同步阻塞实现的方式,应该是读到用户缓冲向操作系统发送中断的时候才分配一个线程,可以通过线程池做优化。)。
  12. 看你提到了线程池,线程池的设计是什么的呢?线程池里有什么坑呢?(java中Executor给出的三种线程池实现有OOM风险),自定义线程池,自定义线程池有哪些参数呢?线程池执行的流程是什么?
  13. 让你设计一个线程池应该怎么设计?(当有任务才创建线程,常驻线程,最大线程数,弹性伸缩容,拒绝策略,线程工厂)。
  14. 让你设计一个高性能的网络服务器应该怎么设计呢?

159

8月8日字节后端开发-搜索一面(8月10日更新,果然流程终止

内部员工回复

自我介绍、在后端青训营的收获

GoChannels介绍

Goroutine介绍,同时说下GMP

介绍Go中线程与协程

进程内存空间大小,其中用户空间和内核空间在32位如何、64位如何

介绍堆内存和文件描述符

用户态与内核态区别

HTTPS如何加密传输

TCP为什么三次握手

TCP为什么四次挥手

三道编程

1. 数组有两段升序,找到第一段最大值。禁暴力遍历、禁直接排序

2. 字符串删除n个字符,剩余的字符是最小数

3. 所有岛屿的最大面积

反问:问下业务,面试官没有回答。

吐槽:可以肯定面试官没有看过简历,只根据自我介绍提问,但凡他看过简历也知道我主要是C++而非Go。整个过程面试官几乎没有反馈,看上去在做其他事,能看到眼镜颜色的改变,似乎一直玩手机切屏。没有主动追问,没有有效回复,除了“嗯嗯”就是直接不说话跳过话题。我就当自己被刷KPI面了。不想接着面大可直接聊人生,没必要浪费时间还得看着我做题。

160

字节一面面经

进程和程序的区别
运行中的进程的构成
malloc分配的内存在哪个区
堆和栈的区别
堆去的大小
brk,sbrk,mmap区别及底层实现
shell命令:批量把.c文件重命名为.cpp文件
shell命令:查询8080端口被什么程序占用
tcp三次握手
三次握手中为什么要生成随机序列号
客户端不发动第三次握手会怎么样
连接建立后剪断网线会怎么样
new和malloc的区别
如何实现多态
虚指针保存在哪
共享指针的底层实现
share-ptr销毁了但还有weak-ptr指向那个对象,weak-ptr怎么知道这个对象已销毁
unordered_map,map的底层和时间复杂度
算法题:牛客NC560打字

161

字节提前批 二面

字节 后端-基础架构Data 二面 8.3晚 大约70min
一、自我介绍为啥之前本科没有实习经历?什么时候毕业?本科学习哪些专业课程?C++大一学了之后还用过吗?因为是物联网专业,问有什么硬件知识储备?了解过指令集吗?回答了一条指令执行的过程,说了一下本科计组课设用过verilog实现过单周期CPU和五级流水CPU的仿真,主要实现了MIPS指令集,详细举例了ADD指令和LOAD指令的实现过程。(一个逻辑运算指令和内存I/O指令,其实忘了再距离跳转指令,如JUMP指令,这样回答更好一些,这些都是现场回忆大二做的课设,觉得能讲清楚就已经很好了,面试官也听懂了个大概)说一下Cache的原理,为啥要Cache?先回答了内存和cpu之间为啥要cache,说缓存是一种工程思想,其他很多地方都用到了;二、项目(前面自我介绍,专业背景提问大概12分钟)介绍一下做的聊天集群项目可能介绍的比较流畅,面试官问是自己做的项目吗?很实在地回答了是网上开源的项目,然后我赶紧补充了这个项目我的收获(事后觉得自己有点真诚过了头)。用到了Nginx,说一下起到了什么效果?项目代码量多少?主要是C++吗?接下来介绍RPC框架项目说了一下rpc原理,然后就是各个模块怎么实现(回答不是太好)序列化自己实现要注意什么?参照之前用过的json,protobuf怎么实现序列化的,怎么分字段给用户读到具体的消息内容,怎么存储消息,然后举例了json字符流存储多余的字段名和protobuf的二进制字节流怎么消息分界,当时知道什么说什么,这个答得不好。
三、操作系统多线程和高并发场景需要考虑啥问题?往cup密集型和I/O密集型业务讲了业务需要区分,然后区别处理;面试官的意思是侧重多线程怎么同步,然后再具体问了多线程访问共享资源注意什么?共享资源,怎么互斥,我回答加锁;你知道多少锁?回答了自旋锁,信号量、条件信号实现的原理以及PV操作过程。说说信号量怎么实现的?从信号量记录共享资源数量,阻塞队列入手说了一大堆。说一说你如何理解操作系统?(代码题写完大概50min,后面又开始提问)从cpu管理、内存管理、文件管理、设备管理大概说了说。说一下进程的调度,哪些调度算法?从pcb开始回答,里面存着什么信息,进程如何组织管理(PCB队列),再回答了哪些调度算法。说一下进程切换?说了通过内核管理PCB,讲了切换的几种场景(阻塞发生,时间片到)内核你是怎么理解的?从OS从单程序到多道程序说为啥出现内核,然后再说了虚拟内存高地址是内核空间(内核程序也需要分配内存来存放指令和数据)进程的控制和进程间通信需要借助内核。OS以前怎么学的,有什么实验课?实验课实现过一些shell命令,内存分页管理
四、代码(前面聊了不到半小时开始做题)LC622 设计实现循环队列说一下思路,队尾指针和队头指针的作用?判断队列满为啥尾指针要加1?LC没刷到过,凭借大二数据结构实现自己实现过循环队列回忆起来的,没说到关键点上。其实就是区分队列空和队列满两种情况不能以front==rear来判断(两种情况这个条件都满足)。
五、反问你们用C++具体用来开发什么业务?面试官说了很多,基础架构和硬件打交道多一点所以还有用C语言的,你排斥硬件吗?我继续说之前本科物联网专业的,学过需要硬件相关的课程,嵌入式、微机原理啥的,实验室项目做过的ROS小车集群,加的模块也是先从硬件到软件实现(舵机控制板、还有需要烧写程序的板子),所以不会抵触硬件。评价一下我今天面试的表现?(三面我不再问这个问题了,一定!)知识面很宽,会的还挺多,问题很坦诚(聊天项目直接说是网上开源的),总体回答都还行。
最后总结:项目准备不够充分(RPC项目),完全是围绕项目提问聊天,操作系统问的很多,但不是八股那种问法,全是开放性问题,尽量是知道啥就说啥(小林coding YYDS);感谢本科的课程实验,能在关键时候救命(完全靠回忆还能吹出来)
二面完觉得要凉了,面完晚上九点多;第二天傍晚收到三面通知(8.18,好晚啊!!!)。

162

2022.8.4 字节 基础架构 一面 凉经

1.自我介绍,介绍到项目经历被打断了(?自我介绍不用介绍项目经历吗)。

2.介绍项目

3有限状态机的解析过程

4.怎么具体解析GET/POST报文的

5.为什么要用epoll,以及select,poll的了解

事件驱动的了解

6select.poll为什么是内核去检测事件的(?)

7.跳表的节点包含了什么?

8.算法,返回一个大数的阶乘结果,输入为字符串,输出也为字符串。如“5115154151455144****44511111”求这个数的阶乘。只实现了字符串乘法,后来去实现字符串减法卡壳了,太笨了,其实实现字符串加法也行。哎

9.c++内存分区

10在函数中基础类型都是存在栈吗,如int a = 1;

11mysql四种隔离级别

12可重复读是什么

13怎么解决脏读的 (回答成readview解决可重复读了,操蛋)

反问:面试官说我没总结(?是委婉说我基础差吗?)

163

字节提前批一二三面

之前抖音部门一面挂了,被捞到了商业化继续面。

以下记录或多或少有疏漏,只能靠记忆大概回顾下。

一面:1h

了解字典树吗?给一个单词前缀,找符合该前缀的单词个数(口述实现)

mybatis 分页插件原理实现

redis能存什么类型数据

redis是单线程吗

redis单线程为什么高效

redis过期策略

多路复用select,epoll原理

缺页中断,页面置换算法

python字典key能存什么类型值(讲了hashashcode相关的东西)

java深拷贝

http请求头的一些参数:host,agent,referer等

http1.1一些特性

5xx状态码

java线程池

线程池中无限长的队列有什么应用场景

线程池拒绝策略

写代码:带过期时间的lru

二面: 1.5h

记得不太清了,全是业务场景+系统设计

大概是:权限系统模型设计对比

spu, sku 如何在数据库表中设计,方便扩展

MQ的对比和场景选型

伪代码+系统设计:观察者模式,服务注册中心

最后5分钟为了支撑下面试让写了个归并排序

三面:50min

设计抖音评论系统(完整的设计流程,从场景、数据库、api实现、应用的技术栈、高并发读写的解决方案等)

边在白板上写设计文档边介绍+讨论

反问:部门规模,有哪些不足

164

字节提前批 三面 凉经

8.4 1h5min

  1. 自主编码了解吗?(其实是让说字符集,utf-8,assi,unicode)有什么区别
  2. 多线程需要注意哪些问题
  3. 读锁,写锁,使用场景,为什么区分
  4. 缺页中断
  5. 内存碎片?语言层级的?C++对内存碎片敏感吗
  6. http 1.0 1.1 2.0 3.0
  7. 原子操作
  8. 视频传输使用什么协议?UDP是发给主机还是上层路由器?如何得知具体主机的ip?内网穿透了解吗?
  9. 连接商场WiFi,输入百度url,跳转到别的网址,为什么?(答dns劫持)如何解决劫持问题?
  10. 家里有很多智能家居,电视,音箱等等,对控制中枢发出一条指令,如何判断具体是发给谁的?
  11. xml与json了解吗?为什么有了xml还要有json?为什么配置文件会使用xml?
  12. 写数据库时,崩了怎么办
  13. 手撕 :两个单链表实现大数相减

165

字节视频云后端提前批(已凉)

一面(50min):

1、实习的项目(在字节飞书实习了一段时间)

2、tcp建立连接的过程

3、http1.0、1.1、2.0,问了1.1中发一个报文丢失之后怎么办?

4、redis的数据结构

5、zosrt的时间复杂度以及为什么是logn

6、http怎么转为rpc(项目有rpc)

7、爬虫一个网站,里面有重复的记录,怎么存储不重复

8、算法题:环形链表II

二面(1h20min)

二面难度急剧上升,差点挂了

1、实习经历

2、一个客户端与服务器用tcp连接,服务器宕机之后客户端的一系列事情

3、os中用户态和内核态交互过程

4、内核线程与用户线程怎么切换以及交互的,两个映射关系是什么

5、mysql是怎么实现RR的?

6、go语言的内存逃逸(我不会go,问go八股了😭)

7、字节原创题:一个有向无环图,找出每个节点的层数(类似于力扣课程表,但是难度比这个大很多)

三面(1h10min)

1、实习经历

2、redis为啥支持高并发,为啥性能优越

3、innondb的特性

4、mysql树高,3000w的数据,索引占16字节,这个b+树多高

5、聚簇索引与非聚簇索引

6、联合索引是怎么查找的

7、算法题:

(1)lc 3

(2)有1亿个浮点数,找出最大的10000的数据,限制内存为16kb

(3)给定两个有序数组,找出其中的第K大

四面(50min)

1、实习经历

2、两个设计题:

(1)设计一个秒杀系统,要求不能超卖并且秒杀的成功率高

(2)设计一个王者荣耀的排行榜,要去按照区服排

3、智力题:64匹马,8个赛道,找出跑最快的4匹最少需要几次

166

字节后端一面面经

一些项目问题
Http和Https的区别
访问百度域名过程中发生了什么
这些过程中用到了什么协议,分别讲一讲
Mysql用的什么引擎
B树和B+树的区别
HashMap实现原理

算法题:合并区间

算法题太紧张把二维数组和三维数组搞混了,还忘记compare排序怎么写了,直接凉

167

字节飞书23校招 提前批一二三面(挂)

具体回忆不太完全,大概是这些。简历都没投就被hr捞过去面试,刚走完三面。

一面

  1. 项目:redis和mysql的数据一致性怎么保证呢,如果高并发下单的时候redis扣减失效怎么办。问的东西比较多和杂,想不起来了。
  2. 你知道有哪些限流的方案呢
  3. mysql数据库复合索引abc,如果where a=0 and c>2能走吗
  4. mq的死信队列了解吗
  5. 分布式锁的实现,还有哪些可以实现分布式锁,如果使用MySQL可以实现嘛?应该是用快照读还是当前读?介绍一下mvcc,可见性判断怎么实现?介绍一下慢查询
  6. redis是单线程还是多线程,为什么引入多线程,多线程对于执行命令有什么影响,redis单线程在使用中需要注意什么问题
  7. 讲讲你对几种io模型的理解,介绍一下select,poll,epoll
  8. 算法:交替字符串的最小替换次数(一开始没思路,面试官提示以后才写出来)

二面

  1. 项目简单问了一下jwt登录的一些东西,jwt相比于cas单点登录的区别
  2. https介绍一下,详细说一下握手过程
  3. 对称加密和非对称加密有什么区别,为什么不全使用非对称加密
  4. 用户态转为内核态有哪些情况 :系统调用、中断和异常
  5. 数据库中介绍一下索引,复合索引,覆盖索引,索引下推,单独索引a,b,c和符合索引abc有什么区别呢?
  6. RR隔离级别下会出现幻读吗,怎么解决,如果事务中使用当前读会产生幻读吗
  7. 线程池介绍一下,七个参数。tomcat中的线程池了解吗,如果想要实现tomcat中的处理逻辑:线程进来达到核心线程数以后如果不去工作队列,而是直接扩增最大线程数,该怎么实现呢?(经过查资料发现是tomcat的核心线程数满了以后进工作队列判断直接返回放入失败,然后就会去扩大到最大线程数,达到最大线程数以后会再重新放入工作队列)
  8. 介绍一下工作队列有哪些,选一个介绍一下底层的实现原理(绑定两个condition,notEmpty()和notFull())
  9. 算法题:分发糖果+子集

三面

实习的东西问了大概二十来分钟,然后就问的实验室课题,最后是一个算法题

  1. 实习项目介绍一下,具体做的什么业务,有什么难点。在自己做的工作里面遇到什么问题怎么解决。管理员权限的数据库是怎么分配的,不同部门的查询怎么实现,分了哪些库哪些角色
  2. 你的项目中这个cas单点登录加进去是为了满足什么需求,ssm框架升级到springboot框架具体要做什么工作。
  3. 在你的科研或者生活中有遇到什么比较大的困难吗?详细说说怎么解决的?实验室做的课题是什么方向,具体描述了一下
  4. 算法题:循环依赖检测

168

字节跳动提前批 实时音视频后端开发(一、二、三、四面)已意向

许愿过四面

——————————————————————————————————————————

面完三面才来写的面经,很多细节已经忘了只写了一些有印象的。。大家见谅

一面(1h30min)

一面上来就是两道算法题,第一道是给两颗二叉树,判断B是不是A的子树。

第二道是合并三个有序数组。 写完之后开始问问题。

计网

内网和外网的区别?

讲一下NAT。

思考这样一个场景,宿舍有一个路由器,寝室有你的电脑和你舍友的电脑,当你往你舍友电脑发包和往百度服务器发包底层的协议过程有什么不同。

操作系统

我们知道操作系统定义了进程和线程,那么区别出进程和线程的目的是什么?

讲一下epoll,select,poll三者的区别和适用的场景。

数据库

联合索引(a,b)和(b,a)有什么区别

一条sql语句慢怎么排查?

场景题

充值卡原先使用卡号和卡密来充值。现在要升级系统,去除掉卡号,需要怎么升级才能保证安全性?

银行卡原先的验证身份方式是磁条,现在发现磁条可以伪造,要将磁条验证升级为IC卡验证,只考虑ATM机器和银行卡,给出一套不影响用户使用的升级方式(即不能强制用户换卡,升级要考虑到ATM机和银行卡)。其实后来本质上就是一个接口升级的问题。

二面(45min)

自我介绍

从项目开始问(主要是websever和CS144的lab)

目前你的服务器的连接数是1w,你觉得瓶颈在哪里?你有什么优化的方法?

你在简历当中提到了事件处理模式是reactor模式,那么你觉得怎么样才能利用多线程提高服务器的处理效率呢?

可以讲一下你项目中是怎么样实现超时重传的吗?

TCP协议中超时重传能保证数据的可靠传输,但是丢包之后一定会有延迟,有没有什么办法来降低这个延迟?

讲一下Linux的文件系统

讲一下Mysql的索引是什么?索引怎么让加快查询的?

索引可以加快查询,那么使用索引有什么缺点吗?

算法

找出数组的第K大元素。

三面(45min)

自我介绍。

我看你的server的业务很简单,为什么只能支持1w个连接呢?

你这个HTTP服务器只能支持HTTP1.0是吧?讲一下HTTP1.0 1.1 2.0 3.0之间的比较大的改变。

(讲3.0的时候忘了提保持连接的特性)四元组标识TCP连接,那么对于QUIC而言,当四元组当中有一个东西变了需要重新建立连接吗?

讲一下HTTPS建立连接的过程吧。

在命令行ping网址的时候TTL是什么东西?

TCP和UDP可以监听同一个端口吗?

讲一下select和epoll的区别和适用的场景。

你觉得对于服务器和客户端而言,支持的TCP连接数受到什么影响?

算法

非递归前序遍历二叉树。

四面(45min)

自我介绍。

结合实习在的组问了两个场景。游戏里面像集市或者公共区域的时候会无法避免的有很多玩家,服务器这个时候是怎么处理玩家的视野可见问题的?要是把所有可见玩家的信息都下发会不会太大?如果只选择一部分的话又是哪些可见哪些不可见?

我看你在实习的时候主要是做了技能相关的模块,大概讲一下技能在服务器这边的执行逻辑大概是些啥?玩家释放一个技能之后要是网络卡顿了3s后包才传到服务器你们是怎么处理这种情况的?会不会出现服务器和客户端状态不一致的情况?

问项目的实现细节,然后问了下压测的原理和改进的地方(从二面开始就在问这个东西了。。)。

问了下项目流量控制的实现。

我们调试程序的时候会打断点,可以讲一下断点在底层是怎么实现的吗?

我们在控制台按下ctrl+c的时候发生了什么?在一个进程收到信号退出的时候我们可能希望做一些数据写回保存等操作,怎么实现?

我们在下载东西的时候会发现刚开始网速很慢,然后逐渐变快,可以讲一下TCP连接底层对应的变化吗?

讲一下HTTP报文的组成?

我们用HTTP协议下载一个很大的东西的时候下到一半暂停了,第二天重新下载的时候会接着从当前进度下载,HTTP是怎么实现这样的功能的?

访问中国银行网站的时候,我们怎么确保当前的这个网站是正规的而不是不法分子伪造的服务器呢?

C++的虚函数的多态是编译时还是运行时?怎么实现运行时多态的?

这段程序执行会有错吗?

char* fun(){
    char *p="123";
    return p;
}
int main() {
    cout<<fun();
}

算法

39. 组合总和

169

字节头条面经~一首凉凉送给自己

一首凉凉1.讲项目项目中的技术框架;涉及的中间件,数据库,缓存,遇到了哪些难题,怎么解决的。项目中的主要功能;2.因为什么原因选择的redis?数据量大小?(23十万条)3.如何保证(redis)内存和数据库中的数据一致性?4.接着3,例如:数据库修改之后缓存中时如何更新的?5.谁需要去调用你的缓存?6.如何保证查询的人查到的数据和修改的数据的同步?7.redis 中时怎么保证一致性的?8.你能描述一下类锁是什么吗?(没有听过,复习所有锁相关知识)9.紧接着问了对象锁;10.事物这块你们用到的是什么事物级别的?(项目中的具体使用)11.可以讲解一下什么是幻读(复习数据库相关,事务,隔离级别,日志等等,存储模式等等)?12.关系型数据库和非关系型数据库的区别是什么?13.非关系型数据库的优点是什么?14.这个问题没听清,也不了解;15.spring的控制反转是什么?16.使用过spring的切面编程吗?17.使用切面编程做了什么事情?18.java web后端开发岗位有什么技术要求? java基础,虚拟机,数据库,非关系型数据库(了解),高并发的问题,线程安全的问题,分布式之间数据一致性问题等等的需要考虑。

170

字节提前批面经(一二面)

= =我的简历明明只有JAVA,却面的是用C++做底层开发的组,经过和二面面试官的沟通最后决定还是自行终止流程了,不过面试体验都蛮好的!面试官都很好,鼓励式为主,然后我个人感觉算法题做得好的话能掩饰八股不行的情况

一面:

介绍项目

说一下排序算法有哪些熟悉

快速排序的时间复杂度为什么是nlogn

O(n),O(logn),O(n^2)三种时间复杂度分别会在什么情况出现(遍历/二分/双重循环 ->面试官说其实想让我写出来具体代码但我都balabala用语言快速描述过,感觉这里自己沟通上不太好)

算法题(最大有效括号长度,十分钟秒杀,我人生中面试中最快写代码的经历)

JVM垃圾回收

OSI七层协议

设计模式(讲了策略模式,然后大概提了一下工厂模式(?)其实我自己也不知道是什么,面试完突然想到我自己简历上都写了了解单例模式……脑子真的缺氧吧

路由器是哪一层(不会)

从A发送信息到B要经过什么步骤(不会)

……这里印象里连续问了三四个问题,我全都不会场面一度十分尴尬,后来复习了一下发现都是OSI的数据链路层和网络层的内容。

进程和线程的区别

僵尸进程和孤儿进程分别是什么

进程间怎么同步信息的

知道协程吗(忘了)

Linux用过吗

Linux常见的操作命令有哪些

其它的题不太记得了。

反问

我面的是什么组

从理解了解概念到能够顺利地应用在生产上需要多久时间呢?(因为感觉自己之前太多题没答好了)

周四面的,第二周周一突然收到了下一面通知,我十分怀疑地还发邮件给 HR问这是发错了吗……

二面

自我介绍

说一下熟悉的排序算法?

说一下不同数据结构?

举例每种数据结构的适用场景和不适用场景

Array和List的区别

再次问:你确定你想要继续面试吗?因为从JAVA转C会走出舒适区,可能会有点跟不上,如果你觉得算了的话那我们就随便聊聊就可以结束了,如果你想继续我们就再继续面试

我说我想继续面试

然后出了算法题,一开始大概花了十分钟不到提出来了面试官想要的思路(一开始问dfs说太复杂,问贪心行不行说可能会导致分数低),但是我花了足足一个小时四十分钟在面试官的指点下才写出来具体的代码实现……比较多条件分支(也可能只是我代码写的太冗余了)中间因为家里没空调,热到我整个人都大脑停滞了,连最基本的/10和%10都忘了怎么用

最后面试官说虽然C方面的能力肯定是没有达到他的期望,但是算法思维能力还可以,说一看我就不是刷题的,现场能想出来挺不错了(我:……谢谢你的鼓励)

所以面试官再次问我确定是否对C++有热情,要不要继续面这个岗,如果想要继续的话就给我过。

我问了两个有关这个组开发内容的问题,最后还是比较担心自己跟不上这个组的进度拖累别人,和面试官说还是算了,我等正式批再投JAVA吧……很不好意思耽误面试官这么久时间。

总的来说感觉蛮意外的,可能因为我简历没有C,面试官问的都是比较基础的问题,如果有的话大概八股都是和C有关的了?另外非常感谢我的一面面试官据我的二面面试官说给我写的评价是算法能力很好,所以算法看来真的还是很重要的!二面面试官也一直在鼓励我,中途我真的很想放弃继续写代码,但是面试官很耐心地帮我找了Bug,而且沟通起来也让我学到了很多东西,这体验比微软可强多了= =

171

字节提前批一面

项目

Tcp怎么保证可靠传输

Tcp为什么三次握手和四次挥手

三次握手的具体细节说一下

说一下进程和线程的关系

进程的通信方式有哪些

索引的分类(没说按啥分类 从数据结构 和聚簇、非聚簇说了一下)

表A 建立(x,y)索引 select * from A where y=1 and x=2 走不走索引

如果select * from A where y=1 呢走不走索引 查询过程是什么(无索引走全表扫描) 再加索引(w,z)此时一共有几个索引

MySql的隔离级别 默认隔离级别是什么 为什么

手撕:lc124 二叉树中的最大路径和

反问

问的挺基础也都答上来了 不知道为什么还是挂了

172

字节提前批123面已意向

27号三面完,有些问的问题忘了,把记得的问题记录一下

一面:

最开始还是问了实习相关的内容,不过问的偏业务,什么是sku,什么是spu,你们怎么定义spu和sku,区别是什么。

然后是八股:

\1. Java是值传递还是引用传递? 什么是值传递,什么是引用传递?

\2. Java的基本数据类型和包装类,装箱和拆箱

\3. Redis集群了解吗,怎么分片,怎么路由?

\4. Redis的过期淘汰策略

\5. 数据库的隔离级别,每个隔离级别特点

\6. MySQL死锁了怎么办? 怎么判断死锁? 高并发下死锁怎么办?

算法题:链表判断有环和环的起点

二面:

问实习,大约10分钟

八股:

\1. Redis的数据结构有哪些,底层实现

\2. 除了五种基本数据结构,用过其他数据结构吗?

\3. 系统设计题:设计一个抖音的关注系统,要支持查询关注的人,查询粉丝等操作

算法题:接雨水

三面:

八股:

\1. 数据库怎么支持ACID,redo log 实现细节,为什么要WAL

\2. IO多路复用怎么实现的? 为什么要IO多路复用

\3. Java内存结构,Java对象创建过程,垃圾回收过程,垃圾回收算法

算法题:下一个排列

173

字节提前批 tiktok直播 后端 一面凉经

获奖情况

基础八股 30min
1 jvm内存分布

2 类加载过程

3 jvm中多个线程抢夺内存时会发生什么
说了加锁 优先级都不对 最后没回答出来

4 说一下计算机网络结构

5 url输入以后每一层都负责了什么工作

6 tcp协议中如果某一帧一直没有收到后面会发生什么 答了超时重传和快速重传 又问一帧没收到后面的帧会接着发吗

手撕 30min
给定一个数组和一个数n,由该数组中的数组成的小于n的最大数,数组中的数可以重复用
问了时间复杂度

反问

回答问题的时候脑袋空白了,真的会谢

174

字节三面凉了

前面两面很简单,应该是因为客户端没有那么卷,部门又缺人让我过了,三面直接降维打击。

没有自我介绍,说做道题,我说好
接雨水,面试官让我先思考一下跟他说一下思路,我说单调栈,找出左右xx,还没说完打断,说不用单调栈,常数空间复杂度,我太久没复习了,只记得有个双指针的方法,然后面试官尝试引导我,最后算混过去了。
没有八股,让我挑一个项目,说一下过程和难点,然后让我现在写几个类设计一下,(我基本上没怎么说话,面试官不感兴趣就一直打断),然后说你这个其实偏向于面向过程,我说是的,因为(被打断)。
然后就说应该怎么怎么样实现解耦,面向对象,面向接口,我想说一下设计模式,面试官还在说,然后说学设计模式应该先学xxx,你看的还是太少了,敲的太少。只在网上刷题背八股没啥用,不过也不怪你,现在太卷了(我当时尬笑,没啥心情笑了)。
还有什么想问的吗?我说emm本来有一些问题现在没有了,面试官会心一笑说那好今天就这样吧。
G!
基本上全程在挨批斗,不过还是感谢面试官,感谢字节hr

175

字节 c++ 一面面经

  1. 你使用socket,说说socket是怎么通信的?
  2. 说说socket 通信的流程?
  3. listen是阻塞的还是非阻塞的?阻塞和非阻塞有什么区别?
  4. accept取出连接后,怎么处理?
  5. 必须是三次握手吗?三次握手的流程
  6. 你说的epoll,他和poll的区别是什么
  7. poll和epoll谁先出现的?改进了什么
  8. epoll是怎么回调的?poll的轮询的怎么轮询的
  9. 进程间通信方式有哪些?
  10. 分别说说这些方式怎么实现的
  11. 匿名管道和非匿名分别是怎么实现的?具体的流程是什么?管道是怎么让不同的进程通信的
  12. 消息队列和管道有什么区别?
  13. 进程和线程间的同步方式分别是?有什么区别
  14. 进程和线程有什么区别?
  15. 你说的加锁,说说锁是怎么实现的
  16. 操作系统中有哪些锁?分别介绍下这些锁
  17. 你刚才说到了乐观锁和悲观锁,说说具体是怎么实现这两种锁的
  18. 在什么情况下你会用到这两种锁,代码是怎么写的
  19. 你这里加锁的原理是什么(我真的裂开,就直接加互斥锁锁住啊)
  20. 声明函数的时候,后面加上default 或者delete是什么意思?
  21. final关键字作用
  22. volatile关键字是干嘛的?
  23. 堆和栈有什么区别,
  24. 什么样的情况下用栈
  25. new和malloc都可以申请栈,(我:对的,new和malloc都可以申请堆,也不知道是故意说错的还是坑我的),那使用什么进行释放
  26. 用户态和内核态有什么区别
  27. 你刚才说的那个锁,如果我设置一个主机名,涉及到的用户态和内核态以及寄存器中断等,整个过程是什么样的?
  28. 有的析构函数为什么设置成虚函数,不设置行不行
  29. 析构函数是protect权限下,怎么调用
  30. 常量指针和指针常量的区别
  31. 左值右值有什么区别?
  32. 你刚才说的a=5,5是右值,没有内存,那5是保存在哪里的呢?a是怎么知道等于5的呢
  33. 说一下LRU的思想
  34. 昨天面的,还有一些记不清楚了…

代码题:

  1. O(1)复杂度求栈的最小值
  2. 给你一个不含重复数字的数组,给你一个值x,找到这个数组中和为x的任意个数的集合(回溯)

那么今天面试就到这里了,辛苦了。

内心os:没有反问???你得让我问一句啊…

总时长:1h20min

总结:代码都写出来了,理论性的基本上 都回答出来了,但是涉及到底层的都不会。连反问都不想给,估计凉了…

176

字节提前批后端开发三面经(已感谢信)

内部员工回复

一面 2022-7-15 54min

自我介绍

问项目。

1.Kafka怎么保证数据不丢失

\2. Redis io模型

\3. 解释select和epoll,和他们的区别
4.epoll水平触发和边缘触发

5.mysql的四大隔离级别,分别解释,并会出现什么问题

\6. 解释什么是幻读

7.解释mvcc

8.解释 当前读怎么解决幻读问题

8.mysql 的锁有哪几种除了表锁和行锁

9.两道sql 题

1.从借阅表中查询出每个人借了多少本书. 思路 count()+group by

2.从借阅表和用户表中查出人名和借了多少本书。思路 count() + group by + join

10.编程题。

一个N*M的的数组里面有0和1, 1代表障碍,求从左上角到右下角最短路径,并打印。可以上下左右走。思路 dfs+回溯

SQL题的第二题和最后一道编程题都是我先猜一种方法,然后问面试官这样行不行,面试官说不行,然后从面试官里面套思路才写出来的,不懂可以向面试官问思路。

最后面试官说让我等 HR电话通知。

二面 2022-7-25 50 min

\1. 你们推荐系统项目技术选型怎么做的

\2. 除了flink和kafka你还做的哪些流式计算框架和消息队列

\3. Kafka怎么保证顺序读写

\4. Kafka采用分布式的吗

\5. 你们怎么实现kafka对mysql进行异步写操作

\6. 用户如何知道异步的时候mysql 写操作失败

\7. Mysql采用的分布式集群吗

\8. C为啥比java 快

\9. Java 有哪些垃圾回收算法

\10. 这些垃圾回收算法分别适用哪些场景

\11. 怎么保证多个微服务之间如果出现一个失败,回滚的问题(我说这属于分布式事务,我说有框架解决)

\12. Sql题一张表包含id name saray managerid,员工和manager都在这张表里面怎么怎么查出员工工资高于manger工资的人。同一张表join两次+ having 或者子查询都行

\13. 二叉树的最大高度

这轮面试相对较轻松,sql和coding题都是没一面难。面完20分钟收到三面预约通知

三面 2022-7-27 35 min

2.自我介绍

3.问项目

4.kafka和其他消息队列的比较

\5. kafka怎么保证消息不丢失

6.http和https

7.线程和进程

8.数据库事务的四大特性

9.一道sql题 查询每科成绩都及格的学生姓名,思路group by having min

\10. 场景题 mysql 中有一万条数据,每个 redis 最多只能存一千条,怎么设计这个redis集群。

11.反问环节

面试官进来没有开视频,而且那边比较吵,前9个基础问题都答上来了,场具题答的面试官并不是非常满意。

面试的时候就感觉有点不对劲,除了场景题其他问题问的都非常简单,而且没有有coding环节。

第二天晚上八点收到感谢信,问了hr面评说一面二面都没啥问题,三面是面评是团队沟通能力不足。

177

字节data部门面经(已OC)

8.1 字节一面
上来面试官自己介绍了自己。(太尽职了)
部门的业务,主要做边缘计算,包括基础设施,PaaS,SaaS,FaaS,存储,云原生等。
问项目中遇到哪些问题,如何解决的?

我一想,我还没介绍项目就问如何解决,是不是有些不合适,就果断介绍项目。结果面试官没怎么听,直接又问了一遍刚才的问题。

\1. k8s了解吗。

\2. TCP是怎么保证可靠性的。
\3. 接上题,发送20个包,第三个包丢了,发送端和接收端会怎么做。
\4. MySQL有哪些隔离级别。
\5. MySQL间隙锁知道吗。(知道是解决“幻读”,不知道原理)
\6. 接上题,问“幻读”解决什么问题。
\7. 了解哪些分布一致性协议。(Paxos,Raft)
\8. 介绍一下Paxos协议。
\9. 如果发生脑裂怎么办。(IO hence,忘了)
10.
编程1 mysql,从表中获取学生的名字和选课最多的前五个学生。
course_tbl
| Student | Course |
------------------------
| Alice | Quantum |
| Bob | Calculus |
| Cate | Algebra |

编程2 最长的回文子串。
让我先讲思路,我讲了一个O(n^2)的,面试官说还可以优化。(不会)
力扣上有O(n)的实现,不过用的是manacher算法,我打死都不背。
面试官叫我运行,结果报错了,尴尬的一批,还好面试官说思路是对的。

编程3 go基础语法

func main() {
    defer A{
        fmt.Println("defer1") 
    }()
    defer B{
        fmt.Println("defer2") 
    }()
    fmt.Println("main")
}
main() 

打印结果是?

main defer2 defer1

func main() {
    var m map[string]int
    m["a"] = 1
    if v := m["b"]; v != nil {
        fmt.Println(v)
    }
}

上述代码有什么问题?

\11. 虚拟内存知道吗?

\12. 什么时候会发生缺页中断。

\13. 死锁如何避免。

\14. 系统什么时候陷入内核态。

反问:

你们部门用什么语言?

你们部门base在哪?

总体感觉良好,不过面试题考sql是我没想到的,下面得好好恶补sql了。

8.3 字节二面
面试官看我简历比较有特点,问了linux 文件描述符1,2,3,-是什么意思。
自我介绍+项目(10min)
针对项目狂问。
\1. 你们的项目架构是什么样的。(说了一大堆)
\2. hook的原理知道吗。(不知道)
\3. 有三种代码覆盖率统计方法,你知道吗?(语句覆盖、判定覆盖,分支覆盖)

3.5 代码覆盖率为什么要达到80%
\4. MySQL的DoubleWriteBuffer是什么?为什么要关闭?
\5. aio的优点和缺点是啥?(优点我知道,缺点。。。)
\6. aio是半异步模式还是全异步模式?(???)
\7. 网络IO发展历程。(从阻塞IO到reactor模型)
\8. 为什么进程OOM后,要kill它?(人傻了半天)
\9. 缺页中断一定是发生内存交换吗?(不一定)
\10. (实验室)介绍一下纠删码编码。
题目:链表倒数第k个节点。
写完之后,知道太简单了,又问,返回值如何写注释,应该返回哪些标准错误,
把main改成一个接口。。。

反问:
同一面。

这次面试直接把我打回原形,觉得自己确实还有很多不足的地方,是纸老虎。

8.8 字节三面
上来介绍项目,我叽里呱啦说了一大堆,发现只用了四分钟。
\1. 你们的文件系统和别的文件系统(比如AFS)相比有什么区别。
\2. 问你们项目一个完整的IO路径是什么样的。
\3. 项目中遇到什么难点,怎么解决的?
\4. 介绍一下aio模型。
\5. 多线程模拟aio和linux原生aio有什么区别。(libeio和libaio)
\6. epoll和poll有什么区别。
\7. TCP的拥塞控制。
\8. 实现一个队列,能够入队,出队,统计最小值。
我的方法是队列queue+map,感觉还可以优化。
\9. 红黑树原理是什么。(只记得旋转,平衡,其它都忘记了)
\10. 红黑树优势。
\11. A,B文件各有50亿条数据,内存无法放下全部数据,问如何快速找到两个文件公共数据。

我说用哈希,但是面试官说不对。
\12. 你对什么语言比较了解。(C++)
13 new/delete和malloc/free有什么区别。
14 有继承的类,new/delete构造和析构的顺序。
15 什么是多态。
16 你有看过什么开源项目吗?(Ceph)
17 Ceph的CRUSH算法原理是什么。

做题:最长不重复子串。

反问:
你们部门业务场景?
面试多久出结果?(一周)

三面感觉还是八股,八股终究还是爸爸,感觉难度并不比二面难。

许愿offer,出必还愿!

帮同学内推:抖音搜索部门,内推码:36WYEDN!

178

字节基架一面凉

秋招第一面就以这样的形式结束了,还是有点难受的,毕竟最近复习的还是挺用功的。这次面试还是能暴露出一些问题的,我觉得主要有两点。

\1. 准备不够充分,虽然相关的知识来回复习了好多遍。但是没有对重点问题针对性的形成有条理、有层次、有深度的答案。特别是握手挥手这类问题,虽然已经熟的不能再熟了,但是表述的时候就会遗漏很多细节,导致面试官觉得对基础知识掌握的不好。

\2. 算法题没有把一道题做透,没有有规划的复习。虽然最近刷题数还可以,但是做出来之后就扔在那里了,没有看相关题解学习最优解,导致对题目理解不够透彻。其次,没有对相关重点题目周期性的复习,导致虽然能写出来,但是速度太慢。

希望自己能引以为戒,以后的面试不会出现上面两类问题。

下面是这次面试的问题

-----------------------------------

\1. 自我介绍

项目

\1. 描述一下项目背景,你在里面做了哪些工作?你说提升了易用性,从哪些方面提升的,怎样提升的?

\2. 你们项目里面有流量控制吗?

\3. 讲一下 raft。如何确保状态机的一致?

八股

\1. 简单解释一下三次握手,四次挥手。(这里犯了错误1,几次 syn 几次 fin ,各种包丢失后怎么处理,以及每个包发送后处于什么状态 wait1 wait2 close_wait 等一定要讲清楚。可以重点看下 unix 网络编程相关部分。)

\2. 挥手变成三次有什么问题?

\3. ping 的协议是什么?位于第几层?怎么实现 ping?

\4. 从实际的物理链路的角度解释一下 ping 怎么到对端,怎么返回。

\5. 解释一下 arp,是广播吗?

\6. 讲一下Linux 进程切换,设计的数据结构。哪些场景会发生进程切换?听过自愿切换吗?(刚开始一直不理解什么意思,还以为是问协程相关的。其实就是 running->ready 和 running->block 的区别。这里没搞明白面试官的意思,被绕进去了。。。)

\7. 怎么查看进程切换?如何统计进程上下文切换的次数?(当时没搞懂啥意思,后来觉得可能就是想问 ps 命令吧)

\8. 讲一下虚拟内存到物理内存的映射,TLB,MMU。(这里,再一次犯了错误1,对过程的讲解不够详细,不自知的省略了很多流程)

\9. 讲一下 page fault, major page fault, minor page fault

代码题

lc 221

179

【2023秋招】巨人笔试&字节简历转岗

本周做了巨人的笔试,还经历了字节简历的神奇转岗。又因为比较焦虑摆烂投了更多公司。

巨人提前批笔试

选择题

20*2,不定项(15左右C++,1 C#,4左右面向对象),不定向就很虚想选又不敢选。考的也稍微有点偏(个人感觉)。

编程题

2*20 ACM模式 第一题样例给的有问题,所以没做。但是据群友说直接print答案就能过。正常解法应该就是贪心(类似01背包)

第二题 有n个文件,每个文件都可能有若干个前置文件,每个文件都有各自的大小,文件真实大小为自身大小+所有前置文件的大小,输入每行代表一个文件输入,第一个输入是本文件名,第二个是文件大小,第三个开始为前置文件名(可能没有,也可能不止一个) 输出最大的文件名和其大小 第一眼以为用拓扑,但是因为太久没刷题忘记怎么写了。后来群友说用例可能是带环互相前置的,所以拓扑不一定可解。

两道题所有的输入都是用逗号隔开的,很不方便。

问答题

2*20 第一题 四选一 操作系统多线程/计网/游戏设计(设计一个横板射击游戏中能自动躲避子弹的AI)/立体几何(给定AB两点坐标,AB垂直于一个平面,且垂足为A,求平面方程)

第二题 简述内存对齐的规则及作用

字节简历转岗

在字节的朋友突然给我截了一个图,告诉我的简历投到另一个岗位上去了。我一看官网,好家伙,给我秋招提前批转成了日常实习。朋友告诉我说是因为我还有一年才毕业,只要没毕业进来的身份就还是实习生。 我大受震撼,我的理解是秋招拿到offer那我就明年毕业直接去了,不过按朋友的意思就是拿到offer之后也要先实习然后再转正。还没有给我安排面试,到面试得好好问问,别到时候实习了好久然后不给offer,发现自己拿的仅仅是个实习offer。

其他

周五因为焦虑索性又投了几家公司,不知道下周是否有回复。 另外鹰角的官网状态已经变成了“综合评估”,貌似还挺难得的(群友挺多都简历挂了)

180

0729 字节跳动提前批三面面经

时长:1小时

体验:问的都是我意想不到的问题,问八股很少

  1. 介绍项目
  2. 问项目细节、写项目实现的伪代码(人傻了,随便写了点)
  3. 场景题:用户反应头条新闻刷不出来怎么排查问题?要从客户端角度考虑
  4. 代码到可执行文件的过程?(唯一八股)追问词法分析语法分析语义分析具体做了什么?
  5. 算法题:应该是部门自己出的,大概意思是:西瓜视频想找到高频词是哪些,给了一些敏感词需要过滤。输入:unordered_map<string,int>表示词汇、频率,set表示敏感词,int k表示前k个高频词,返回vector前k个高频词(不含敏感词)。主要考察排序+topK+unordered_map+set的使用吧,面试官要求尽量时间复杂度低。sort自定义排序不行,可能就想让自己写排序吧(优化快排或者堆排),没全写出来,写了80%吧

181

字节国际支付后端提前批一面

时间:2022/7/25 一面已挂,算法题没做出来,供大家参考

  1. 自我介绍
  2. MySQL事务的特性以及底层实现原理
  3. MVCC实现原理
  4. 两阶段提交
  5. 刷盘的策略
  6. MySQL的锁
  7. 什么时候会加意向锁
  8. 多个线程同时去操作一行很热的记录肯定会对行锁去竞争,怎么优化
  9. MySQL出现死锁怎么解决
  10. binlog有哪几种格式
  11. binlog和redolog的区别
  12. MySQL常见索引类型和使用场景
  13. B+和B树的区别,B+树有什么好处
  14. 覆盖索引
  15. 最左前缀原则
  16. MySQL主从同步的过程
  17. explain语句
  18. HTTPS和HTTP的区别
  19. HTTPS具体的连接流程
  20. CA证书的作用
  21. CA机构如何提供担保
  22. CSRF跨域攻击
  23. TCP如何保证可靠传输
  24. Redis缓存穿透,缓存击穿,缓存雪崩以及解决方案
  25. Redis分布式锁
  26. 如何保证加锁和释放锁是同一个线程操作的
  27. Redis分布式锁容灾问题,如果一个Redis挂了会不会重复拿到这个锁
  28. Redis主从同步
  29. 怎么决定主从同步是否需要强同步、异步同步或半同步
  30. netstat的原理
  31. chmod指令 777含义
  32. 算法题:滑动窗口最大值

182

2022.7.29字节跳动广告后端研发工程师抖音电商一面面经

面试官很和蔼,近期来面试体验最好的一次。面试时长一共一个小时。

  1. 自我介绍,讲一讲三个项目吧。
  2. 设备故障诊断,算法方向的,讲讲看
  3. rpc netty NIO实现原理,为什么要用NIO?
  4. 你这个rpc用到zookeeper了是吧,讲讲为啥要用zookeeper,相较于其他注册中心有什么优势。如果zookeeper挂掉了怎么办呢?我猜是集群不过我就做了单机。
  5. rpc我看你实现了很多种序列化,讲讲为什么要实现这么多?我看你用了protbuf,里面的数学原理讲一讲。写过protbuf的程序么?
  6. 项目里redis用来做什么?数据字典,防止超卖,存验证码。讲一讲防止超卖的原理。
  7. 验证码存在redis里跟存在内存里的区别?
  8. redis aof rdb讲一下。
  9. redis 分布式锁会么,讲一讲。
  10. redis挂掉了怎么办啊?
  11. mongdb mongodb跟mysql的区别。为什么要用mongodb,用mysql不行么。
  12. mysql 会么?讲讲慢查询的情况。
  13. mysql主备分离的作用?mysql采用主备分离会有什么问题?怎么解决这些问题?
  14. B是不是A的子树,leetcode原题(剑指 Offer 26. 树的子结构)。

183

金九银十,Java 程序员面试历程

目前拿到了字节,百度,网易(白菜价,已拒),美团,小米的意向书,等最终结果通知的是华泰(已收到体检通知),招行信用卡,阿里

招银(资料审查中),网易互娱(二面没去),浦发(没去体检),农行(面试通过,没去笔试),腾讯(两次被捞都是一面挂,第三次还是深圳拒绝了面试),微软(笔试完),银联(笔试完),微博(拒绝了现场面试)

还有各种笔试挂的(流利说,爱奇艺,小红书,B 站),后续拒绝了很多面试,再也没有精力再去了,持续躺尸中…

实习的时候真的是屡战屡败(阿里三次已回绝),真的要好好调整自己,面试过程中要充分思考,祝大家都收获自己满意的 Offer

一. 字节跳动(北京)

字节跳动是提前批面的第一家公司,部门也是核心部门,但是但是当时脑抽投的北京岗位,很后悔没投南京的,日常眼馋实验室同学的南京字节 Offer

面试体验很好,给了自己信心和很多面试的查漏补缺以及思考方式,感恩。

还记得视频面紧张的不行,因为代码能力比较弱,很怕手撕代码,一面面试官看我没写出来,还换了一道特别简单的判断有无环,真的是感恩。

一面+二面+三面:(视频面)

  • Redis 数据类型的底层数据结构,String 类型和 SortedSet 类型
  • 中断处理中 cpu 现场环境存储在哪里
  • MySQL 中有 a,b 两列各自建立索引,在进行查询的时候,走哪个索引,怎么设计
  • 三面主要问项目中的消息中间件和场景题
  • 代码题目:******** 85 最大矩形 , 判断链表有无环,手写 hashmap
  • 好多不记得了。。
  • 还记得当时收到四面通知的崩溃,以为结束了,都在躺尸的时候收到了四面通知。。

四面(视频面)

  • 灵魂拷问:觉得自己前面几轮面的怎么样,为什么觉得三面没面好,三面面试官提出的问题下面有去思考吗
  • 针对被三面面试官问懵的项目问题,开始深挖和设置场景题…
  • 如何比较对于同一个问题的两种算法的优劣性,不能计算时间复杂度和空间复杂度(信息增量)

二. 百度(上海)

一面(视频面)(1h20min)

  • 代码题:单例模式,数组的题
  • 阻塞队列实现
  • 怎么设计一个线程池的各个参数,各种场景下线程池的设计
  • cas 底部是怎么实现的保证原子性(底部到硬件指令)
  • 最后,讲一下虚拟机的知识点吧
  • 只记得一些典型的问题了,一面还是基础问的比较多,细致~

二面(电话面)

  • 聊项目.gif(感受到一丝凉意)
  • hadoop 和 spark 区别,为什么用 spark,优势
  • 为什么用这个消息队列,高可用,保证消息不丢失的机制
  • 为什么用线程池,线程池有哪些,以及应用场景
  • 垃圾回收的知识,为什么要垃圾回收,可达性分析,回收算法,垃圾回收器
  • 写 sql 语句,查询各门科目成绩都>80 的学生姓名
  • 聚簇索引和非聚簇索引
  • mysql 事务和隔离级别,默认的隔离级别
  • sychronized 和可重入锁的区别
  • ORM 框架——mybatis
  • Spring 和 Springboot (我以为会被挂的地方,不太懂 Spring)

三面(电话面)

  • 是个小姐姐,技术加 HR 面综合的感觉
  • 主要问的分布式的项目以及 Spark 项目,没有基础知识和代码题
  • 觉得自己的缺点是什么,周围人对你是什么评价,最有成就感的一件事

三. 网易(杭州)

几乎和百度同时进行~

一面(视频面)

  • 为什么研究方向是机器学习,不做算法。。(我也想啊,这不是菜嘛)
  • 聊项目.jpg,主要聊了分布式的项目,源码等等
  • 那我们来问一下 java 知识吧
  • java 内存区域
  • java 有哪些等待通知机制
  • Countdownlatch 了解嘛,底层怎么实现的?
  • 说下 AQS
  • 什么时候申请堆外内存
  • 内存映射以及内存映射的方法是哪个
  • 分布式缓存 redis,怎么做成分布式
  • 一致性 hash
  • 不用 redis cluster 怎么做?
  • redis cluster 一个宕机了会有哪些处理?
  • 分布式数据库了解吗?
  • 发布订阅模式,以及一个消费者组集群模式怎么消费
  • 了解 Spring 吗(不了解不清楚别问我我没看)
  • web 下服务器怎么做负载均衡的?

二面(视频面)

  • 项目和场景题
  • 负载均衡的几种方法
  • 缓存击穿,雪崩的应对方法,详细讲

HR 面(现场面)

  • 常规 HR 问题

四. 阿里(等最终通知)

一面(电话面)

  • 项目相关:有调研其他的消息中间件吗?为什么用 rocketmq?
  • 线程池的原理以及各种线程池的应用场景
  • 线程池中使用有限的阻塞队列和无限的阻塞队列的区别
  • 如果你发现你的 sql 语句始终走另一个索引,但是你希望它走你想要的索引,怎么办
  • mysql 执行计划
  • 数据库索引为什么用 b+树(磁盘 io 的深入了解)
  • 你在做 sql 优化主要从哪几个方面做,用到哪些方法工具

二面 + 三面 + 交叉面 + HR 面(电话面)

(我已经忘完了,忘记记录面经了)

在坐地铁的路上面了个疑似交叉面的面试,刚开始以为是挂了,然后被别的部门捞了,也没听清楚是什么部门,内心很崩溃,当时面的感觉是秋招面的最差的一次。

却意外地等到了 HR 面,才知道前一面可能是交叉面(来自从没体验过交叉面的疑惑)~~

面试官让我帮忙推没有面过的简历,太难找了,问了别的实验室也没有,尽力啦,等最终通知!!

五. 美团(上海)

一面(电话面)

太太遥远了,不记得了.jpg

二面+三面+HR 面(现场面)

距离一面有 1 个多月,期间收到了 HR 通知去上海现场面,但当时有些懒得跑,想等南京现场面,就木有去,终于等到南京现场面

  • 线程池的原理以及各种线程池的应用场景
  • 项目深挖,画出架构图,加 MQ 源码
  • MQ 不能保证只会消费一次,如果让你在 MQ 中加入,你要怎么设计
  • 消息去重保证幂等性有哪些方法

我是只有七秒记忆么,这是最近面的一个了,大多还是不记得了

六. 小米(南京)

一面(现场面 2h)

去了南京小米公司面了一波,整整两个小时让我怀疑人生

  • 问了研究方向
  • 项目中使用的 MySQL 版本号,使用哪个引擎,为什么
  • MySQL 两个引擎的区别,为什么 INNODB 使用聚簇索引,而不用 MyISAM 行指针的形式
  • SQL 优化的几个方面
  • Redis 的数据类型,SortedSet 底部实现
  • Redis 分片的几种形式,Redis Cluster
  • 介绍一下 JVM 知识
  • Java 线程池原理及其应用场景
  • Concurrent 并发包里几个类介绍一下
  • HashMap 求 hash 值的时候,无符号右移 16 位的意义
  • 解决 hash 冲突的几种方法,在哪些地方用哪种
  • tcp 粘包和拆包的方法,tcp 可靠性通过哪几个方面保证
  • http 无状态的,session 和 cookie 存储在哪里
  • 调用一个模块的服务的请求参数是加在哪里,修改 http 请求头来保持请求的状态
  • 一个服务部署在多个服务器上,怎么负载均衡,怎么让请求打到某个服务器上,怎么寻址,一个服务器宕机怎么感知
  • io 多路复用,select,poll,epoll 的底部原理
  • 手写一致性 hash
  • 算法题:两个集合求交集,其中相同的数字出现多次就输出多次,无序

二面(电话面)

不想再跑一趟了,向面试官改成了电话面

  • 避免幻读的方法,MVCC 中怎么避免幻读的某个方面
  • Full GC 什么时候发生,各种垃圾回收器,哪些是年轻代,哪些是老年代
  • 数据库索引结构,为什么是 B+树
  • 项目 ing
  • 感觉面的不太好,二面面试官说有三面,没等来三面,等来了 Offer Call

七. 华泰(南京)

一面

  • 项目问题 ing…
  • http 的 get 和 post 区别
  • 大量数据不能一次性放到内存,出现频率最大的数字,数据倾斜的极端情况怎么办

课题考察

分布式全局唯一 ID 生成器

  • 耗费心血,熬夜三天

HR 面(5 分钟)

主要问成绩,家庭情况和职业规划

已经收到体检通知啦,希望一切顺利,加油

184

字节跳动2022暑期实习(已获得Offer)

岗位:实习生 网络研发实习生 - 高速网络

面试流程:2022.2.9-2022.2.22(一二三面+HR面),2022.3.1收到Offer

一面:

算法题:实现一个LRU的cache结构。

考场我用了数组实现。面试官更希望用链表或者map的哈希表完成。

二面:

算法题:给一些数,每个数可以重复使用,求达到x的方案。

考场先想了个完全背包,发现负数的问题会导致死循环。和面试官交谈后,细节太多,时间关系就没写了。

后来就当只有正数,写了个DFS。

算法题:连续数组最大和。

O(N)贪心即可。

三面:

算法题:一个01字符串,连续x个的0+x个1,或者连续y个1+y个0,称为一组。求组数。

一开始记录了next位置的换颜色,O(N)空间,O(N)时间两个并列的for循环。

后经面试官要求,改为O(1)空间,且用一个循环来做。

P.S. 当时只记录了算法题,忘了记录基础知识问题了。

185

字节提前批面经

一面

时间:50分钟,base:北京

全程没有问项目,总体比较常规

  • https和http的区别
  • 浏览器输入url的过程
  • 每一次http请求都会建立TCP连接吗
  • 输入url后物理层、数据链路层、网络层如何工作的
  • 说一下进程和线程
  • 进程之间通信的方式
  • 进程切换的过程
  • 说一下mysql常用的引擎
  • innodb的索引结构
  • b+树底层是双向链表还是单向
  • redis持久化机制
  • zset底层结构
  • zset底层除了跳表还有其他的实现吗
  • 合并区间
  • 岛屿数量

二面

时间: 80分钟(因为算法题一直有bug,面试官耐心多等了我20分钟解决)

由于问了一些实习的项目,项目相关的一些内容用xxxx屏蔽掉

  • 为什么要对xxxx数据做一个混淆
  • xxxx的数据是什么类型的
  • 如何通过xxxx的数据判断xxxx
  • xxxx如何收集的,因为xxxx卡顿了,如何保证收集上报的成功
  • 对接xxxx是为了实现什么
  • 为什么选用xxxx(不是mysql)数据库
  • xxxx数据库的特点
  • 定时任务主要用来干嘛
  • 分布式锁如何实现的
  • 如果实例内存或CPU爆了,无法完成定时任务,并且没有释放锁,如何解决
  • 分布式锁如果锁自动释放了,但实例任务还在执行,如何保证其他实例不执行该任务
  • redis常用的数据结构
  • redis String类型底层数据结构,何时发生扩容
  • redis String如何实现二进制安全
  • mysql的幻读、脏读、不可重复读
  • 如何解决的幻读和不可重复读
  • ACID是如何实现的
  • 如何在RC级别下解决幻读
  • 一条select语句在mysql里的执行流程
  • 实习公司mysql默认设置的隔离级别
  • mysql8.0为什么取消缓存
  • 说一下你熟悉的排序算法
  • 那些算法是稳定的
  • 如果让你选择一个排序算法,你怎么选择
  • TOP K问题的解决方案
  • 使用快排的思路解决TOP K的时间复杂度是多少
  • 字符串乘法(使用模拟即可解决,但就是很多细节需要考虑,感觉这道题更考验写代码时的细节处理能力,在面试中太紧张了一直出错)

三面

没啥好写的,两道算法题和一个场景题就结束了

186

字节一面

lru缓存

单链表快排

智力题:打手电过河

写一个并发的map

计算机网络八股

29日,进入二面
上次抖音直播挂了,又被做网络框架的捞了,不知道怎么样。
网络框架一面
疯狂问TCP
k个一组反转链表
三面完收到调查问卷了,感觉要g,唉

187

字节互娱一面凉经

面试时长45分钟:

自我介绍:

前面大部分时间都在扣项目细节;

秒杀:

1.如何保证缓存和数据库的一致性

2.如何保证库存的一致性?

3.怎么确保整个流程是可靠的呢? (@ Transactional的大事务)

教研室的项目:

4.有异常是如何发现并预警的呢?

5.如何保证读取的数据是最新的数据,假如读到上一次的数据该如何解决?

====== -------------- =========

6.线程池实现原理(回答了工作流程,面试官说不是这个)

7.阻塞队列实现原理(不会)

8.写题: 如何判断一棵树是平衡二叉搜索树?

平衡、搜索分开判断的,但是面试官让一次遍历判断。

188

字节提前批 一面

内部员工回复

字节 后端-基础架构Data 一面 7.28 大约50min**
**一、自我介绍二、项目前面自己先介绍聊天集群项目的大致内容你项目中用到的nginx,那七层配置了解过吗?客户端怎么实习的;前面谈到epoll,项目中服务端用到的是边缘触发还是水平触发,回答边缘触发,然后把两个都简单说了区别怎么保证边缘触发能一次读完数据?
三、操作系统项目中用到的muduo,引出来同步异步、阻塞非阻塞,你说说这些为什么用epoll,对比一下select和poll。(老八股了)reactor还有哪些开源库用到了?进程的状态有哪些?说一下进程和线程的区别说一下僵尸进程,怎么检测出僵尸进程?
四、计网说一下浏览器访问url的过程https握手过程TCP的建立连接、流量控制、拥塞控制一起说一下继续往下说网络层怎么转发数据包arp地址解析用到了吗,路由器转发出去,这个mac地址是谁的,怎么得到能不能静态arp(没答上去)
五、算法题(48min看了一下时间,这么快)全排列(LC46)
六、反问整体的面试评价怎么样?你们部门用C++做什么?

189

字节跳动2023秋招提前批面经(三轮面试,已意向)

内部员工回复

部门:网络开发工程师-系统架构

流程时间:2022.7.13-7.19,三面+HR面完成,7.21获得意向。

第一轮面试:1h

自我介绍+问项目环节,项目问了比较久

\1. C++怎么防止死锁,怎么防止资源抢占

\2. C++的模版

\3. Python的装饰器用过吗?GIL多线程的原理

\4. 如何防止指针越界?

\5. HTTP/2有哪些特质

\6. TCP如何实现可靠传输

\7. HTTP连接中,SERVER端如何判断Client端出现错误,出现了哪些错误?

\8. 简述一个请求的如何到数据中心,数据中心的后台如何响应的。

\9. TIME_WAIT和CLOSE_WAIT分别出现在哪个阶段

\10. 算法题:求一个字符串,最长没有重复字母的字串。比如abcdabcbad。答案是abcd。O(N)复杂度最好。

\11. 算法题2:接雨水

第二轮面试:1h

自我介绍+问项目环节,项目随便问了问

\1. Hash表是怎么实现的。

\2. 缺页异常。

\3. 虚拟内存和物理内存。

\4. 排序算法有哪些,分别的时间复杂度是多少。

\5. 并发需要考虑哪些?知道哪几种锁?

\6. DNS的递归访问?举例子,比如你现在发一个DNS请求怎么访问?

\7. TCP三次握手时发生了哪些数据的交换?分别在什么阶段?

\8. 有哪些拥塞控制?分别的原理是什么?有什么不同的应用场景?

\9. SOCKET编程用过哪些?会不会更细致的原理?

\10. HTTP3是如何优化HTTP2的队头阻塞问题?

\11. QUIC的CONNECTION_ID的实现原理?具体的TLS的不同阶段是怎么实现的?

\12. HTTP有哪些常用的操作

\13. 算法题:快速排序实现。

第三路面试:45min

自我介绍+问项目环节,基本没问项目

\1. QUIC connection的建连过程,如何保证能migration?

\2. 用上述方法,QUIC migration 过程,要修改整个系统的哪些部分?(路由器,负载均衡器,服务器的TLS版本等)

\3. C++语言问题。int *a[8]和int (*a)[8]分别是什么意思

\4. 平时写代码用Linux多吗?操作系统懂吗?

\5. 写一个大工程,什么情况下容易遇到Segment Fault?

\6. 追问,数组越界一定会导致Segment Fault吗?

\7. 追问,平时怎么Debug?

\8. 算法题:给定一些0-9的数字,每个数字能多次使用。给定一个n,求用之前数字能组成的,小于n的最大值是多少?(A={2,4,9}, n=23121, ans=22999)

190

字节一二面凉经

第一次在牛客上写面经,因为自己也看了很多别人的面经,所以也写一下分享给大家参考一下。

一面

项目

1、简历上的项目问了10多分钟。

C++
2、虚函数的实现原理。
3、多继承时,虚函数表的个数、虚函数表指针的个数。
4、多继承时,会出现什么问题以及怎么解决。
5、子类重写了父类的虚函数,那强制转换为父类时,是怎么找到父类的虚函数。
6、epoll、select、poll的区别。
7、epoll的实现原理。
8、epoll的水平触发和边缘触发的区别。

计算机网络

9、TCP的流量控制
10、为什么有了流量控制还有拥塞控制。
11、介绍拥塞控制算法。

操作系统

12、进程和线程的区别。
13、内存空间布局。
14、一个进程独立的4G虚拟地址空间,那Linux是怎么防止一个进程去访问另一个进程的内存空间。(类似于游戏中的外挂、修改器之类的,如何去防止和发现外挂)

算法

leetcode31 下一个排列,做完让用二分优化了一下。

体验

总体感觉很不错,问的都是一些常见的八股,面试官会循序引导,反问的时候也被夸基础很不错,建议可以去学学redis、mysql这些数据库。

过了半个小时就约二面了。

二面

上来先问有没有实习经历,说了没有之后很失望的样子。

然后问为什么没有去实习。

然后问我可以实习多久。???我投的提前批啊,不是实习啊。

数据结构

1、说一下了解的数据结构以及特性。

2、如何用栈实现一个队列。

3、怎么判断一个链表有没有环。

当时说了快慢指针、面试官问还有呢?

然后想了下哈希表也可以,面试官又问还有呢?

再想,递归也能判断,面试官又问还有呢?

​ 除了这三个方法没想出其他的,面试官好像很失望,但我真不知道了,其他两种都是现想的,知道的小伙伴可以留言。

4、为什么快指针和慢指针一定就能够相遇。

5、求出慢指针和快指针相遇的时候走了多少步。

给定链表长度为m,不是环的部分是n,用数学表达式写出慢指针走的步数。

6、B树和B+树的区别。

当时说的是数据库中B树和B+树的区别,面试官说我问的是数据结构中的区别,不是数据库中的区别。

操作系统

7、进程和线程。

8、介绍有哪些锁。

9、怎么实现互斥锁?

10、怎么实现信号量?

11、怎么实现读写锁?

12、怎么实现自旋锁?

项目

13、介绍了高并发内存池的项目。

针对项目开始轮番轰炸,问了很多问题,答得不好,有点紧张,所以介绍项目和回答问题的时候思路很乱,很多都没表达清楚,所以大家一定要对简历中写的项目很清晰,以及介绍的时候语速慢一点,不要紧张,把自己知道的有条不紊的表达出来。

算法

leetcode56 区间合并

本来前面被怼得很惨,心想终于出了道常规的算法题可以抢救一下,但事实证明我太天真了。

先让介绍思路,然后就说了最常见的先排序然后再遍历合并的方法,然后被问还有没有其他方法,没想出来,然后面试官就让先写。

很快就写完了,也没问题。但是面试官就很不满,直接就说你给我一种是刷题刷出来的感觉,这道题是一道很经典的算法题,有很多种解法,但是你却只知道一种。

反问

问有哪些需要改进的方面?

1、没有实习经历是很大的劣势,现在有很多大一大二的都取实习的,你快研三了都没有实习经历这个很难,尽量多去实习。

2、面试的时候有点紧张,回答问题的时候有很明显的背书迹象,回答之前先思考,不要急着回答,比如回答项目的时候给我一种很乱的感觉,有很多东西都没表达清楚。

那如何增加实际项目开发经验?

3、多去看github上面一些项目,看看别人是怎么做的,你可以怎么进行改进。

4、找一位有经验的前辈带你。

体验

1、这一面的面试官很明显是个技术大佬,回答问题的时候,像有些问题我不太确定的,用了"应该"这样的字眼,直接就打断我说,不要用“应该”。

2、然后问一个问题,会一直拓展得很深入,上面提到的这些问题,每一个基本都拓展的很深,因为拓展部分很多不会,所以也忘了拓展问了些啥了。

包括上面提到的链表判断环和区间合并,一直问其他的方法,所以大家做题的时候,不要只是通过了就行,多看看leetcode一些点赞高的题解,看看别人的思路,今年这卷的程度不是算法做出来就能过了,会让你写多种解法。

3、面试的时候紧张不可避免,但大家一定不要慌,一慌就容易表达不清楚,这给面试官感觉很不好,建议大家私下多练习如何介绍项目,并且多准备几个版本,比如简略的介绍和详细的介绍,突出项目每个部分是如何实现的,该部分的难点,以及你是怎么解决的。

过一个小时就收到感谢信了。蓝瘦香菇。

191

7.27 字节跳动二面:番茄小说

时间:2022年7月27日 下午4点
部门:番茄小说
职位:后端
面试时长:1小时

第一部分:项目

  1. 介绍一下项目
  2. 说一下站内异步通知怎么实现的?
  3. 用户登陆之后怎么能看到站内通知呢?
  4. 说一下 Kafka 和 Rocket MQ 的区别
  5. 为什么Kafka具有高吞吐和低延迟的特性?
  6. 在Topic不断增加的情况下,Kafka和Rocket MQ的性能比较
  7. Kafka和Rocket MQ如何实现顺序消费?
  8. 介绍一下两级缓存怎么实现的?
  9. 缓存击穿问题怎么解决?
  10. 除了互斥锁解决缓存击穿问题,还有没有其他尽可能不影响性能的解决方案?

第二部分:常规八股

  1. 说一下Java线程有哪些状态?
  2. Java线程的状态之间怎么切换?
  3. sleep函数和wait函数的区别?
  4. String是基本类型么?它具有什么样的特点?
  5. String如何实现不可变的?
  6. String实现不可变的主要目的有哪些?
  7. String有lenth方法么?数组有么?(这里答错了,我说String有,数组也有,结果面试官笑了,后来一想数组的length是属性…)
  8. 一个字面量和一个new出来的字符串,两者引用地址相同么?为什么?
  9. MySQL执行一个SQL语句的具体过程?
  10. MySQL事务的特性
  11. MySQL事务的隔离性如何实现?
  12. MySQL事务是如何解决幻读问题的?
  13. MySQL事务的默认隔离级别?(我回答是RR,面试官说是RC…)
  14. 场景题:三个线程如何交替执行?(这个问题面试官一直问还有实现方案么?我一共说了4种)

第三部分:算法题目

  1. 打家劫舍III
  2. 大数相乘

总结:总体回答还算可以,已经收到三面通知。大家有什么问题可以在评论区讨论哈。

192

字节跳动-提前批-直通车面经

base 北京 字节跳动-互娱-直播

和那边约了直通车面试,两轮leader面。

=7.21直通车一面=
【项目】

在字节的项目,揪的很细很细。好几点都没答上来。

【八股】

象征性的问一下。

说一下互斥锁和读写锁的区别?

Redis为啥这么快?如何发现热点key?Redis的淘汰机制有哪些?你说的几种发现热点key的方式有什么缺点或者不好的地方吗?

【算法题】

  • 使用原语Mutex实现一个读写锁
  • 统计无序数组各元素出现的次数
    • 一个长度大小为N的数组,数组中的每个元素的取值范围在[1,N],且为正整数。
      问:如何在时间复杂度为O(N),空间复杂度为O(1)的条件下,统计数组中不同元素出现的次数?

=7.22直通车二面=

【项目】

在字节的项目。

【八股】

问的挺多的。

go routine

go 如何实现线程同步。

Java 如何实现线程同步。

Syn和ReentrantLock有什么区别?除了Syn和ReentrantLock还知道其他的锁吗?

CAS是什么?怎么解决ABA问题呢?

Https和Http有什么区别?

Https原理是什么?CA是什么?

Https为啥要四次挥手?最后一次挥手为什么要等待2MSL?

阻塞IO/非阻塞IO,同步IO/非同步IO。

在字节实习有什么收获?和其他公司实习有什么不同的感受?

【算法题】

寻找一个数组的波峰。

193

字节提前批一面二面三面经~

字节一二三面(意向)
一面 1h
\1. 学习相关
\2. 有没有做过操作系统的大作业
\3. 一段代码从程序到执行经历怎么样的过程(编译原理,从代码变成二进制的过程)
\4. hashmap八股
\5. 除了链地址法还有什么解决hash冲突的方法
\6. 线程和进程
\7. 什么是虚拟内存
\8. 进程的地址空间
\9. Spring iod 和Aop 两大核心思想
\10. SpringIOC的优势说一个具体的例子
\11. Spring AOC的具体使用,是怎么实现的,动态代理具体是怎么实现的
\12. 代码:判断二叉树是否对称
\13. 代码:有效括号

二面 1h10min
\1. 自我介绍
\2. ThreadLoacl的原理
\3. 为什么key使用弱引用可以解决一部分内存泄漏,但是不能完全解决
\4. 四大引用的区别 这里一直扯到了垃圾回收机制
\5. 虚引用的具体作用
\6. GCroot都有那些呢
\7. 还有那些呢
\8. 类的属性会造成内存泄漏么
\9. 那他适合做GCRoot么
\10. 为什么类的成员变量不可以作为GCRoot
\11. 还有那些可以作为Gcroot ==!
\12. 我:想不起来了。面试官:你根据你以前写过的代码去回忆那些可以作为GCRoot
\13. 你怎么学习JVM的
\14. 你在这本书里面了解到了对你有提升的知识
\15. 我说了为什么要打破双亲委派的理解
\16. 死锁,用你程序开发中的例子,来构造一个死锁的场景,并分析为什么会发生死锁,如何解决这个死锁。
\17. 什么情况下会有线程安全的问题,为什么会发生线程安全
\18. TCP为什么是三次握手?我回答了死锁还有重复开启,他说不是他想要的答案。我又说了每次握手的状态位
\19. TCP的拥塞控制巴拉巴拉
\20. 代码,找到链表的中间节点
\21. 代码,找到倒数第n个节点
\22. 交换整数第n个节点和倒数第n个节点
\23. 要去一次循环内解决

三面 没录音很多都忘记了 50min
1.内存什么时候会出现一个锯齿状的波动,举一例子,为什么会造成这种情况
2.为什么垃圾回收次数发生很多会不好。
2.那内存的波形图是很小的锯齿形,很很大的锯齿形那种好,为什么好,为什么不好
这一块记不清楚了,问了超级多
3.那波动很大怎么解决?
4.在一个for循环中每次都需要建立一个很大的对象,这一个对象就快把内存占满了,不想每次都发生GC又不想每次都重新设置该怎么办。
4.redis的三大缓存问题
5.后面就是一些hr面的问题

已经 OC 回馈牛客!继续努力!

另外,我将我的面试过程和复习过程都总结出了八股,还有很多资料,如果有想转行的同学可以加 Qun: 71593 6698,还有很多大佬和面经都在里面,大家快来呀

194

字节一面

第二天才写的,有些问题记不得了,顺序也不一定对

1.介绍一下自己

2.介绍一下项目

3.分布式id是自己实现的吗,说说其中的原理(雪花算法)

4.Spring的循环依赖问题

5.Hashmap1.7和1.8的区别?他们的散列函数一样吗?为什么转化为红黑树的阈值是8?

6.来写一道题:一共有四个页框,调度顺序是xxxx,如果采用LRU算法最后一个被淘汰的页是哪个?

7.这个算法略显麻烦,有更好的方法吗?(opt,但只是作为衡量的标准)

8.进程间的通信有哪几种?

9.说说数据库的隔离级别(mysql)

10.为什么默认的隔离级别是可重复读呢?

11.来写一道题:两个人在圆桌上放硬币,直到放不下的那个人算输,A先手放要如何才能必赢?

12.Unicode和ASCII码的区别

13.来写一道题:力扣31

14.反问

195

字节面试个人总结(已OC)

提前批三面+正式批四面,提前批面到三面时选的岗位没得hc了,就给我换了个岗位从头开始。

提前批:

一面,70min
怀疑因为自己说擅长的是go语言,所以总感觉自己的一面和别人的内容不一样😂,字节没有自我介绍。
1,现在最熟悉的语言,如果学习一门语言最关注哪些。
2,现在最熟悉的go语言和其他语言的语法有什么不同。
3,为什么go做了CSP的设计。
4,进程的通信方式。
5,go和其他语言的语法的不同有哪些,举个例子。
6,怎么看待go语言的duck type,是什么,怎么用,有什么好处。
7,go的接口和java的接口对此有什么优点,从生态社区来谈一谈(ducktype的接口和显示声明的接口的对此)。
8,为什么go可以把同一个struct的方法放在不同文件,而java一般把同一个对象的方***放在一个class里。
9,go的error的抛出会伴随一个函数而且可能会多次,为什么需要这么设计
10,go语言的有哪些复用机制
11,了解过函数式编程吗
12,go的context的设计,如果在context里有两个传值用的相同的key,那么哪一个会被接受到
13,怎么看待进程,线程和协程
14,学习一个数据库会关注哪些地方
15,如何确保数据库发生了故障或者有高访问量的正常运行
16,为什么索引能够提高检索效率

算法,leetcode 394的升级版,有些输入括号里除了字母还有数字。有些括号外面没有数字,只有括号套在外面

然后就是反问,面试官说应该今天晚上或者明天会给我个反馈,许愿进二面。

二面 47min
总体感觉比一面简单😂
1,自我介绍
2,raft日志复制的过程
3,如何解决网络分离导致多个leader的问题(脑裂)
4,对golang的interface的理解
5,interface的底层结构
6,用一个实现了方法的对象复制给空接口,用这个空接口调用方***报错吗
7,请求一个https的url的过程(这里讲了10多分钟刚讲到了物理层,面试官说感觉我了解的很清楚,就没让我讲了😂)
8,redis的过期key的删除策略
9,平时学习的渠道和深入了解的方式

算法,leetcode 670最大交换,给面试官说了我的思路,但是说我的思路是n^2,然后面试官说了下他的思路,我发现和我的一样😂
后面就是反问,问了三个问题,就告诉我hr会通知我后续流程,许愿进三面。

三面 46min
本来是上周五,然后推迟到了今天。这次的面试官感觉很忙,面试跟其他的冲突了,然后等了20分钟。
1,自我介绍
2,有学过mysql吗,看过哪些书,mysql有几种索引
3,主键索引和普通索引的区别
4,建立索引应该遵循的原则
5,查看执行计划有用过吗
6,select…for update加锁的过程
7,实现一个文件导入导出需要考虑的因素,除了需求之外需要考虑什么,如果数据量很大会导致什么问题呢
8,redis和mysql的区别
9,知道redis的热key吗,如果分布式数据库中某一个分片具有热key导致一直被访问怎么去解决这个问题。
10,讲一下一致性哈希

算法,lc22 括号生成。

三面完一直没有消息,然后就问了hr,第二天就又收到新的面试,换了个部门和hr,变成了正式批,后面问了hr是因为没有hc了,就给我换了个部门但是要重头开始,好在就是不用参加正式批笔试。

正式批:

一面:1h

八股轰炸😖,但没有手撕了。

1,自我介绍

2,参与实习的方式,个人还是合作,如何分工

3,实习中沟通方面遇到的好的方面或者问题。

4,对于业务开发的了解,

5,如何看待业务开发中技术性的成长

6,关于系统设计有什么想法

7,如何看待面向对象设计中的设计模式

8,项目里面有什么用到的设计模式吗

9,对spring mvc有深入的了解吗

10,对依赖注入的了解,在golang里面需要依赖注入吗

11,对于自己的项目的规划和设计有什么心得,总结

12,讲一下CAP

13,讲一下http2.0

14,get和post的区别

15,defer的原理

16,golang函数传递的方式

17,简述golang的gc过程

18,redis缓存一致性问题

19,智力题

20,对于未来职业的规划

二面:1h

面试官和我一样一口川普哈哈哈🤣

1.自我介绍

2.说下go里的context

3.http以及https

4.TLS四次握手

5.虚拟内存是什么,有什么作用

6.讲下SWAP

7.讲下mysql的服务层和引擎层

8.mysql的日志

9.主从同步过程中,从节点发生故障会怎么样,又如何继续同步呢。

10.update语句和三个日志的联系

11.为什么会有多种数据库存在与市面,用mysql和redis举例说明下

12.讲解下Raft

13.如何解决脑裂问题

算法:最大和的连续子数组

三面:50min

面试官非常友好,人很nice😁

1.自我介绍

2.写一个lru,以及思路讲解

3.学的最好的课程

4.页面加载慢或者系统运行的很慢怎么去排查,从用户、开发者等多个角度讲讲。

5.成绩排名

6.面试和offer情况

7.能提前来实习吗

8.反问

四面:hr面就是普通交流,hr小姐姐非常友好,聊了应该有40多分钟。

196

字节23提前批后端开发二面面经

介绍简历

项目相关

为什么用redis存储token

项目相关hyperloglog、bitmap

kafka实现异步削峰涉及的分布式事务问题,引申的consumer重复消息消费问题

分布式锁问题

redis key过期策略涉及的底层

redis zset底层

redis set底层

redis hashmap底层

渐进式rehash

快排

优先队列实现及复杂度

手撕代码

一个简单的代码题,只撕出了o(n^2)的暴力,o(n)的没整出来,面试官问我纠结的点在哪儿?最后还是面试官告诉我该怎么优化的,是我太菜了😅

这么简单的题都没撕出最优解,写最优解时自己都尴尬了,估计要寄😫

反问:面试有什么提升的?

知识掌握不错,还需要多增加实战经验

197

0722 字节提前批二面面经

内部员工回复

时长:1小时

  1. 自我介绍
  2. 问项目
  3. 问epoll
  4. get和post的区别和使用场景(说了幂等性、参数问题暴露等等)
  5. HTTP断点续传(答了概念和range字段)
  6. HTTP缓存(说了协商缓存、强缓存)
  7. 协商缓存从哪个字段判断客户端的资源是可用的?(不会)
  8. 强缓存有没有控制字段可以控制?
  9. HTTP状态码
  10. 进程线程
  11. 内存区域(四个区)
  12. 线程共享和独占的资源
  13. 代码到运行的过程(预编译、编译、汇编、链接)
  14. 场景设计题:抖音领金币
  15. 算法:力扣22 括号生成
  16. 反问

198

字节提前批 头条后端开发二面

上来先写算法,挺常见的一道力扣原题,然后就是技术问题,整场面试50+min。问的好多底层的东西都不会,这次好好准备了rpc项目,但上来又问秒杀项目,我真的TT。

问题

  1. 比较常见的树以及应用场景
  2. 不同生产环境需要不同的树(数据库索引B+树对比其他树)
  3. HashMap什么时候会使用到红黑树(树化条件)
  4. HashMap为什么不考虑AVL树(AVL性能消耗更大)
  5. Redis中的hashmap是怎么实现的(???)
  6. 设计一个MQ会有哪些特性(解耦、削峰、异步?)
  7. MQ如何设计才能达到容纳大量请求的存储量(循环?)
  8. Redis预减库存的实现
  9. Redis扣减库存了,但最后没有发货成功的情况会出现吗?如何处理?
  10. 如何去衡量这个系统的性能?
  11. 压测达不到预期,如何检查及优化?
  12. Redis集群(没有了解过这方面)

算法

将串分割成给定单词

199

字节 一面 继续自我完善中~~~~~~~

过来写写面试经历 抖音一面 本来抱着学习的心态 不断面试 不断完善自己

自我介绍 有窍门

一 代码里提到爬虫 询问爬虫的大致过程

二 针对爬虫牵扯出计算机网络 dns域名解析过程 http和https协议哪个更安全 分别做一下解释

三 知道项目 一定要详细了解 比如你最终项目好坏的衡量指标。 注意话术话术

四 矩阵最短路径和 动态规划 说出来具体思路。由于心态崩了 没有实现出来

五 测试用例的设计 讲究天马行空 思维越发散越好

六 向面试官多请教 不要不好意思 面试官都很好的

七 操作系统 相关基础知识 线程 进程 协程 多线程和多协程哪个更有效 说说想法

自我反省

自己基础确实不够 不知道自己为啥莫名紧张啦

所有的东西都不是能看完的 要从不断的面试中不停的自我反省 加强学习 深入学习

刷题刷题刷题 很重要。!!!!!!!!!!!!!!!!

越面试 自信心越足

200

字节提前批 后端一面

自我介绍项目介绍(24min)Java面向对象三大特性,具体说说常用的集合ArrayList和LinkedList的区别?HashMap的底层结构是什么?HashMap的put()原理为什么要用红黑树?红黑树的结构是怎样的?二分查找的时间复杂度是多少?什么是线程安全?常用的相关类或关键字?synchronize的原理?了解线程池吗?创建线程时涉及的到的线程池参数有哪些?CorePoolSize和MaximumPoolSize是如何影响WorkQueue工作的?SpringBoot的AOP是什么?了解原理吗?Bean的装配?索引是什么?底层结构?为什么非叶子节点不存放完整的用户目录?算法题:给定目标金额求组合数 39. 组合总和 - 力扣(LeetCode)

201

0725 字节 系统架构 网络开发 一面 凉经

1、研究方向网络测量与加密流量分析,看项目里好像没有太用到,其他的有什么研究?

2、HTTP2.0与HTTP3.0的区别?

3、基于QUIC的0RTT怎么实现的?

4、QUIC怎么实现可靠传输?

5、QUIC发生丢包重传后包序号跟偏移量?

6、TCP的timewati与close wait产生原因是什么?

7、服务端上的timewait过多会产生什么问题?

8、有什么办法避免timewait过多?

9、乐观锁与悲观锁的区别?

10、输入URL后网络怎么运行的?

11、HTTP1.1与HTTP2的区别?

12、反射的应用场景跟优缺点?

13、list、map、set与queue四者的区别?

算法:小于n的最大数。

前面的问题答得还行,算法没写出来,之前写过一遍太紧张全忘了。感觉是g了。

效率太快了,下午就收到感谢信。

202

字节实习生一面(7.21)

字节跳动诚邀你参加字节跳动校园招聘-后端开发工程师-质量架构岗位的面试,感谢你的耐心等待。不知道什么部门。

1.kafka 的consumer group rebalance 机制

2.什么是partition

3.将一列从大到小排序的数存入数据库,如何取中前k大的数,我说的limit

4.如何取出第k大的数,当场手写算法,写的快排的改良版

5.hashmap的原理

6.map的子类除了hashmap还有哪些

7.是否用过redis的定时过期机制,如何实现

8.是否写过flink的实现代码还是直接调用的接口

9.剩下一些java基础,记不太清了,基本上都是照着简历问的

203

校招
tcp udp概念区别
拥塞算法
滑动窗口
epoll底层,以及epoll的工作过程(在内核中如何工作的)
问数据库引擎,说不会,出了个sql的题,但是忘记sql怎么写了😂
算法题
环形链表入口,太紧张了公式推错了,没a出来
应该凉透了
八股还没怎么看,本来就想投着试一下,没想到给面试了,没把握住机会,哎
更新 7.28
挂了

204

7.22 字节后端一面面经:番茄小说

时间:2022年7月22日 下午2点 ,时长55分钟
公司:字节跳动
部门:番茄小说 后端 base:北京

第一部分:项目介绍

  1. 介绍一下项目的难点?
  2. 分布式锁实现的方案?(回答:MySQL、Redis、zookeeper)
  3. Redis为什么能作为分布式锁?
  4. 高并发场景下,如何进行流量削峰?

第二部分:lc原题—岛屿数量

第三部分:八股

  1. 说一下Java的垃圾回收
  2. 如何判断一个对象是否可以被回收?
  3. GC roots包括哪些?
  4. 说一下一个对象从创建到被回收的过程,结合CMS垃圾回收器
  5. CMS垃圾回收器的缺点?垃圾碎片问题怎么解决?
  6. 进程的通信方式?
  7. 消息队列、共享内存、命名管道的特点及使用场景
  8. 拥塞控制的作用
  9. 拥塞控制的完整过程
  10. 加权图两点的最小距离如何计算?
  11. 介绍以下常见的排序算法
  12. 排序算法的稳定性,哪些算法是稳定的?
  13. 为什么快排要比其他排序算法快?
  14. 有哪些排序算法是O(N)的?
  15. 一些其他常规八股记不住了

第四部分:SQL题目(中等难度)

总结:面试官人挺好,自己有些问题回答的不行,估计凉了…

205

跳动技术中台提前批一面, 希望过过过

1:MYSQL的主从复制原理

2:Redis跳表

3:输入一个url到渲染界面的过程, 详细介绍一下

4:http和https的区别

5:一致性哈希介绍一下

手撕:最长重复子串

206

0718-字节秋招提前批后端一面凉经

1.自我介绍,实习介绍。

2.计网

①TCP TIME_WAIT状态

②TCP和UDP的使用场景

③HTTP3.0

④输入一条URL发生了什么

⑤HTTPS

⑥知不知道RARP和IARP

(不知道,查了一下是RARP是DHCP的前身,完成IP到MAC的转换。IARP是DLIC到IP的映射,应用场景是帧中继网络(广域网))

3.MySQL

①MySQL有哪些存储引擎

②B+树介绍

③InnoDB解决幻读,还有给了一张表和几个查询让我判断间隙锁会锁哪些范围。

4.Redis

①Redis数据结构

②zset的底层实现

③跳表的查询复杂度。什么操作是O(nlogn)(n个数据建表)

④用redis实现24小时内只能查询五次(用list存访问时间)

看那些基础题你都会,我就不问了,我们问点别的吧。我:???

5.智力题

①两个人抛硬币,先抛的人获胜的概率。除了等比数列还有什么方法(不知道)

②8个硬币,一个偏轻。用天平最少称几次找出那个硬币。(分3堆)

6.算法题

小于n的最大数(https://www.nowcoder.com/discuss/945902)。

给了提示所有位的数字在数组A中都能找到和找不到两种情况。贪心了半天没贪出来。(早知道一开始暴搜或者二分了orz)

换了个高频滑动窗口题,然后秒了,问时间复杂度O(n)。

前面的基础题问的都不深,大概介绍一下就行,估计是因为算法题没整出来所以寄了。

207

字节23提前批后端开发一面面经

原谅我中午没睡觉…刚面的内容忘了。。。

介绍简历

操作系统:

进程和线程区别(上下文切换)

用户态和内核态

用户空间内容

内核空间内容

虚拟地址

系统调用

Mysql:

innodb为什么用b+树

索引

慢查询

主从复制

Java:

线程池

JVM线程对应

打破双亲委派模式

volitate

redis:

sentinel详细

kafka:

解决重复消费

手撕

第一次手撕代码比较紧张

LC 343https://leetcode.cn/problems/integer-break/

o(n2) o(1)

反问:比较满意

208

字节后端开发-RTC-提前批(可能凉了)

一面(7.21)

面试官看起来就很累,全程不敢高声语。

介绍项目

介绍实习经历

经历中遇到的最大的问题,怎么解决的

自己的优点和缺点

Java的多线程问题(我答的太乱了,基本就是volatile,CAS,一些锁问题,不难,多看看相关的知识,我得到的评价说是实操不多😂。。。)

在eBay主要做什么,对数据库了解多吗

mysql索引底层结构

一定要用索引吗,全部建索引会不会更快?

索引为什么效率高?

tcp和udp

udp的应用场景

udp本身不可靠,但如何使它可靠

数据在网络中的传播方式(单播,组播,广播)

IPV4和IPV6区别,IPV6怎么与IPV4互传

视频流编解码方式有了解吗(无)

我看你搞过js,js是单线程还是多线程?(哈哈)

node.js了解吗(不了解)

场景问题:一台机器上有一百万张图片,如何给它做容灾备份比较合理,那如果是一个很大的热点视频呢

Code:找出乱序数组中第K大的数,不可以用堆 https://leetcode.cn/problems/xx4gT2/submissions/

反问:

1、部门做什么的

音视频业务的,主要是业务开发,解决问题为主,喜欢研究底层的,可能机会不多

2、进去被裁风险大吗

不大,部门正在扩

二面(7.27)

  • 实习经历
  • 针对实习经历死亡问答,因为之前的做的分布式存储,又是在eBay kylin组。。。
    • 分布式调度
      • 如何设计一个高效的分布式系统,怎么确保master不挂,怎么划分worker任务计划,调度策略你有考虑过吗,多master有哪些问题,你怎么解决脑裂的
      • 还有很多。。。
    • 分布式数据库
      • 设计一个数据库从哪些方面入手,宏观上你怎么划分,我巴拉巴拉一大堆sql执行引擎,缓冲池,磁盘文件结构,感觉跟面试官理解不到一起去。。。
      • OLAP你做的这块,他和mysql有什么区别,你在这段实习里,对OLAP引擎领域最大收获是什么
      • OLAP中存储方式的特点
      • paxos,raft,2pc,3pc分别介绍一下,raft还记得流程吗,raft你在实际中怎么设计呢
      • 计算做的多还是调度做的多,计算你有哪些涉足(基本乱答一气😂,宝友们,简历上写的都要摸清楚啊)
      • 还有很多。。。
  • TCP在网络中传输数据的方式,如何保证可靠性的
  • TCP 三次与四次中,客户端和服务端的每个阶段各个状态
  • 无智力题,无场景题,无反问,半小时答完上面这些,剩下半小时只做一道题。
  • 有一只松鼠,它去捡松子,有N个格子,每个放M个松子(M>=0),它从第一个格子之前开始捡松子,每次能走1个格子,或者走2个格子,或者走3个格子,直到它走出格子,问,这只松鼠最少能捡几个松子?
  • 我对着白屏想了10分钟的dp,愣是没想起来哪道题的dp方程,然后转而贪心,最后贪心少了一步前置结果暂存,结果死活不对,半小时之后跟面试官讲了下思路,面试官听懂了,但只说了一句,行吧,那面试结束了。。。

209

字节提前批面经-后端开发(基础架构杭州)

一面(2022.07.20 50min)

go语言了解吗(不了解);

c++ new delete过程;

malloc原理,开辟的内存位置;

map、unordered_map区别,使用场景;

gcc O1 O2 O3 优化的使用场景(gg);

设计模式(策略模式,gg);

IO多路复用的作用;

select、poll、epoll区别;

进程通信方式(具体问了共享内存)

乐观锁悲观锁(具体哪里用到了,gg)

sql查询语句(具体场景,有索引没索引执行过程)

前缀模糊匹配是否适用索引;

如何判断两个ip是否在同一个子网,子网掩码不同呢?

ip报文字段;

输入url过程;

http、https的区别,https如何加密,过程,深究了一下;

代码题:最长无重复子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/

210

字节跳动-后端开发-抖音-1面面经

- 自我介绍一下

- 介绍一下你的项目

- 哪一个项目你的收获最大

- epoll和select, poll区别是是什么

- 为什么epoll效率更高

- 了解惊群效应吗

- 进程和线程的区别

- 进程创建后的写时复制机制

- 讲讲C++的函数重载与函数重写的区别

- 简单介绍一下vector的内部实现和时间效率

- vector的动态扩容在多线程下有什么问题

- 什么是内存对齐

- 大端与小端的区别

- 了解什么中间件吗

- 介绍一下redis底层数据结构

- 跳表和红黑树有什么区别,为什么选择跳表而不是红黑树

- reset是哪种数据结构

- 如何优化DB瓶颈

- 为什么有时候单线程能够比多线程更快

- redis是哪种IO模型

- 做个题吧,不用写代码,就聊一下思路,10个盒子,1000个苹果,怎么摆放可以代表所有数字

- 来写道编程题吧,给一个链表1-2-3-4-5-6-null,和k = 3,返回一个链表4-5-6-1-2-3-null

- 你还有什么要问我的

忘了录音,纯凭记忆,就记得这些了

211

字节提前批一面面经(应该是凉了)

1.项目来源?是否完全是跟着网上教程学习的?有没有做一些自己的工作?
2.ThreadLocal
3.JVM是如何加载一个类的?
4.JVM垃圾收集器,G1收集器是如何实现的?
6.什么是双亲委派机制?JVM为什么要使用双亲委派机制?
6.Spring IoC?依赖注入如何实现?
7.MySQL事务隔离
8.哪些事务隔离可以避免幻读?
9.next-key锁?如何实现?
10.可重复读是否能完全避免幻读?
11.锁锁的是什么?
12.Redis的常见数据结构?
13.zset内部是如何实现的?
14.跳表是什么样的数据结构?复杂度?
15.为什么MySQL用的是B+树而Redis用的是跳表?
16.Redis持久化机制?AOF机制中内存写满了怎么办?
17.项目中Kafka用在什么场景?
18.Kafka内部在服务器端是如何实现的?
19.Kafka性能高,里面做了哪些机制来保证性能?
20.手撕算法——分割数组

21.手撕算法——跳跃游戏2

大概就记得这些了

212

【梅开二度】字节跳动 分布式存储 日常实习 二面挂经

说一说投这个岗的缘由。我的技术栈是C++,准备的方向偏后端,本来想投后端的。

岗位是C++的,部门应该属于基础架构部门,但是我的经历其实跟岗位不太match(语言是match的),是经过同学内推的(正好同学也说不强制有存储相关的经历)。最初知道我要面的是这个,而不是业务的后端岗位的时候,我是想拒绝的,因为我怕太难面,考太多底层的东西。

我想了想今后有想转鸡架的可能性,也考虑到鸡架岗面试难度不一定比业务岗难。因此选择接受面试。

注:无论是什么语言栈的,如果手头有RPC项目的,可以参考一面对RPC项目的问法,问的还是比较有水平、有深度的

总体流程

  • 2022.7.1 投递简历(内推),下周一邮件约面(2022.7.4)
  • 2022.7.8 17:00 一面
  • 2022.7.14 17:00 二面(2个工作日内)
  • 2022.7.20 11:43 感谢信(4个工作日内)
  • Update:2022.7.27 挂了的一周内,被某部门后端捞起来面试,由于时间安排问题,遂拒绝

一面(65min)

面试官是校友,看到我的简历的毕业年份愣了一下,觉得不应该是个非应届的过来

自我介绍

继续做字节的舔狗

八股/项目(50min)

问简历的内容,其实还行。主要环节是,智能指针拷打(这块好像说了20min左右),一致性哈希拷打,RPC拷打。

  • 用过C++11吗?

    • 用过
  • 知道

    unique_ptr
    

    吗?

    • 知道,是独占所有权的智能指针
  • 怎么实现独占所有权?怎么转移所有权?

  • b = a;
    

    怎么实现?

    b = move(a);
    

    怎么实现?

    • 就是说了移动构造函数/移动赋值运算符的流程
  • 知道

    shared_ptr
    

    吗?

    • 知道,是共享所有权的智能指针
  • 怎么实现的共享所有权?

    • 引用计数
  • 引用计数和管理的内存地址怎么实现的?是同一块内存空间吗?

    • 都在堆区
    • make_shared 会放在同一个空间
  • 引用计数和管理的内存是相生相依的吗?

    • 没搞懂,最后就问了这两个是同时创建的吗?
    • 其实不是,传入 new xxx 的构造函数就不是
  • 同样问了

    shared_ptr
    

    b = a;
    

    怎么实现?

    b = move(a);
    

    怎么实现?

    • 同样说了下拷贝构造函数/拷贝赋值运算符、移动构造函数/移动赋值运算符的流程
  • (想问点分布式存储相关的)知道raft吗?

    • 只了解是个分布式共识算法,没了解具体内容(论文都没看,我可不敢说我了解了)
    • 看我没有相关经历,那就挖一挖简历吧
  • 知道一致性哈希吗?

    • 顺便提了一嘴自己的RPC实现了这个东西
  • 解释一致性哈希是什么,然后开始深挖一致性哈希,怎么减少这种数据的移动,分桶结果改变的

    • 然后开始引出虚拟节点
  • 互斥锁,信号量使用的场景区别

    • 一个线程互斥,另一个线程同步
  • 互斥锁,读写锁,自旋锁的区别

    • 八股文,只说了自旋锁,就没让继续说了
  • 怎么实现自旋锁

    • 说了原子操作,test and set指令(tsl)
  • RPC的实现流程?

    • 八股文
  • 怎么在同一个端口,发布多个服务?

    • 就说说自己咋实现的
  • 怎么实现的超时?

    • socket设置,recv超时
  • 然后开始问重试机制,如果需要我实现应该怎么实现?

    • 最大重试次数,计数
  • 如果同时发出很多个RPC请求,这个qps上不去,咋办?

    • 不知道,想了一会说,也不能总是创建很多个线程吧
    • 然后就说可能得用I/O多路复用了
  • RPC调用的同步和异步,和之前说的同步和异步,是一个意思吗?

    • socket的同步阻塞,是收到数据前,一直阻塞,等着
    • 这个是在得到调用结果前,是否可以继续做下面的事情
  • 那我继续问,如果同一个RPC调用,按照你之前的重试机制实现,如果前一个请求(涉及到写,非幂等,比如文件创建)是成功的(但是做的太久,设置的超时太短,以为超时失败了),后面重试的请求失败了(显示文件已创建),应该怎么解决?

    • 想了很久,说同一个请求的数据包都是通过请求id关联的,
    • 那么每个请求,都单独开个线程去等(因为重试的次数本就不多),然后请求到的结果,放入哈希表,当然,也放到队列里面
    • 通过请求id,索引哈希表,看看有没有最近的成功请求结果,如果有,之后的失败请求,就没必要记录了
  • 那么,根据这个实现,如果第一次的请求是响应成功的,但是由于网络原因失败,应该怎么办?

    • 不懂了,之后没继续深挖
  • 那么就说webserver吧(简历的项目名称不是webserver,不过被一眼看出,老面试官了)。你知道I/O多路复用机制,除了epoll,还有啥吗?

    • select,poll,原理差不多,没让说具体原理
  • ET和LT的区别?

    • 八股文
  • ET和LT哪个性能更好?

    • 一般认为ET更好,毕竟可以从内核中少拷贝就绪文件描述符
    • 但是,ET伴随着使用非阻塞socket,要一次性读完、写完数据,也就是说可能进行的 read 或者 write 系统调用会更多
    • 至于是否真的更好,目前没有定论,需要在更多的环境、场景下去测试

算法题(10min)

直接就在飞书上了,ACM模式

排序链表(LeetCode 148

  • 让选择一种比较擅长的实现,选择了最简单的递归版归并排序,不过今天当天写过,所以bug free了
  • 然后讨论了 new 了新节点,没释放的问题(这个习惯在工程实现上确实不好),修改了下代码

反问

  • 目前在做的工作,编程语言,技术栈
    • 文件系统,C++
  • 平时会用什么库,或者什么其他技术栈
    • 有一些自研的,也有RPC(字节自己的RPC,百度brpc),也用类似muduo的这种网络库
  • 涉及到数据库(存储引擎)吗
    • 没有,这个是数据库的组做的
  • 我的表现有什么需要改进的?什么时候能知道结果?
    • 还行,挺好的
    • 几天之内,可以问hr

总结

总体而言,聊的很愉快,虽然中间确实有部分问题不会回答,也回答不够好

项目中的一致性哈希,这块背的不太熟,下次还得再练练

其他还好

二面(50min)

面试官比较年轻,也还好,不会给人很严肃的感觉,没回答上的问题,也没有关系

自我介绍

继续舔狗,说到「字节跳动是我非常尊敬和仰慕的公司」,当然其实每次面试都会说这句话

面试官笑了(尴尬)

八股/项目(25min)

  • 用的是C++11吗?(固定开场了这是?)

    • 用过
  • C++11新特性有啥?

    • 八股文
  • 解释什么是左值,什么是右值,move 是干啥的(超高频了)

  • 什么时候用到右值,移动构造函数/移动赋值运算符函数的流程

    • 八股文
    • 说了一半,面试官明白意思了,没让再往下说
  • 虚拟内存和物理内存的差别,为什么要用虚拟内存?

    • 八股文
    • (麻了,一直问还有吗)
  • 虚拟内存有哪些部分?

    • 八股文
    • 内核区、用户区
    • 用户区有代码段、数据段、堆栈段(中间还有个文件映射区)
  • 虚拟内存的查询流程

    • 说了下二级页表查询
  • C++ 的

    new
    

    运算符流程

    • 八股文
    • operator new
    • 调用构造函数
  • malloc
    

    函数返回的地址是什么地址

    • 虚拟地址
  • malloc
    

    返回什么样的地址,如果分配10字节。

    • 说了下 malloc ,在分配空间小于128k使用 brk 系统调用,将堆区顶部上推
    • 实际上不是每次都调用,会维护内存池,把一堆空闲块,用链表链接起来
    • 面试官追问,如果链表太长咋办?
    • 我就把C++ allocator的二级空间配置器的原理搬过来了(维护不同块长度的空闲链表)
    • 这个链表的并发访问,除了加锁还有啥方法吗
    • 说了下原子操作(也不知道对不对)
    • 了解thread local吗?(听过名字,没了解具体原理,寄)
  • 【动态链接库】和【静态链接库】的区别?

    • 我本来想先说【动态链接】和【静态链接】的区别的,我就试图先说这个,想杀点时间
    • 但是,又问静态库 .a 和动态库 .so 有啥不同。麻了,没回答上,回去好好看
    • 然后又追问,怎么查看使用到的动态链接库?麻了,忘了,滚去复习(寄)
  • C++一般用啥编译工具?

    • make、cmake
  • 有什么工具,能查看编译后可执行文件的函数?

    • objdump
    • 其他想不到了,失忆了(寄)
  • 你用到了protobuf,知道protobuf是怎么存的吗?(指的是底层怎么进行的序列化)

    • 不知道,只知道序列化后是二进制的
  • 用protobuf的好处

    • 八股文
  • 看过什么开源库(关于存储的)

    • 我可不敢说leveldb,省的被怼死
    • 就说没看过
  • 了解mysql吗?(面试官很无奈,其他啥也不知道,mysql总知道吧)

    • 了解
  • mysql存储引擎,用的什么数据结构?

    • B+树
  • B+树怎么查询的?

    • 八股文
    • 失算了,本来想等着面试官问点更深的东西,看来我应该主动说点mysql(innodb/myisam)对B+树的具体实现
  • 为什么用B+树,不用B树?

    • 八股文

算法题(25min)

飞书,ACM模式

重排链表(需要最优解,LeetCode 143

  • 明明很简单,但是写的有点磕绊,面试官说中途接个电话,暂时消除了紧张感,然后快速把代码框架敲出来
  • 中间写了个bug,在debug,结果发现前面没问题,就是后面合并出了问题
  • 有惊无险,写出来了

反问

  • 如果有幸通过面试,需要提前了解什么?
    • 不需要,可以看看存储相关的开源库,对实习生要求不高
  • 面试过程中更看重候选人哪些能力?(接着来问的,既然说对实习生要求不高嘛)
    • 基础、跟存储相关经历
  • 怎么培养实习生,会让刚来的实习生干啥?
    • (内容略)
    • 最后说,如果没有基础,进来之后会有点痛苦
    • 感觉面试官略微有点劝退,可能是在暗示我过不了?
  • 我的表现有什么需要改进的地方?
    • 表现还可以,对存储不够了解,得讨论一下是否能通过,之后可以问hr结果(加粗的地方也是最终面评内容,hr说不便透露具体内容)
    • 我这块有点失误了,应该得更虚心点,解释投这个岗的原因(因为面试官觉得投这个岗,要对存储有所了解),但是我就说了个确实(好糟糕的回答),不过可能再咋说也改变不了啥结果
    • 总之就是,通过的概率不如上次高,怕是要收到感谢信了

总结

总体而言这次表现的不算理想,问到了一些知识盲区,也在表达技巧上出了点小失误

虽然确实没有存储相关的经历,但是总体来说,面试体验还不错,面试难度较为友好,面试过程中,不会因为我没有这方面的经历而刻意刁难我


今年总体而言,比去年的表现好点,没有出现口吃的情况,表达也较流畅,算法题顺利解出。内推我的同学也觉得我的表现大概率能过二面,但是他也没想到,hc确实没了,觉得很离谱,面评给了个「没有存储经历」的理由拒绝(对校招生这样要求也情有可原,对日常实习生也是这个要求,就离谱了,应该被冲kpi了),因为去年他面这个岗的时候,也是跟我差不多,没有相关经历的。可能这会在hc收缩的情况下,想面进来的难度,至少得是校招sp一档的吧,那就必须要有相关经历,并且可能掌握的比较深,才行。

对不起,也让去年给我支持的朋友们失望了。我也很对不起我自己。

哎,我真的尽力了,我已经掌握的各种各样的技巧也用上了。只能说,虽然我不少同学都进来了,我也心心念念一年多,还是跟去年一样的结果,二面仍然是我不可逾越的门槛。虽然我的实力确实尚且也达不到校招要求,可能确实跟这家公司也没啥缘分吧。之后有机会了就再接再厉吧,我真的累了。

哦对,顺便说一下,我集齐了字节感谢信的两套模板。

213

字节跳动 | 开放平台 | 一面

25min:项目

25min:八股

TCP流量控制和拥塞控制区别?

拥塞控制流程?

MySQL 索引类别?

MySQL为什么用B+Tree不用B-Tree?

说出两个 O(nlogn) 的排序?

说说快速排序具体实现?

快速排序用递归实现有什么问题?

上述出现的问题怎么解决?

epoll 两种模式分别是什么?

20min:算法+聊天
算法题:下一个排列

你能推导出你的方法为什么是正确的吗?(不能)

反问:注重基础方面的学习

214

2022.7.19 字节跳动 头条后端 秋招提前批 一面凉经

#字节跳动# #今日头条# #后端开发# #提前批#

上来直接逮住项目问(之前看过实习的一位头条面经好像也是这样,面头条的注意自己项目要很熟悉)

我最近的一个项目是rpc框架,然后就逮着这个项目问,能答上来的没多少,主要还是自己对这个项目了解不够,技不如人。

离谱的是只问了两三个八股,数据库提都没提。

算法的话是最长公共子串,dp想不起来了,只能暴力做了个。。。

全程80min,问的我是抓耳挠腮,大部分都不会,太菜了太菜了。

以下是问题:

  1. 介绍下这个rpc框架
  2. rpc和http有什么不一样?有什么一样?
  3. 为什么不用http要用rpc?
  4. 从客户端发起请求到接到请求的整个数据流程?
  5. Nacos服务注册中心什么时候注册的服务?
  6. 注册服务时提供的参数?
  7. Nacos与其他类似产品的差异?
  8. Nacos是否有用到类似raft的分布式算法?
  9. 介绍paxos和raft
  10. raft是如何保证日志一致性的?
  11. raft中follower发现日志有缺损后如何恢复?
  12. 其他开源传输协议?和项目中自定义的区别?
  13. 有哪些性能比较高的序列化器?
  14. TCP三次握手过程、为什么要三次握手、第四次挥手为什么要等待2msl。
  15. 建立TCP连接时涉及到的系统的端口的api会有些什么参数?
  16. 操作系统是如何帮助listen端口的?
  17. 拔了网线TCP连接会怎么样?
  18. 拔了又插上网线TCP连接会怎么样?
  19. 关机了TCP连接会怎么样?
  20. 服务端断电了TCP连接会怎么样?
  21. 服务端进程kill了TCP连接会怎么样?
  22. server收不到clien消息如何排查问题?
  23. 如何排查cpu占用过高(为何占用过高)?

215

7.19字节提前批 一面凉经

内部员工回复

1.自我介绍

2.能不能实习,有没有实习计划

3.介绍项目(哪些板块,做了什么)(5min)

关于是项目:

4.用户登录的SID组件实现生成用户ID,用的什么算法

5.(上面提到哈希碰撞)哈希碰撞怎么解决/再hash

6.这个组件的哈希算法是多少位的(what the hell)? /MD5 128位,SHA1 160位,SHA 256位

7.ElastricSearch的索引是什么样?

8.Nginx配合Keepalive是怎么保证他的高性能。

9.聊聊多路复用

10.epoll和epoll能存多少文件句柄 /select1024,poll和epoll无上限

11.除了CAS之外其他单点登录的实现方案

12.CAS实现的流程图或者说时序图

13.这个网站为了安全性,还可以怎样优化?

14.定时清除订单,定时消息?(应该是想问消息队列)

八股:

15.进程和线程?-引申到协程。

16.死锁怎么形成的?(四个条件,没答全)

17.怎么解决死锁?

18.进程间的通信方式

19.无命管道和命名管道的区别?

算法:层序遍历的蛇形遍历

忘记双端队列怎么敲了,说了思路,没敲出来

面试官的评价和建议:算法太差,以后的面试中一定会遇到很多算法题,要加强。

216

抖音后端一面面筋

前段时间刚投了字节,约了今天面试,总体来说面试感受还可以,面试官比较不苟言笑,不过也没有什么压迫感。

下面进入正题,说说具体问的问题。

  1. 聊聊项目
  2. tcp和udp区别
  3. tcp怎么保证到达的
  4. tcp和udp的应用场景
  5. 网络层和运输层的区别
  6. 进程和线程的区别
  7. 线程间通信方式
  8. 上一个问题说到了信号量,问了问信号量
  9. 用过哪些锁(也是上面提到了)
  10. 除了互斥锁还有什么锁(追问)
  11. 知道僵尸进程吗,讲讲
  12. 怎么避免僵尸进程
  13. 用过智能指针吗,主要用过那些智能指针,讲讲原理
  14. shared_ptr和unique_ptr区别
  15. 为什么还要有unique_ptr,主要解决什么问题(这个我没答上)
  16. 手撕算法,下一个排列问题

217

秋招01——字节系统架构提前批,小ssp

因为之前收到了字节的实习OFFER,面试表现也还不错,所以秋招时直接直通终面了,再次见到了熟悉的三面面试官,三天之后也收到了我秋招第二个OFFER~

\1. 项目相关 —— RPC

1.1 介绍一下RPC的概念以及作用

1.2 RPC和HTTP的比较

1.3 常见的序列化、反序列化手段

1.4 RPC为什么要进行序列化

\2. 项目相关 —— epoll

2.1 epoll与select、poll的比较

2.2 epoll怎么改进会更好

\3. 网络相关

3.1 TIME_WAIT状态的概念以及原因

3.2 TCP/UDP包大小的问题:

a. 网络层的限制 —— MTU

b. 传输层的限制 —— MSS

c. 如何协商MSS的大小

\4. 手撕 —— 最近公共祖先节点的变形

感慨一句多多准备多多思考就好了,走过黑暗便是黎明

218

2022.7.18 字节飞书后端实习一面

感觉是刷KPI。

整体感觉面试官和没睡醒一样。面试体验很差。

没有活力,问的问题也很奇怪。

先介绍下自己,还没介绍完,就打断问实习经历,实习问了大概20分钟左右,接着继续自我介绍。可能对我不感兴趣吧。

接下来就是八股了,八股文问的也很三心二意:

在大厂的实习收获是什么?

1、TCP,怎么保证可靠传输的?拥塞控制怎么处理的?、

接着问了一个奇葩的问题,问的问题很奇葩,聊计算机网络。千兆网,为什么早上网速快,晚上网速慢?原理是啥?

2、进程、线程、协程之间的区别?

3、MySQL事务的特性?怎么实现一致性?

4、线程的状态转变?

5、四次挥手,为什么需要四次挥手?

接着做算法题。

整体感觉真的一般,感觉面试官不太认真,或者说水平一般。。

219

字节视频云 提前批 (凉经)

内部员工回复

整场面试不到30分钟,感觉很难了,mac又没录上声音,凭回忆说一下

1.实习经历项目没问,问了共享单车怎么做定位算法(what?我应该是在面后端吧)

2.url输入到显示过程

3.tcp保证传输成功的机制

4.路由中储存url的数据结构?应该是这个问题(我猜了kv对,实在没了解过)

5.nginx做路由走几次tcp

6.linux转到内核态,用户态的上下文存到哪里?应该是这个问题(下午在啃linux进程,不过这么细节的我没看,哪位大哥给讲讲)

7.docker有哪些指令(好久没动过了,模模糊糊说了点)

手撕:数组找固定和的俩数字,太简单了…看来不准备给机会了…

暂时只能想起来这些,顺便哪位大哥教教我mac怎么录会议的音

简历上写的都好答,不过问了很多边缘或者没写的内容,不是很清楚是什么套路,nginx我是完全没去了解

一时间我以为投错了部门,数据库一下没问,操作系统八股也没机会背

反问,因为我是非科班生,建议我好好准备计算机基础

顺便问问,多久能等到感谢信,还有复活赛打吗

还是挂了,整场感觉莫名其妙,hr需求不匹配能不能别瞎捞人了…

220

字节提前批一二三面记录

内部员工回复

(第一次写这个,希望给大家一些参考,以为了我后面复盘)

一. 一面

\1. 对两个项目进行了详细的提问,然后开始八股基础考察。

数据库

\2. mysql底层数据结构,为什么使用。

\3. mysql事务以及相应的保证(ACID分别是用什么保证的)。

\4. 提到了redo log 和 undo log 介绍一下。

\5. 提到了redo log,讲一下另一个log (bin log),以及两阶段提交,为什么要两阶段提交。

\6. 提到了redo log刷盘, 讲一下刷盘时机和策略。

缓存

\7. redis为什么受欢迎,详细讲一讲底层数据类型及其对应的底层数据结构实现。

\8. 介绍一下缓存雪崩、穿透、击穿以及相应的解决方案。

\9. redis 的持久化机制(RDB,AOF),这个没让详细说,大概讲一下,我就只大概讲了一下分别是什么然后干了什么事情。

计算机网络

\10. https怎么保证通信安全的。

\11. 提到了数字证书,为什么需要数字证书。

算法

12.正数数组,一个target,求和大于等于target的最小连续数组长度(滑)。在飞书上写代码,是acm模式,但是没让写输入输出,用第一个测试用例测试,并说了下思路。

反问

\13. 我能问几个问题。(原则上无限,但注意时间)。

\14. 评价及建议。(还行,通用的建议,加强中间件的学习)。

\15. 部门业务。(balabala,部门用go)。

体验

面试官感觉比较严肃,但是感觉还好。写写面经攒人品(upupup),都说字节效率快,希望收到二面电话。今年都不容易,大家加油。

二. 二面

二面昨晚面的,场景题占大部分,问了一点小八股。感觉二面面试官太厉害了,压力满满。在回答的时候我只能尽可能的从学过的知识中找到可以用来解决的方法,运气好获得了面试官的肯定,约的下午三面。我现在脑袋都是晕乎乎的(昨晚没睡好。。)。暂且留坑,攒攒人品,希望下午一切顺利。

来填坑了。

\1. 两个项目继续轰炸,然后开始场景题。

\2. 场景题题目我就不说了,大概意思就是怎么查询一个视频被点赞的用户(数据量可能上千万);在查询基础上增加时间条件呢;这么大的数据怎么判断到底点没点赞。

然后来了几个八股

\3. redis底层数据对象及实现。

\4. GEO干嘛的,怎么实现的(提到了GEO数据对象)。

\5. Mysql底层数据结构,选用原因。

6.算法。全排列

体验

面试官太厉害了,我五体投地。不过好在面试官很愿意听我说,场景题虽然说了很多然后被pass但还是在鼓励我说(org…)

三. 三面

感觉是个技术上的大牛,问了很多我听都没听过的东西(我都不知道怎么拼写),面试官一直在说没关系。

一道设计题: 带过期时间的LRU。

细问了其中一个项目,对其中的框架设计问了一点。

个人优缺点。

学校经历。

体验

面试官挺忙的,应该是个大boss,感觉自己学的东西还是太浅了(org…)。老实说后两面我都不道怎么记录,很多发散性的问题,并且都是从我在讲述的过程中突然抓住了某个点然后衔接出来。一周的字节面试体验结束了,许个愿能进入hr面,然后拿个offe

221

字节提前批一面面经

Java语言特性

1.concurrentHashMap如何实现线程安全

2.HashMap底层实现结构、哈希冲突如何解决

3.高并发编程下如何安全修改一个数据

4.有没有用过锁?

4.synchonized关键字怎么用的?

5.volatile关键字干什么的,怎么用。

说了保证可见性和有序性,说了指令重排。

追问:什么是指令重排?

6.原子变量,用法?

OS:

1.进程与线程的区别

2.系统上下文切换的概念

3.什么时候系统上下文切换

计网:

1.三次握手与四次挥手的过程

2.TCP滑动窗口的作用

3.IO多路复用

4.HTTP格式

手撕代码:有序矩阵中第K小的元素 力扣378题。

写完问了优先队列内部如何实现,问了算法时间复杂度。

222

字节提前批AI-LAB一面

  1. rpc与http的区别(答了个通信协议,rpc基于tcp,头部开销小),有什么使用差别?
  2. rpc连接的序列化
  3. 数据传输过程中 的格式(json?)
  4. 微服务结构,怎么优化项目耗时的模块(分页查询)
  5. redis持久化(rdb,aof)的优劣,键过期之后aof怎么记录?(添加日志)
  6. Mysql内连接与左连接的区别
  7. linux上服务出现大量close_wait连接该怎么排查?
  8. ORM与原生Sql怎么看
  9. Mysql事务隔离级别(脏读,不可重复读,可重复读,可串行化),可重复读可能会出现什么问题(幻读),遇到过幻读吗?
  10. 手撕:122. 买卖股票的最佳时机 II

223

字节跳动后端开发面经

春招投过他们的日常实习,最后没去,提前批开始了捞我直通终面(怀疑KPI)。

15min:实习,项目。

20min:八股。

1.jvm内存分区

2.对象加载在哪里,一定不能在栈上吗,为什么不直接在栈上。

3.线程池构造参数

4.拷打关于锁的内容。自旋锁,读写锁,公平锁,可重入锁。

5.进程,线程通信方式

6.tcp timewait,服务器很多timewait怎么办

7.服务器CPU很高怎么办

8.MySQL联合索引,怎么保证一定走索引,幻读

9.怎么杀死一个进程

10min:算法

1.给定正整数n,求组成它所需的完全平方数最小个数。(dp/递归)

2.查询第n大的工资。(太久没写SQL了,desc忘加了)

面完再无后文了,许愿通过。

----------------------------------------

业务面已通过,进HR面。

----------------------------------------

HR面完

常规问题,说是差不多一周左右会有消息。

224

字节提前批后端一面

算法题:1-合并两个升序数组 2-合并多个升序数组

网络:

1- http1.0,1.1,2,3区别

2- http协议为啥要更新迭代

3- http层如何保证数据传输安全

5- tcp如何保证数据完整

6- http层客户端如何确保数据传输完整

7- http层客户端能维护几个连接?

8- https原理

消息队列:

1-为什么用rabbitmq?

2-rabbitmq为啥延迟低,出错少。

3-如何实现的过期消息丢弃。

4- 了解消息队列的事务吗?

数据库:

1- mysql事务

2- sql隔离级别

3- mysql的持久性如何保证?

4- binlog和redolog是什么

5- 非关系型数据库和关系型的区别

6- 了解图数据库吗

操作系统:

1- linux的进程管理

一些场景:

1- 高并发下,服务器cpu占用100%,只有一台服务器,要怎么解决。

2- nginx负载均衡原理,多路复用

更新:挂了,被别的部门捞了

225

新鲜字节提前批凉经,那是真的凉

我这么菜,为什么还敢投字节提前批?

主要原因还是想体验一下字节面试流程,和了解一下自己菜在哪。

好嘛,现在知道菜在哪了。

后端开发工程师-飞书业务:

\1. 自我介绍

\2. TCP首部字段有哪些

\3. TCP可靠的机制

\4. PCB中有哪些信息,详细点

\5. 进程间通信的方式,信号量有哪些,信号有哪些

本人学的是 go,以下问的是go:

\6. make和new的区别,从源码层面讲讲

\7. GPM调度

\8. 10个goroutine,1个进行死循环,其他的会被调度吗?

\9. slice append()的过程,从源码层面讲

\10. slice 为什么这么扩容,怎么扩容的,从源码层面讲讲扩容

本人web框架学的是 gin:

\11. 讲讲 gin 的中间件机制,源码层面讲

还有一些问题没回忆起来

经过几个要从源码层面回答的问题,我彻底凉了。

这告诉我,源码再难读,想要进大厂,也是必不可少的。

网络和操作系统方面,面试官告诉我掌握的还行,但欠缺实践上的认识和回答。我连实习都没有,真没这个本事去实践。

而语言方面,面试官告诉我:你用过的东西,最好都要从源码的层面去认识。

总的来讲,知识掌握的深度不够,要深入源码,还要有知识在实践上的见解。

226

字节跳动一面(已挂)

1.网络分层的结构

2.常见的协议有哪些?

3.pop3属于哪个层的协议(上一个问题答了pop3协议)

4.http和https的区别?

5.https如何实现数据加密传输的?

6.403是什么含义?具体的

7.502具体的错误指什么?

8.一个url地址键入后整个的过程,越详细越好

9.8的基础上,服务器处理请求说的详细一点,怎么接收请求的,系统内部如何处理,cpu是怎么工作的?(任何系统处理请求都有工作单元,工作单元叫什么名字)

10.进程,线程和协程

11.线程之间如何实现通信,有没有用到过?

12.mysql一个select语句的执行过程

13.mysql存储引擎

14.InnoDB和myISARM的区别

15.聚簇索引和非聚簇索引的区别

16.MySQL事务的特性

17.有没有做过SQL优化吗?

18.水平切分和垂直切分,分别在什么场景下用?

19.Redis的优点,Redis在数据持久化的时候用的是哪个代码实现的?

20.windows系统如何实现内存分配?CPU切换和分配的原理?

21.查看系统里CPU和内存使用情况,用哪些命令执行?

22.如果想统计一个服务的请求文件,统计每个接口的QPS的话,用什么命令能实现?

----------------------------------------------------------

算法题:带有括号的逆波兰表达式(结果输出的不是最后值,是等式)

227

字节跳动飞书后端 日常实习一面 已凉凉

内部员工回复

字节跳动飞书后端一面 已凉凉

全程暴力拷问数据库长达45+min,很变态

自我介绍

项目拷问。。。。。。

项目单节点还是多节点?

怎么保证你项目中的数据一致性?

怎么对数据库做的优化?

你用的pgsql,我不太了解,能讲讲和mysql的区别吗?

pgsql如何保证数据一致性?单写是什么?

pg和mysql引擎上有什么区别?底层有什么区别?

pg做了哪些优化?底层?

索引?有哪些?有什么特性?

如果删除索引出现问题了导致锁表怎么办?

死锁怎么办?

做题:二叉树中序遍历 (我写了递归和非递归)

b + 树说一下?索引结构?

hash说一下?

hash为什么不能范围查找?

索引结构?

聚集索引和非聚集索引?

回表?怎么减少回表?回表出现错误怎么办

产生回表的原因?

举一个需要回表的例子?

什么是索引覆盖?

还有很多问题。。。以及记不清了,反正都是数据库,数据库,数据库。。。。。。。mlb

问这么多数据库,是要我把数据库祖师爷给你挖出来吗?

我的面试反馈:少问数据库!少问数据库!少问数据库!

已凉

228

字节一面,抖音后端开发,凉经7.13

1.项目分布式锁为啥用redis
2.redis数据结构与底层
3.跳表具体实现底层
4.算法题,easy
5.mysql索引
6.三次握手
7.TCP头部
8.滑动窗口
问的非常细致,深挖底层,答了百分之九十,面完半小时就发感谢信了,我觉得答的挺好的,唉,估计是刷kpi了

229

字节 系统架构 提前批 二面凉经

内部员工回复

一面:

\1. http三次握手,状态码,交互细节。

\2. 为什么要三次握手

\3. 四次挥手,状态码,传输细节,为什么握手要三次,挥手要四次

\4. 数据链路层怎么传输数据的,展开说说

\5. Arp协议中网关怎么去转换ip地址到对应MAC地址的

\6. 如果数据包不在当前子网内,怎么传输到目标子网网关的

\7. MySQL的行锁怎么实现的

\8. MySQL的事务,展开说说

\9. MySQL索引了解吗

\10. 索引是怎么实现的

\11. 索引有哪些,介绍下

\12. 联合索引中间可以有null值吗,为什么,测试过吗?

\13. B+树的特点,原理

\14. B+树索引和hash索引的区别,优劣

\15. 了解死锁吗

\16. MySQL怎么解决死锁的

\17. 平时遇到过死锁吗,怎么解决的

\18. JVM的垃圾清除说一下

\19. 垃圾清除算法有哪些,介绍下

\20. 知道的垃圾收集器有些什么

\21. 垃圾的判断方法,引用计数法为什么用的没有GCRoot的多,缺点是什么,为什么

\22. 平时测试过JVM的垃圾清除吗

\23. Redis的了解,介绍下

\24. Redis的持久化机制

\25. redis怎么实现持久化的

\26. 算法题:删除链表的倒数第k个节点

总结:完全没有问项目问题,计算机网络部分问的特别细!死问我数据链路层的传输原理,答得磕磕绊绊,有好些题都没有答得很好,算法题倒是挺简单的,最后反问,面试官说我答得挺好的,但有些地方细节上还需要再学习优化下。

希望可以收到二面的通知!!!

二面:

一共1h20min,先是聊项目。

\1. Redis跳表怎么设计实现

\2. Redis的持久化

\3. Redis崩溃后怎么恢复数据,介绍下恢复的过程

\4. Redis的字符串底层数据结构实现

\5. Redis怎么对字符串进行管理

\6. 数据库的索引原理

\7. tcp的状态机,详细介绍

\8. http1/2/3介绍

\9. http和https的区别

\10. 介绍下SSL(上面提到了)

\11. 接触过网络编程吗,介绍下

\12. select,poll,epoll介绍下

\13. 你提到了select有长度限制,那长度超过了怎么办,为什么会限制成 1024个

\14. io多路复用介绍下

\15. 介绍下红黑树,插入过程说一下呢

\16. 以tcp连接过程为例,介绍下Socket编程过程中用到的api

\17. 三次握手发生在哪个api调用的阶段

\18. 具体哪两个api之间发生三次握手

\19. 介绍下拥塞控制算法

\20. 基于什么样的场景判断发生拥塞了

\21. 为什么要用三个连续重复确认是发生轻微拥塞(上面提到了)

\22. udp了解吗,说下udp和tcp的区别

\23. 从udp和tcp的数据包头来说下区别呢

\24. 操作系统的进程和线程,从底层分析下区别

\25. 进程间的通信方式

\26. 管道通信说一下

\27. 消息队列,说一下你的了解

\28. posix详细说说

\29. 共享内存说下呢,期间会用到哪些具体的linux api呢

\30. Linux的死锁说下,怎么解决死锁

算法题 :二叉树的序列化和反序列化

总结:问的很细,网络编程中间的好多api我只是粗略的了解过,答得不好,最后算法题做的也不好,虽然做出来了,但过程有点曲折,就很离谱,给个数组,要我自己建树,然后序列化,再输出数组。

已凉。

230

2022.7 字节跳动 视频云后端开发 秋招提前批 一面凉

自我介绍

问简历中的项目

我之前是做Java的但是面试官说他不怎么会Java,就问了些数据库和计算机网络相关的

一个方法里有多个dml要修改不同数据库集群中的表,其中一条dml执行失败后,怎么进行回滚? (分布式事务?两阶段三阶段?)

两个线程获得了同一个锁怎么办?比如,一个线程获得了redis分布式锁,这个锁还没来得及同步到从机,这个时候主机突然断电了,从机变成主机,另一个线程在从机中获得了这个锁。(红锁 redlock?)

能起一个服务 在443端口 同时监听TCP和UDP吗?(发现小林coding上有了相关文章: https://mp.weixin.qq.com/s/3fMZN_LidCi5fiD16nNWWA)

HTTPS会把报文头加密吗?(来自评论区大佬:https会把报文头和数据加密)

Linux kill杀掉进程的处理流程?(为啥要问这个捏)

MySQL事务的隔离级别有哪些?可重复读是怎么实现的?间隙锁是什么?(四个隔离级别,可重复读read view?)

算法题: https://leetcode.cn/problems/find-k-pairs-with-smallest-sums/

在可重复读隔离级别下,下面两个事务会怎么样?(正确答案是会死锁,但是,why???)

(来自评论区大佬:因为间隙锁导致的死锁)

231

23提前批字节—后端开发一面凉经

7.12字节提前批后端开发凉经

主要问了项目、操作系统和计网,手撕了一道LRU

  1. 问项目的技术难点
  2. 给一个文件有很多行,每个行都是ip地址,用Linux命令找出出线最多的三个ip地址
  3. 学过系统编程和操作系统吗(自学过,问自学方式
  4. C++怎么分配内存
  5. 进行函数调用,栈怎么动态分配,和CPU寄存器怎么联动,数据怎么同步到内存
  6. 为什么一个操作系统可以运行多个进程,核心技术是什么
  7. 进程的地址空间是什么样的
  8. C++对main函数进行编译后形成二进制文件,格式是什么,怎么让操作系统把文件变成进程
  9. 动态链接相对静态链接解决的问题是什么
  10. ping的工作原理,发送的是什么包
  11. IP包大小有限制吗
  12. HTTP/1.1的局限性
  13. HTTPS的安全机制,能防止什么攻击
  14. 写LRU,时间复杂度,把LRU用于生产环境有什么问题

232

2022.7.11 字节 基础架构 后端 一面 面经

时隔3个月,对于暑期实习0offer的惨痛遭遇以后,开始了秋招第一站。

2022.7.11 字节 基础架构 一面

  1. 介绍秒杀系统
  2. 如何实现,按标签过滤的多级缓存
  3. 算法,返回一个大数的阶乘结果,输入为字符串,输出也为字符串。 (较难)
  4. 浏览器输入url到出现画面的过程
  5. 为什么需要第四次挥手(答错了,实质上是为什么需要2msl等待时间,是为了让B正常进入closed状态,同时也是防止失效的请求连接报文出现在下次连接中。)
  6. 操作系统的中断了解吗(不了解)
  7. 操作系统的并发了解吗(讲了一下原子信号)
  8. 操作系统的临界区了解吗(讲了一下)
  9. 你用过的设计模式有哪些?

233

面经

字节跳动校招内推码: 3YBUPYS
投递链接: https://jobs.toutiao.com/s/YKTJRnA

一面

面试官是写C的,我聊的很差
tcp三次握手、四次挥手
fin_waitl,fin+wait2,close wait,last ack分别是客户端还是服务端的状态
tcp中序号的单位是什么?
滑动窗口的单位是什么?
多个主机共用一个ip地址怎么做?
算法题:
1、删除链表中的重复元素;
2、链表中小于等于target的值排在大于target的值前面。
本来以为凉了,结果当天晚上约了二面,面试官太nice了!

二面

自我介绍+项目
项目中的异步怎么做的?具体说说
用户密码的安全性怎么保证的?
mybatis底层怎么实现的?(不会)
tcp中拥塞控制和流量控制有什么区别?
流量控制具体怎么控制的?
拥塞控制具体的算法怎么样的?
java中的锁有用到哪些?
说说syn、re和cas的区别?
cas具体怎么现实的?
进程和线程的区别?具体讲下什么情况下是多进程,什么情况下是多线程?
java中的map有哪些?各个简单介绍下
hashmap的底层数据结构是怎么样的?
有没有map是按key的值排序的?底层怎么现实的?
类的加载流程?具体每一步做了什么?
两道算法题
1、有序二维数组找target,找到返回坐标,找不到返回[-1,-1];
2、树的根节点到叶子节点的所有路径和。
二面面试官看起来很年轻,做题的时候我理解错题目意思也会提醒我,非常nice
字节面了四次了,每轮的面试官人都狠nice,给我的体验都不错

234

字节跳动提前批C++开发一面面经

内部员工回复

好多同学私信问我内推怎么走的,统一答复一下,我找的他 @字节内推dd

感受:

字节效率真快呀,上午投递了下午就开始面试了😂😂

一共面了50min左右;

面试官挺和蔼的,有些地方可能看出来我不太会了,但还是在认真听我说,就是死亡连环问太吓人了。

多谢牛课上看到的C++八股救我狗命,

最后面试官还笑着说我投简历投递的真快。

一面内容

1、让我介绍一下内存泄露,然后问我怎么检测,怎么解决。

2、在vector尾部添加新元素的时候,需要保证内存空间连续么。

3、让我介绍C++内存分布模型,我说到了栈,就问我栈和堆,然后又让我介绍区别、优缺点、栈空间大小

4、问我可以在1G的内存中,分配成功4G的数组么

5、让我介绍C++编译到exe的步骤

6、我提到了动态链接、静态链接,让我介绍他们的区别和使用场景。

7、让我区分并介绍指针数组和数组指针

8、问我了解多态么

9、讲一下虚函数表和虚表指针,然后说说各自的数量

10、让我介绍C++11新特性

11、让我介绍智慧指针,因为我提到了😂

12、让我介绍常用的容器及应用场景特点什么的

13、直接问我TCP能不能挥手三次

14、TCP通讯问我服务器挂掉了,客户端会怎么样

15、问我会不会用linux,我头铁说敲代码就用过几次,然后问我怎么用vi快速删掉一行

16、问我怎么从一百万条搜索记录中统计出现次数最多的10条

17、海盗分金币,还好我看过

代码题:让我从两个升序数组中找中值

235

字节跳动 后端开发 校招面经

一面(2022.06.21) 1h

进程间的通信方式

共享内存如何通信

jvm内存格局

linux常用命令

数据分析如何完成一个项目

项目介绍

输入一个网址,计算机如何执行

段页式文件存储

mysql为什么用b+树

如何研究开源框架

段页式管理

二面(2022.06.27)1h

当两个人同时修改数据的时候,一个人已经提交了,另一个人没有刷新还以为是旧数据,这个时候如何解决(version乐观锁)

B+树的结构

在哪些字段上加索引

Kafka的如何让所有机器消费全量数据,如何让机器平分数据

partition的概念

kafka 的管道和广播

算法题:

有序数组合并

两个有序数组找中位数

三面(2022.06.30)45min

机械硬盘和固态硬盘区别

ssd的速度

寻道时间

iops

kafka+flink的好处

项目介绍

堆排序

大数据排序

算法题:反转链表

Offer审批挂,原因是半年前面过同一个部门下其他组,三面挂过,大家面试的时候注意一下,一个部门挂了就不能再面同部门了,但是可以换个部门面试

换部门加面

四面(2022.07.04)1hFlink的exactly once和checkpoint机制Flink的快照存储什么信息Flink和其他框架相比的优点kafka的partition组件的作用Kafka如何重复消费Kafka如何保证顺序消费kafka如何分布式顺序消费
算法题:用二叉树表示的一个式子,计算出结果

236

字节跳动飞书低代码后端实习面经

一面6.7
讲一下time-wait状态
http和https区别
https里的数字证书签发和验证流程
redis内存淘汰策略
什么是缓存雪崩
mysql的索引用的什么数据结构
创建索引时需要注意什么
算法:LC498. 对角线遍历

二面6.10
守护进程
double占多少个字节,double为什么会精度丢失
java的垃圾回收算法
hash冲突的解决
红黑树的性质,为什么增删改查都是O(logn)
什么是稳定的排序 快排和归并排序稳定吗?
拥塞避免里的慢开始算法
HTTP常见状态码
HTTP的Keep-Alive
什么是事务
什么是索引
索引的底层数据结构
项目里redis的作用,存了什么数据
为什么不用memcached
项目中消息队列的作用
kafka重复消费问题
介绍常用的设计模式
算法:LC402 改成使剩下的数字最大

三面6.20
java的hashCode和equals
hashCode的设计原则(怎么保证离散性)
线程安全的Map
怎么自己设计一个Synchronized
ReentrantLock
CAS
volatile
尽可能得写出多种单例模式
算法:买卖股票1 2

hr面6.21
OC 6.28

237

字节跳动 | 今日头条后端开发 | 2022.06.23

其实去字节面试也不是我主动投的简历,在牛客网上,面试官可能看到了我的简历,然后邀请我投递,我就顺手发了过去,没想到最后还成功拿到面试机会了,这让我很意外,我知道肯定没太大的希望,抱着积累面试经验的态度,我决定去试一下,以下是面试内容。

  • 自我介绍
  • 然后问我实习时间问了好久?

聊天室项目

  • 项目怎么实现的?通过很多个goroutine
  • 用户的消息是怎么转发给其他用户的?通过服务器的广播协程
  • 登录注册怎么实现?
  • 通过什么登录(电话,邮箱)?
  • 服务器怎么知道是你(客户端)?网络地址
  • http长连接还是短连接,请求的全过程(链路)

go语言

  • GMP模型?
  • 怎么偷取其他的goroutine?详细说一下?
  • 垃圾回收机制是怎么实现的?
  • 乐观锁?

计算机基础

  • 四次挥手 2msl 为什么不是1msl或者3msl?
  • 数据库 幻读了解吗?
  • redis几种类型
  • mysql索引
  • 怎么建立索引?
  • 三次握手过程
  • 外键需要索引吗
  • DNS解析的过程?域名服务器怎么解析?

算法题

  • 环链
  • 直接给的main函数,没有其他东西

心得

  • 面试官问项目问的特别细,所以吸取的教训就是一定要对项目十分熟悉不然就不要写在简历上
  • 大厂不一定需要实习经验,只要对计算机基础和算法掌握的足够深,也可以拿到offer
  • 掌握一些前沿技术(Redis,Docker,K8S)会让自己更有竞争力
  • 之后我也面试官问我还有其他问题吗?我就问了他,对于字节面试需要达到什么标准?对实习经验要求高吗?我还有什么不足的地方?面试官也很热心的回答了我的问题,说他们很重视计算机基础,算法,如果有一些技术特色更占优势比如redis;所以其实字节面试对应届生要求应该不会特别高
  • 这一次只是试一下字节的水,期待自己下次有更好的表现!

有24届想交流的可以私信我,我建立了一个24届的实习交流群,大家会分享一手的热乎的面经

238

2019年头条服务器端实习一面凉经

大四时申请的头条寒假服务器端实习生

上来就是两个算法,都不难,但我答得并不好。。。

1.给出一个单链表,求离尾节点距离是 k 的节点,要求时间复杂度O(n),空间复杂度O(1)

2.给出一个数组,将其向后循环移动k位,给出结果,要求时间复杂度O(n),空间复杂度O(1)

3.有100只狼和1只羊,狼可以吃草但更喜欢吃羊,现有假设

(1)狼吃了羊会变成羊

(2)狼是聪明且理性的,都想生存下来

问最初的那只羊会不会被吃

4.解释数据库的索引及其使用场景

5.解释数据库的 inner join , left join


看了一大堆网上的面经,准备了很多后台 Java、操作系统、网络相关的知识,感觉问的不到 1 % 。。。

239

字节跳动-实习面经(祝我好运)

不得不说,大厂面试体验还是挺好的,即使很多没答上来😁😁

(1)开局自我介绍,balabala。。。。。。

(2)项目介绍

(3)学过操作系统吧?(yes)谈一下进程和线程

(4)谈一下你对操作系统资源的理解

(5)谈下为什么进程开销比线程大

(6)对内存了解吧?(yes)谈一下堆,栈

(7)堆里存什么?栈里存什么?

(8)静态变量放在哪?

(8)内存有哪些分区?

(9)字符串常量池放在哪个分区?

(10)程序计数器放在哪个地方?(我的回答是内存有单独一片区域?貌似错了。。。)

(11)对计算机网络了解吧?说下分层?

(12)每一层都有什么协议?

(13)tcp,udp区别?

(14)tcp怎么保证安全传输的?

(15)流量控制接收方怎么知道窗口大小

(16)流量控制和拥塞控制区别

(17)。。。记不得了

算法题:

(1)lru缓存;让我说思路,不实现

(2)给定一个不含负数的数组,且所有元素的值小于数组长度n,将其排序!!!!!!!!!!

240

22届字节跳动Java后端春招面经(已OC)

背景:双非一本学历,大四在腾讯实习了3个月,Java后台开发,参与一个tob平台从0-1的开发过程,无高并发,复杂业务类型,因为是从0-1落地,而且后端团队人数不多,我参与了主要的开发,所以很熟悉;参与的另一个迭代业务有高并发,技术性比较强,算是对Spring框架,微服务各个组件进行了深度的二次开发,但是,上手/学习时间太短,不太熟,一直犹豫说不说这个高并发项目,最后在一面还是说了。

一面:75min(Leader面)

超级nice,耐心给我讲了很多问题

1、自我介绍

2、深挖实习项目

业务方面:

1、从0-1的平台业务支持哪些功能?如果让你来做迭代你觉得项目的下一个阶段重点是什么?为什么?

技术方面

1、技术架构?技术难点?复杂业务场景?

2、对复杂业务场景深挖,主要是设计方面的。顺序基本是:有哪些方案选择?为什么选择了这一个方案?分析优劣?产生了哪些问题?如何解决?项目整体和中台的关系,如何集成?如何区分定制化开发和标准版?二者部署的区别?说一条你熟悉的链路,从定开到中台?根据我说的深入提问…

3、第二个高并发的项目qps?有哪些做的异步?(MQ,多线程/线程池)

4、高并发场景下做了哪些优化(优化每次查询,加机器,异步io,多线程,reactor)

4、因为项目对限流结合业务需求做了二次开发,所以问了限流的算法和解决方案,以及项目中的功能如何实现的

5、依赖哪些服务,对外如何提供服务,依赖方出问题(挂了,响应时间长)如何定位?如何解决?

项目问的一身汗,问了40分钟,有点hold不住,尤其是高并发的项目,明显硬核内容多,但是没学习完就离职了,业务做的也比较基础,所以,经不住问

操作系统:

1、unicode vs utf-8 vs utf-16 vs utf-32(√)(utf-16 vs utf-32有点问题,总体还行)

2、线程 vs 进程(√)

3、僵尸进程 vs 孤儿进程(√)

4、线程池(√)

网络:

1、http一定基于tcp?(我回答错了,http3.0没看过)(×)

2、http2.0、http3.0特性(√ × 2.0对了,3.0不了解)

redis:

1、zset底层,跳表插入一个数的时间复杂度(√)

2、redis主从复制,两种方式,salveof命令,如果网络中断了,如何恢复?(增量恢复)(√)

算法:类似买股票问题(√)

反问:

1、业务(给我讲了很多)

2、不足/可以提升的地方(比较看重基础,从0-1的项目可以重点讲,高并发那个项目硬核知识点太多,看得出来没有完全学习完,应届生更看重基础,项目是加分项,项目中更关注思考,不是项目多厉害)——真的受益匪浅

二面:55min

面试官说是交叉面,没有自我介绍,只是看技术是否合适,所以,只问了技术问题,其他的没问

操作系统:

1、Linux 虚拟内存 vs 物理内存(√)
2、进程 vs 线程(√)
3、多路复用,select & poll & epoll(√ ×)—好像解释的不太好
4、进程回收机制,wait & waitPid区别(√)

网络
1、浏览器一次url过程(√)

SQL
1、简单sql语句,group by,join,函数使用(√)

多线程:
1、多线程代码:synchronized、wait、notify使用(√)

算法:
8、算法:一个双指针题,不难,AC(√)

反问

三面:55min(Leader面)

算法 15min没写完,面试官说思路对的,不用写完了

-给一个数n,一个数组,n范围是int类型整数,数组中每一个数的范围0-9,长度0-200,找到一个结果result,使result满足三个条件:1、小于n;2、是由数组中的数字组合而成 3、要求找到那个最大的数(我用的贪心)

其他:

1、volatile(√)

2、项目(全是我讲,讲了20分钟)

3、MySQL的CAP(√)面试官说这块不错

4、操作系统内核态,用户态区别?如何切换?什么时候终止?(什么时候终止那个问题讲错了,面试结束就想到了,面试的时候脑残了…之后一直担心因为这个问题挂了)

5、看哪些书,了解哪些开源项目?如何学习?(举了美团Left ID生成器对比了基于数据库和雪花算法,看了源码,经常看各个大厂技术博客,说了学习方法和感受)

6、反问

241

简单几招教你通过字节后端面试!全是面经干货!速看!

一面 35min

1.自我介绍(必考题,要求条理清晰,层次分明,最好提前预演几遍,避免背诵感)

\2. http和https的区别

\3. 算法:正则匹配

\4. 进程内核态用户态

\5. 进程通信方式

\6. 进程用户态转到内核态的方式

\7. 死锁原因、如何避免

\8. 64匹马选最快的四匹

9.TCP三次握手

\10. mysql一套带走(ACID、并发控制、事务隔离级别、MVCC、undo段)

二面:

做好准备哦,问题问得比一面要细一点

\1. 讲讲项目(把项目摸透,特别是细节方面的问题,注重逻辑感)

\2. restful的设计理念、修改和删除资源的时候为什么要把id放在url里而不放在http的参数里

\3. 算法题

1)** 凑硬币

2)给一个字符串和一个字符s,已知这个s出现了很多次,随机返回一个s的位置(要求等概率、O(1)的空间复杂度)

\4. 贪心和动规有什么区别

\5. 四次挥手

\6. https中ssl的握手过程、为什么不一直用非对称加密

\7. mvcc、乐观锁 详细说说怎么实现的

如果有事务A查询行A 事务B修改行A并commit 此时事务A再修改行A 问此时会发生什么

\8. B-tree B+tree区别 为啥用B+不用B 不用红黑 不用avl

\9. 快排 堆排评价(时空复杂度 最优 最差 是否稳定)

\10. next-key lock

\11. 有索引key(a,b,c),问b > 5 and a = 1 order by c能不能用到索引 为什么不能 数据在B+树里怎么存的

\12. 内存的缺页中断、页面置换算法

\13. 进程的通信方式

\14. 事务ACID、隔离级别

\15. 什么是虚拟内存 如何使用

\16. 操作系统大礼包(linux的对象池、内存、写时拷贝)

三面:

这里问的问题挺多,不过都不会深问

\1. C++(const和define区别、智能指针、vector和list的迭代器失效及原因等)

\2. 操作系统(虚拟内存、链接)

\3. 计算机网络(tcp、http、粘包)

\4. redis

四面:
\1. 聊项目和竞赛

\2. 之前暴露的问题会问你现在学会了没有(主要是考察你的求知欲以及自学能力

\3. 一个数据包,从发出到接收经历了什么

注意事项:

面试之后都会有一个反问环节,要好好把握这个机会,避免鸡毛蒜皮、无关紧要的问题,可以围绕公司、应聘岗位、个人发展等展开提问

242

暑期实习 字节Java后端面经 三面

6.18 三面 leader面

  1. 说基础知识前几面问的差不多了
  2. 你非科班,学了一年多,学的内容挺多的,说说你是怎么学习的呢
  3. 说说final,怎么修改final变量(unsafe和反射
  4. 为什么os进行内核态用户态切换比较耗费资源呢
  5. 你的简历写了wireshark,谈谈TCP头部结构
  6. 你知道java怎么调用c代码嘛(JNI,我举了源码的例子,类型转换+函数对应,JNI我遇到过很多次了……
  7. 如果想让你构造一个打乱数组的工具类,你如何评判该方法打乱得好坏(我看了好多系统设计,这题真不会,但是面试官给我解释了一遍
  8. 提到随机,你知道随机数字怎么产生的吗(不了解,只知道伪随机
  9. 半个小时 算法题 给一个nm的二维数组,给一个pq的窗口,给一个位移k,窗口一开始在二维数组的左上角,每次往右移动k距离,一行走完应该换行,也是跳k行,输出一个二维数组,内容是每个窗口的平均值(沟通了很多次题意……同学们一定要问清楚,写了一个思路,太细节没搞完和面试官说差不多了
  10. 沟通,结束

243

面经分享

本人投递较晚,4月20号开始投暑期,然后就只有一个阿里 kpi 一面,三十分钟,没有参考意义。

随后到五月中旬,心情很低落。被美团买菜后端开发捞了,但是一面算法没过(个人较菜)。

boss 找投递机会,准备字节教育后端开发一面(基础还行,算法又挂了)。

经同学推荐,转客户端,投递字节飞书客户端,然后第三面挂了。

然后被腾讯 pcg 捞了,只有两面,都通过了,现在怀疑是 hr kpi,池子里都是大佬。

最终在师兄的推荐下开始字节新业务后端开发日常岗位面试,终于不是 0 offer了!

美团一面后端:

\1. 自我介绍
\2. 你认为你们项目的亮点在哪
\3. 你说到 SpringSecurity,你是怎么学习的呢
\4. Linux 了解哪些命令
\5. Object 类有哪些方法,细说一下每一种
\6. 用过哪些集合类,说一下 ConcurrentHashMap,说一下 ConcurrentHashMap源码在多线程下有哪些优化
\7. wait() 和 sleep()区别,sleep() 使用过吗,怎么用的
\8. volatile 说一下(原子性,可见行,有序性,指令重排,内存屏障,volatile 原理)
\9. 线程池7大参数,原理,拒绝策略
\10. GCRoot 引用对象
\11. 新生代晋升到老年代过程
\12. 说一下索引失效
\13. 联合索引实际场景如何建立索引
\14. 数据库隔离级别分别是什么,解决了什么问题
\15. 脏读、幻读、不可重复读
\16. MVCC说了一半,面试官打断说不需要说可见行算法,下一个问题
\17. Next-key lock 提了一下,没说别的
\18. linux 命令询问,chmod,什么是777,三个777分别代表什么,分别代表那个组
\19. 框架,Spring IOC, 循环依赖,三级缓存

字节飞书客户端:

一面:

\1. 自我介绍
\2. 项目登录过程实现、SS 授权和认证过程、JWT 如何使用、如何实现表单重复提交
\3. Redis 数据同步如何解决
\4. AOP 怎么理解的,动态代理 JDK 和 CGLIB
\5. 如何理解线程池、参数、拒绝策略、原理
\6. Java 里面的锁机制,synchronized 原理、作用、锁升级,AQS原理,ReentrantLock 源码
\7. 手写 DCL 线程安全方法,解释为什么需要加 volatile
\8. 第 K 大,leetcode 215,使用快速选择排序 O(n)

二面:

\1. 自我介绍
\2. 输入 URL 访问流程
\3. TLS 什么时候使用对称加密,什么时候使用非对称加密
\4. 中间人攻击了解吗?(不了解)
\5. 可靠传输如何优化?(类似加速网络请求)
\6. DNS 缓存在代码中如何实现?
\7. 网络中的二进制如何对应真实内容?(我说的粘包,但是不对,后来说表示层的功能。再后来说前后端交互使用规定的JSON格式,但是他说JSON格式在网络中也是二进制,如何在网络中体现?我就说了序列化,然后他说序列化只是一部分,后来我就不知道了,有大佬知道可以教教我哈)
\8. MySQL 索引如何提高查询效率
\9. 如何看SQL 语句是否使用了索引
\10. 如果你设计优化器,如何优化联合索引?
\11. 如何理解事务?
\12. 面向对象语言的特点
\13. GC如何判断回收的垃圾对象?
\14. 如何判断引用计数器什么时候加1,减1?
\15. 如何知道对象什么时候被引用?
\16. 那什么时候GC进行回收呢?Minor GC、Full GC
\17. leetcode 给一个字符串,判断最长的回文子串的长度,如何优化

三面:

\1. 自我介绍
\2. 十六进制转换为十进制 代码编写
\3. 感觉一面二面面试官怎么样?
\4. 你感觉一二面令你印象最深的题目?
\5. 你还学习过哪些语言?做过哪些项目?
\6. 你认为 Python 和 Java 的区别有哪些?历史、编码过程、框架方面
\7. HTTP 的历史,HTTP 1.0、1.1、2.0、3.0
\8. 当前腾讯视频用到了哪些协议?
\9. 设计一个缓存系统,如何在客户端保存用户的图片?缓存唤出策略、缓存的级别、缓存的存储方式(文件还是数据库,什么时候用文件,什么时候用数据库)、网络图片下载失败重试
\10. 你认为你项目中印象最深刻的难题?学到了什么?
\11. 你写的代码大致有多少行?

腾讯 pcg 后端:

一面:

\1. 自我介绍
\2. 浏览器输入 url 过程
\3. MTU 和 MSS
\5. 状态码详细问答 502 504 403 404 302 301
\6. UDP 如何做可靠传输
\7. TCP 如何可靠传输
\8. 流量控制和拥塞控制的区别
\9. 考察 NGINX 如何转发,NGINX 里面包含什么
\10. AOP 动态代理 项目横切日志如何做
\11. IOC
\12. 看过那些书
\13. 如何解决慢查询
\14. 12345678 单链表,从尾部到首部每 k 个反转一次,不足 k 个不用处理,返回反转后到链表 k = 3,87654312

二面:

\1. 总监面
\2. 由于总监时间有限制,直接算法题
\3. 二分查找数组指定元素的最小索引,包含边界值处理,测试用例的设计。(算是运气好)

字节新业务后端开发:

一面:
\1. 自我介绍
\2. 数据库表如何设计的
\3. 系统中的 JWT + SpringSecurity 如何实现认证和授权的
\4. HTTP 和 HTTPS 的区别
\5. 拥塞控制和流量控制的含义和区别,包括拥塞的四个算法
\6. Innodb 索引介绍一下
\7. 项目中用到哪些索引,怎么用的
\8. 覆盖索引是什么
\9. ACID 如何保证的(undolog, AID, redolog, mvcc)
\10. Redis key过期怎么办?如何删除key?(淘汰策略)
\11. Redis 分布式锁你是怎么理解的
\12. leetcode 540

二面:
\1. 自我介绍
\2. 系统中为什么使用 Redis?怎么使用的
\3. 详解 JWT,如何实现系统登陆的,如何解决 JWT 的 Token 续期问题
\4. 防重复提交如何实现的
\5. AOP 是什么(我是从 JDK + CGLIB 源码角度解答的)
\6. 然后他说我面过好多次了,基础可以就没有问我八股了(实际上这面之前字节已经面过五次了)
\7. 做题:第一题:leetcode 763,第一题没思路,然后给了第二题:分糖果,过了之后又出了一个题:leetcode 162,还好会二分

三面:(三面没录音,记不太清晰了)
\1. 自我介绍
\2. 项目简介,问项目系统设计从软件工程的角度如何考虑,包括需求,设计,安全多角度思考(结合自己的系统)。
\3. 做题:合并 N 个不等长的有序数组为一个有序数组,动态输入。(20分钟之内)
\4. 问了操作系统 read write 底层原理
\5. 操作系统线程切换的底层原理,设计哪些寄存器的内容,如何变化的
\6. 计算机网络的拥塞控制,有哪些缺点,如何改进
\7. 了解 QUIC嘛,有哪些优点,解决了 HTTP 2.0哪些问题

244

字节跳动Java后端日常实习三次面试的面经(已OC)

基本介绍

目前就读于哈深大二,字节跳动一共面了三次,第一次一面挂,第二次三面挂,第三次终于OC了。

所以按知识分类整理这三次面试的面经,不然记不得哪个问题是在哪面问的。希望对大家有帮助。

内容概述

项目部分包括做的秒杀项目和IOC容器实现,后端知识包括Java语言,设计模式,JVM,数据结构与算法,操作系统,计算机网络,MySQL,Redis和Spring框架。还有算法题,智力题

算法题

手撕快排

实现一个单例模式

二叉树的层序遍历

实现生产者消费者模型

字符串的最长回文子串

计算一个二进制数bit为1的个数

寻找两个有序数组的中位数,不能合并。

智力题

两个人投骰子,先投的人赢的概率

36匹马,6个赛道,最少赛几次选出前三名

秒杀项目

描述项目从用户注册到付款的过程?(我是分成流量优化,故障恢复,处理异常请求三个部分来介绍)

如何处理超卖?

如何保证缓存和数据库的一致性?(消息队列RocketMQ)

如何保证Redis扣减库存和发送消息的一致性?

如何保证消息队列的可靠性?

Redis如何保证查询和扣减的安全(LUA脚本)

如何保证消息队列消息不重复消费?

如何保证下订单和扣减库存的一致性(消息队列和事务)

总结:感觉基本都是秒杀项目的八股,还有对项目的熟悉程度。

IOC容器

IOC容器反射创建对象是否是我们要的对象(不知道,可能是代理对象?)

IOC容器的类加载?(双亲委派)

如何解决循环依赖?

为什么不能解决构造函数循环依赖?

思考一下怎么解决构造函数循环依赖?

Java语言

Object类中有哪些方法?

==和equals?(麻)

Atomic类底层原理?Unsafe类在硬件层面的实现?

反射创建对象是否是我们要的对象?

说一说Java反射?

了解Java的IO模型吗?(不知道)

分布式?(不知道)

设计模式

了解的设计模式?

设计模式六大原则?

单例模式,静态内部类实现和枚举实现?

JVM

JVM工具?(jps那些)

Java内存区域?

堆外内存属于JVM吗?

Java如何回收类?

回收类的场景?

双亲委派的原理?

如何破坏双亲委派?

双亲委派的好处,场景?

了解的Java垃圾收集器?

Java的垃圾回收算法?

数据结构与算法

了解的排序函数?

说一下快排的过程?

操作系统

死锁?

如何避免死锁?(银行家算法,破坏死锁的条件)

进程和线程的区别?

进程的调度?

进程的同步?

进程的通信?

计算机网络

你了解中间人攻击吗?

了解HTTPs吗?

HTTPS如何实现身份认证?

HTTPs发送公钥时为什么要hash?(不知道=-=)

HTTP get和post区别?

HTTP2.0和http1.1在请求页面时有什么区别?(服务器推送)

输入URL过程?(背麻了)

OSI计算机网络分层模型?

TCP为什么要四次挥手?

四次挥手为什么要等待2MSL?

TCP的拥塞控制?

Redis

Redis为什么快?

Redis的数据类型?

Redis字符串类型项目怎么使用的?

如何解决缓存穿透,缓存击穿,缓存雪崩?

MySQL

MySQL索引的实现?

为什么用B+树?

什么情况下要加索引,什么情况下最好不加索引?

如何优化Join语句?

MySQL的binLog是如何使用的?

MySQL的隔离级别?

什么是事务?

什么是原子操作?

Spring框架

了解SpringAOP吗?

HR面

最近在玩什么游戏?(老头环)

遇到打不过的boss怎么办?

会查攻略吗?

玩游戏更重视体验还是赢?

什么时候入职,实习时长?

喜欢coding吗?

为什么选择后端?

加入字节跳动能为你带来什么?

总结

感觉一面问常规八股,二面会进行深挖,三面会出思维题,然后考前两面没有问到的知识或项目。

都是常规八股,好好看面经准备都能回答上来。

面试经验

感觉日常实习面试难度不高,只要肯背都能回答上来,算法题大部分也是常规都刷过的。还要看能不能遇到好的面试官。

大家在面试的时候千万不要因为紧张或者心情的原因不想说话,不管什么心情紧张不紧张都要多说,就是记住自己是来吹牛的,还有自己不说没人知道你会。

学习经验

看书,看官方文档,面向面试学习。

245

字节国际化产品 后端一面-一个半小时

写了一半,按错了跳转到别的网页了回来就没了~~~~~~~~~~~~~~~第一次写,有啥问题就问,我确实菜。。。

现在还有面试的22届吗,之前随便试试的,因为看招聘软件上都没需求了,以为没戏就没准备,结果还整了个一面,实习太久都忘干净了,全程瞎扯。

总共我这才是第三次面试,之前年轻面过一家就拒了别的实习去了,没什么经验,比较紧张,不过面试官老哥很nice,不管你说的对不对:“我就是问问”、“没关系、我们下一个问题”。

1、自我介绍

2、项目面试官不熟悉我实习公司的业务问了半个小时,一直扩展

http和rpc调用什么区别(???是我菜了)

记不清了又问了个分布式的问题,不会就不问项目了

3、集合类 说用的最多的是hashmap,往会的方向引。Hashmap底层结构、为什么用红黑树等

4、线程安全知道吗(来了,贯穿全文,全程懵逼,完全忘了锁的存在)

5、怎么实现线程安全(瞎扯,threadlocal)

6、Syn锁(不知道在说啥,说到实习公司的分布式锁了)

7、Syn的实现原理 我说的底层指令(不知道我在说啥)

8、Volatile原理 能保证线程安全吗

9、终于知道我不大会了,问我写过多线程吗。线程池参数、执行流程

10、IO密集型 CPU密集型 进来 怎么调整线程池参数(为啥没听过)

11、JVM划分以及功能

12、新建对象在堆里怎么分配内存的(不会瞎扯,gc、分代收集)

13、Mysql事务是什么,真不会描述(扯隔离级别、级别解决的问题)

14、隔离级别是什么,不会描述瞎扯

15、幻度、不可重复读

16、索引是什么,一种特殊的数据结构?(扯到底层b树)

17、为什么用b+树

18、联合索引生效判断(= = > = ) 原因,前两个生效 后两个失效,范围查询失效说的不准确,不是都失效吧

19、redo undo(记混了感觉说的不对、瞎扯)

20、Mvcc

21、IOC

22、设计模式手写单例模式、讲解、线程安全吗、怎么让线程安全、怎么更高效

23、算法金额组合,集合里面值数量无限,int[] nums = {1,2,5},int count = 5,返回4

24、反问具体做什么(保密。。。国外社交软件)、技术栈、小小的评价一下(没忍住,保密???)知识哪里不足(保密???)

总结:

感觉问我的好简单,也没涉及到网络,就是没什么准备,实习半年全忘了算法也没怎么刷过了,估计凉了,就当涨涨经验了,老老实实的吧。

问你们个问题,你们实习还会刷题和看面经吗

246

字节后台开发面经

一面:

1.自我介绍

2.聊各个项目,介绍性阶段

3.问项目细节

4.Http和Https区别(简单了解,答了一点点)

5.TCP和UDP区别

6.TCP可靠传输原理,三次握手和四次挥手,为什么要四次挥手

7.进程和线程区别,进程和线程通信方式

8.redis常用数据结构与底层原理(底层原理不知道,没答)

9.消息队列的消息丢失和消息堆积(不了解,没答)

10.说几个linux常用命令,fork()函数是干什么的?

11.MySQL最左前缀原则

12.MySQL采用B+树的优缺点

13.做题:下一个排列

14.反问

二面:

1.自我介绍,问自身一些情况

2.Java的IOC和AOP,线程和进程区别与联系,线程池

3.问项目的一些东西

4.MySQL索引数据结构、索引分类、联合索引、MySQL悲观锁和乐观锁怎么实现的

5.场景题一:转账操作怎么设计

6.Redis高可用怎么设计?

7.场景题:库存在redis中缓存,秒杀时redis单点可以承受1000tps,怎么样处理10000tps的请求?(纯用redis解决,不考虑限流)(集群,但集群时各结点库存怎么分配需要认真考虑)

8.做题:四个无序数组排成一个有序数组(我用的快排+归并)

9.反问

6.20已offer

入职后补:

内推链接:https://job.toutiao.com/s/YouP5EP

建议:准备基本充分的情况尽早投递

投递方法:在任意地方打开上述链接投递即可,会自动填写我的内推码TT9E71Z。

247

字节跳动后端基础架构123hr(已oc)

我是java的 进去后转go
一面(50min)
一.项目用了es es为什么快
倒排索引 用了分词 索引命中率
2.编译原理(这个不太会)
只说了编译原理的5个过程 然后说学得不好
3.各种锁 印象深刻 cas volatite 公平锁 非公平锁
cas就是旧值判断 常见aba错误
volatite 同步的三个性质满足两个 有序 和 可见
具体有序是 汇编代码加 lock
可见是压入工作内存
4.bio nio
bio一个进程 or 一个线程 一个socket
nio一个进程 多个 socket
linux 发展和现在使用
select poll epoll
select底层bitmap poll双向链表 epoll红黑树 单向链表
具体检索效率上分析 还有 内核内存移动大小(具体可以查阅相关资料好多不打了😂)
5.mysql索引 b+树 常见索引结构 经典问题
只要理解b+树底层模型就好了 页内单向链表 页间双向循环链表 页内有页目录索引(类似hash函数)
6.hash消除 常见办法 (自己再胡扯了一下渐进hash的好处)
7.红黑树 查阅相关资料理解模型就好了
8.算法题 两次二分 一次二分 的结果用于下一次二分
没原题😂 时间log n 空间 1 (条件好难)10分钟没写完,面试官要开会了。 后面自己写了
觉得我怎么样
技术很不错 😂

二面 (30min面试 40min吹水)二叉树左视图(3分钟写完)
问项目忘记啦
1.内存存储模型 3种 linux用的 和 intel cpu 支持 具体查资料哈 或者评论问问 我后面写一下
2.进程通信哪个快
5种进程间通信 分析是否有 cpu状态(内核 用户)切换等 进行速度分析 共享内存最快
3.top k场景题 秒答 优先队列 维护k大小堆 log n优化到log k
4cc cv操作系统过程 用户内存内核内存xxx具体查阅资料
5.计网4次挥手 每个状态是什么
为什么 4次
2ms两个原因
6.顺手问了mysql索引 b+树经典问题理解b+树就好了
7.inoodb(忘记怎么拼了) 事务四种隔离级别的实现
mvcc机制 next key解决幻读 可重复度隔离级别实现解决 不可重复 具体可以看我之前的一篇博客(3000多字)介绍了mvcc是怎么实现各种隔离级别和mvcc本质数据结构和实现原理

《MVCC简单易懂总结(如何实现读已提交,如何实现可重复读,幻读是什么)》, 一起来围观吧 https://blog.csdn.net/m0_52199015/article/details/124089877?utm_source=app&app_version=5.3.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

开始反问:我怎样😁
面:非常优秀(震惊)(骄傲一下,我是六边形战士),期待我加入他的团队 (不还有三面吗😂) 不足:缺少生产经验(没有实习过唉),但是也可以理解毕竟没有工作过 然后就讲讲工作干什么 工作的时候怎么学习 可以准备一下三面了😂

三.三面(上强度了,估计是二面太好了,三面就跟你讲讲计算机发展史😭,50 min)
\1. 0 1最大正方形dp 动规
\2. 二叉树B的是否是A的子树 dfs 内套 dfs
两题10分钟左右写完

3.kafka底层存储模型,好在哪里?????(好难)
讲了零拷贝 然后讲os拷贝从4次状态切换4次拷贝 到两次状态切换两次拷贝 的优化过程(4个阶段)
零拷贝中硬件做了什么操作系统做了什么?(我废了,变傻子)

4.数据从磁盘到用户内存 磁盘做了什么 cpu做了什么
内核内存做了什么 内核中有什么单元又做了什么(救命😂)大概答了点,不说了,太拉了

\5. 赋值os做了什么 不同进程间赋值会有什么问题(终于有个会的) 具体了解os虚拟地址 物理地址 等知识
6.最近看啥书(准备考试刚考完三科) 几周前看算法分析与数据结构(黑书)

反问:我怎么样?
面:还是很不错的,但是沉淀还是不够(我也才学了三年,确实没啥沉淀(大一摆了一年))
讲讲团队干啥xxxx

四.hr面 聊人生(我们是中国新时代青年,我们将自强不息)

具体还是比较流畅的面试体验也很好,也发现了自己很多不足吧,具体疑问评论哈

大家加油,一起努力

秋招提前批已经就绪欢迎来踢

字节跳动校招内推码: D3ZEUXJ

投递链接: https://jobs.toutiao.com/s/YKnrppE

248

字节跳动后端开发不完整面经

一面(2022.04.29)1hTCP和UDP区别HTTP状态码网络爬虫的开发过程进程和线程的区别
二面(2022.05.11)1h部分网络协议是在哪一层JVM每个区域的构成jvm调优工具bean生成的流程spring常用注解aop常用注解,如何发挥作用的https://leetcode.cn/problems/spiral-matrix-ii/
三面(2022.05.17)1hDNS协议流程如何查看进程何线程占用的内存和cpu等volatile的用处,它的底层是如何执行的kafka如何保证数据的安全sql题目 显示每门学科的第一名的数据

四面(2022.05.20)1h项目介绍输入一个url浏览器的处理流程http状态码常见举例进程和线程的区别进程间的通信方式flink的状态存储算法题:给定一个字符串表示的数字,在里面删除n个数字,得到最大的数字
HR面(2022.05.27)10min手里offer找工作的考虑为什么投递字节意向成程度心中顾虑

249

字节后端一面

流程非常的快

项目一点问都没有 八股也没问 算法题也很简单 可能是kpi面吧 希望面评不要很差就好了555

1 可变对象不可变对象 有哪些 自己定义的类是不是可变的

2 python异步处理 用过吗 了解吗

3 list和dict的底层

4 dns迭代查询 递归查询 过程

5 一堆负数和0和一堆正数 找最后一个负数和第一个正数的位置 开始我写的遍历 然后让我优化

我说用两次二分查找 找第一个0和最后一个0 然后前一位和后一位就是要的结果 然后没要我写 草草结束

全程30min吧

250

字节日常实习

4.26 17:00一面严肃大叔 面了一个小时几分钟
大小问题共三十多个…

1.面向对象相关多个问题
2.Python多个问题
3.数据结构
4.Linux
5.数据库:索引
6.测试要素
7.网络
8.手撕
9.问一个行测题:一根金条支付给一个人一周(七天)的工资,金条最多可以切两刀,要保证他每天都能拿到相应的工资,怎么操作这个智力题算我的高光时刻,没做过,大约思考了十几秒,出答案了,面试官看我笑了😊,全程严肃,到这笑了
其他面懒得写面经,都是常规题~~~

251

字节暑期实习一二三面面经(已OC)

一面(40min)2022年4月27日

1、自我介绍

2、项目介绍

3、用到了哪些表?主要关注业务量。

4、登录流程?(token认证)

5、token放在哪个位置?(前端放到请求体里面吧)

6、压测主要测啥?(多线程测试最大并发量)怎么判断系统稳定?

7、AOP面向切面编程,spring aop的两种方式。

8、浏览器中输入一个地址发生了什么?

9、四次挥手没有第四次会怎么样?(超时关闭?)

10、编程题:二叉树转双向链表。

二面(50min)2022年5月7日

1、dubbo了解嘛?(不了解)熟悉什么技术?(数据库MySQL,Java)

2、用过MySQL的那些功能?(索引,事务)

3、select d from table where a > 100 and b = 1 order by c desc.如何建立索引?(联合索引,索引实效,底层B+树,回表等)联合索引顺序 (a,b,c)?(是的)

4、为什么(a,b,c)的顺序可以?(讲了下大概的流程)

5、范围查找可以用索引嘛?(可以,但具体执行要看优化器如何优化)

6、优化器的原理知道嘛?(大概讲了下会预估扫描行数,好像是抽样统计记不太清)

7、连接操作join了解嘛?(左连接,右连接,内连接)

8、inner join连接操作怎么实现的?(大概讲了下流程,应该是问底层)

9、join的时间复杂度?(加索引和不加索引)

10、不加索引怎么优化连接操作?(大表在前,小表在后)还有嘛?(加缓存?不太确定)

11、设计一个分布式缓存架构

1)考虑数据结构。(key value结构)

2)考虑页面置换策略(FIFO,LRU,LFU)

3)分布式怎么存储。(中心结点通过HASH来分布,Redis集群分片存储)

12、LRU具体实现。(Hash和双向链表)

13、编程题:给你多个ip地址(可能涵盖所有的ip地址),判断是否为国内ip,事先给你一些不相交的ip地址段表示国内ip。

思路:将ip转化为long数值存储,然后比较。考虑时间复杂度(朴素法O(n2),二分法O(nlogn))

实现:两种方法都实现了,没有debug。

三面(50min)2022年5月11日

1、自我介绍、项目介绍。

2、项目的亮点(使用token做安全认证,OAuth2授权认证,数据脱敏)

3、有没有使用过Redis(Mybatis中二级缓存有用过)

4、Redis的基本数据结构有哪些?布隆过滤器具体原理?

5、减少Hash冲突的办法?

6、一致性hash了解嘛?(不太了解)

7、如何设计一种机制在UDP上实现可靠传输?(确认和重传机制)补充?

8、编程题:LC 394 字符串解码(面试官口述的题目,基本原题类似)20-30min

9、反问

HR面(30min)2022年5月16日

HR面基本就是常规的一些问题,问学校和项目经历等。

过程总结:实习投递的比较晚,大概四月初投递,投递的第一志愿是北京的一个部门,简历直接挂了,后面被武汉飞书捞了,前面有笔试,笔试过了大概10天约的面试,然后基本上每一面都是结束后一两个工作日发的下一面的通知,面试是自己约时间,因为比较没有把握,所以每次都把时间约的比较靠后,导致整个流程拉的很长。

5月底了本来以为没有啥HC了,终面之后等了7-8个工作日才OC,心里的期望本来都不大了,不过后面还是上岸了,非常之欣慰!

252

字节后端开发-新业务 一面凉经

#项目:

1,说一下简历上的2个项目(忘了自己写了什么鬼项目,凭着零散的记忆说了一些离散的废话)

八股:

C/C++:

2,你了解C++左值和右值吗?(右值是将亡值,非右值都是左值)

3,引用和指针有什么区别?(引用必须初始化,非空,指针则不然)

4,C++里的RAII机制?(寄)

5,谈谈智能指针?(只记得auto_ptr,unique_ptr,share_ptr)

6,C++静态多态和动态多态?(重载、泛型;OOP里的多态)

7,动态多态如何实现?(虚表)

8,内存中堆和栈的区别?(一个可以new/delete,另一个存储局部变量,先进后出)

9,为什么要用堆?(栈空间小,栈不够灵活)

10,函数调用机制?(寄)

数据库

11,MYSQL常见的索引?(主键索引,唯一索引,普通索引,全文索引)

12,聚簇索引和非聚簇索引的区别?(非聚簇索引需要回表)

13,聚簇索引应用场景?(主键索引)

JAVA

14,HashMap底层原理?(随口答了个红黑树,寄)

计网

15,HTTP常用的请求方法?(问的是GET/POST,当时突然有点懵,没回答上)

16,HTTP和HTTPS协议的区别?(HTTPS使用TLS加密了)

17,SSL/TLS具体加密过程?(寄)

算法题:

1,二叉树转双向链表

要求:

转换后的双向链表节点顺序要和中序遍历结果一致

二叉树最左边的节点作为双向链表的头节点

空间复杂度O(1)

(有思路,但第一次做着做着就乱了,然后全部清空重新整理思路才做出来)

反问

在面试官的角度,我还欠缺哪些能力?

计网不行,回去多看看

面试官很年轻,很温柔,我相比第一次,能回答上一些之前回答不上来的问题,但也发现了更多盲点,虽然凉了,但不放弃,继续努力,不断进步!

253

#oc还愿 字节后端日常实习三次面经

4.24一面

1.介绍秒杀系统功能
2.整体QPS多少?
3.有正常订单吗?
4.整体订单数据存在mysql里是吧?
5.秒杀倒计时如何实现?
6.数据库表如何设计?
7.秒杀表索引如何设计?除了主键ID还有其他索引吗?有unique的key吗
8.了解ngnix的正向代理和反向代理吗?
9.tcp的三次握手协议的过程?最后一次握手丢失后服务端和客户端会处于什么状态?
10.了解mysql的索引设计吗?
11.索引存储的数据结构是什么?
12.B+树有什么缺点?
13.redis你了解它整体有哪些数据结构?zset的数据结构?
14.redis持久化?redis运行很久,AOF执行语句会一直膨胀很大吗?
15.了解redis热key和大key?解决手段?
16.redis分布式集群搭建?

算法题:LC740 删除并获得点数

4.29二面

1.项目相关的几道问题

2.GET和POST区别

3.如果一个项目全都使用POST会如何

4.线程与进程的区别

5.举一个多线程和多进程软件的例子

6.浏览器页面为什么要用多进程

7.分布式锁(这个讲的挺久的)

算法:

1.Z字打印二叉树

2.接雨水(不能暴力解)

5.11三面

因为面试官居家办公,所以没开摄像头,本来很紧张,上来先聊天5分钟

1.数据库的四种性质

2.如何实现的隔离性、原子性

3.四种隔离等级如何实现的(说到ReadView和next-key lock这个程度)

4.什么情况下next-key会退化

5.数据库redo log 和 undo log

6.第三次握手丢失后服务端和客户端会处于什么状态?(这个因为第一次面试的时候发现一个问题 所以跟面试官讨论了一会)

7.那这个问题你有没有自己去抓包测试?

8.redis的io多路复用模型

9.redis中hash数据结构的rehash为什么快

算法:

有向图的循环依赖检测并打印出循环的环,可能存在多个环。

系统设计:

设计一个火车票购票系统需要考虑哪些方面的问题

总结:三面都没有问到Java的内容,可能是因为部门用的是Go语言 ,三个面试官人都很好,第二个面试官会在一个基本问题上追问,一直问到不会的程度。

字节真的是算法大厂,问的几乎都是无关语言的基础,以及算法难题(跟其他面试相比字节的算法题真的难不止一点)

254

字节电商中台后端开发实习八股一面凉经

我简历上的东西没怎么问,一直追着问好久没看的操作系统八股文,Go 相关的也没问,之前准备时候我都是深挖简历内容…

Raft:这是唯一跟我项目相关的。

CAP 原则:这个我真不记得了。

Raft 作用是什么?

Raft 如何选举?

什么是任期?

什么是脑裂?Raft 如何避免脑裂?

我精读过 Raft 论文,以上问题都答得挺好的(都是前面一半的内容。

操作系统:

物理内存和虚拟内存区别? 答曰虚拟内存是硬盘上分配的连续缓冲区,用于解决物理内存不足,进行页面交换。

连续缓冲区如何分配?不清楚。

核心态和用户态的区别?

系统调用过程?

函数调用时堆栈状态? 忘了。

什么是死锁?

网络:

(我有网络的项目,但是是拥塞控制相关的,结果完全没问。)

四次挥手?

详细说下挥手时的状态? wait_fin之类的,我忘了。

500,501,502 ,503,504,505 状态码什么意思? 这个见的太少了,不记得了。

TCP 如何保证可靠性?

HTTPS 和 HTTP 的区别?

HTTPS 安全套接字如何工作?

数据库能问么? 我很久没看了…

行,那来做个题。

LeetCode 1048 动态规划

套动规模板A了,但是讲解过程不太好。

第一次体验字节面试做题,之前没看到有人提过是怎么操作的。

直接在视频窗口弹出来一个做题界面,有自动补全。题目是英文的,看完费了点劲。只有个main函数框架,没有输入和测试用例,面试官叫我用题目里的例子,直接写死。

反问:您是我面试这个部门的么?

她说她只看到我是后端开发实习,没写部门。

我说之前 hr 联系我说调剂到其他部门去了,好像是深圳电商中台。

她说那是的。

反问:部门平时用哪些技术?

她说就数据库 Redis 消息队列 RPC等等。

我:(就这些东西啊,要是去实习岂不是学不到什么东西)

End

晚上收到调研短信,不知道是不是凉了

好的收到了感谢信,寄了。

不过无所谓,感觉这部门去了也学不到东西。

255

字节中台+腾讯天美 后台开发实习一二三面面经

背景**:某知名双非大二,**大一的暑期在腾讯有过短暂实习

面试历程:https://www.nowcoder.com/discuss/957018

天美 后台实习 一面

面试官应该写C++的,问了一大堆C和C++底层
c++为啥用new不用malloc?static、externC之类,名称翻译,stl容器,map unordered_map
然后一点操作系统(进程间通信的方式,管道,fifo,共享内存mmap到两个进程上的地址是一样的吗,硬链接和软链接,lock-free编程、),
一点计算机网络(syn flood、syn cookie),HTTP版本(1.1、2.0二进制、3.0 QUIC,基于UDP做可靠传输,多路复用,队头阻塞)、对称加密非对称加密
一道简单的概率题(扑克牌除王外抽3张抽到顺子的概率)

编程题:
有序数组合并 O(n)
删除单词中的空格,并返回删除的个数 O(n)
字符串按单词翻转 O(1)额外空间

天美 后台实习 二面

晚上面的,面试官似乎有其他事情的样子,只做了蛮简单的一道题,做了几个优化,然后讲了下进一步改进的思路就结束了

题目是统计一个文件里面出现过最多次的字符,有可能有多个。基本上是在聊细节处理,比如一次读不止一个字节的时候的读入流的处理,还有基本的性能优化(不同记录top1方式的空间/时间取舍)

天美 后台实习 三面

天美j3工作室 做cod手游 cf手游
平时玩什么游戏
再次告诉我被推过来天美是因为wxg没有hc(暴击x3
static局部变量的位置 -> 数据段
内存里除了代码以外还有啥?堆,栈,全局变量
栈的生长方向?函数传参的方式?顺序?(讲了x86-32bit x86-64bit和riscv,寄存器+栈)
堆做什么的?
实现一个用户态的内存分配器,怎么实现?答了 slab 形式的分配器,预留不同大小 slab 分配,被深挖
如何O(1)分配?讲了用空闲空间本身串联成freelist链表
碎片化的内存块怎么分配出去?如果请求大块内存但是只有几块连续小块怎么办? 讲了归还free的时候可以探测一下前后的空闲块,连成链,然后每个块都记录链总大小加快速度
归还操作系统的时候,如果是碎片的内存,怎么归还? 不太知道。。。拿内存肯定是拿一大块,不知道可不可以拆分地还
x86的引导方面有了解吗 浅说了一下x86的启动流程,说学校的以riscv为主
riscv有特权模式吗?讲一下特权模式(从machine模式到supervisor模式到user模式全吹了一遍,每个模式可以干的事情和不可以干的事情)
页保护,缺页异常,异常处理子程序+子程序注册,中断里面发生了什么(讲了除了可能是非法访问外,还可能是copy on write页的特殊处理,面试官提醒了换出的页和磁盘mmap页的情况)
struct{int32,char,int16}的对齐

提的那个enum redefinition issue说一下(这个面试官没有听我吹完,但是后面问了一句是自己发现的还是导师帮助的。。。大二哪来的导师)

之前实习学到最多是什么,或者遇到最难的是什么(说go一开始不知道gRPC会开协程,然后出了共享数据的竞争问题,又问是怎么排除定位的,怎么找到最后的原因,怎么修复,这个被挖得有点深)

barycentric coordinate知道吗?(不会)
寻路算法了解吗(不会),图形学线性代数学过吗(不太会)。三个顶点如何计算法向量(叉乘再归一化),计算出来法向量有什么用(光照计算)

反问:到时候会做游戏本体服务端还是游戏相关服务的后端。答这个是有两个组的,相关服务后端更match我经历一点(确实)

字节中台 后台实习 一面

自我介绍,大一在腾讯实习做的什么;大二就出来面试?(暴击x1)
实习时长,怎么还没开始打acm预选赛(暴击x2)

做过什么有意思的项目或课程?这学期的数据库内核实现,讲了第一个实验涉及给pg添加一个用户数据类型,讲了数据库堆页、TOAST、overflow、vacuum、超大row的插入、行插入最近使用页、脏页落盘。实验里的细节:端序,变长类型的存储。数据库事务、MVCC、隔离等级(隔离等级因为自己项目用不上,不是非常熟悉,说得不咋样)
PG里面的页,插入数据的时候是从后面插入的,能讲一下吗?(不太清楚)
分布式学到哪里,自学,还没学到raft,实现过mapreduce,大概机制工作原理,没用过hadoop,但是自己实现过简单mapreduce。

说找点简单的基础问一下:
Linux指令,查看文件大小,ls和du的区别,查看网络io和磁盘io使用指令(nstat、iotop)
给c++标准提issue的经历(https://blog.miigon.net/posts/cpp-core-language-issue-for-enum-const-redefinition/),解释了一遍(enum重定义在c++标准里面没有禁止,标准疏漏,不是什么高深技术问题,主要讲发现过程和研究/查阅思路)
计网三次握手四次挥手,TIME_WAIT(这个一开始没听出来是啥提示了一下,计网自学的,正式课还没上完,一些词忘了,不过具体细节还是答出来了)
操作系统进程间通信,管道共享内存信号,系统发送kill信号(把信号、中断、信号处理程序能讲的都讲了一遍,sigterm可以用户程序处理,但是sigkill特殊,操作系统会立刻中断进程)
c++define和const的区别(const编译后是有链接符号的,有实际的内存空间,define是代码级替换)
(问的问题好少,因为每一项说得都比较多,可能时间原因)

代码题:
c++如何定义一个不能继承的类(构造方法私有?但是转念一想这样就不能实例化了。。写了个构造方法私有+static工厂方法去实例化)
有序链表合并,跳过简单版本,写k个链表合并,先(故意)写成O(nk)然后再用堆优化成O(nlogk)[手动狗头]
(说到有序链表合并这个东西,最近information retrieval写过一次,数据库内核写过一次,快有肌肉记忆了哈哈哈哈,10min搞定)

时间刚好一小时,反问:
PG里面的页,插入数据的时候是从后面插入的,能讲一下吗?(梅开二度,狗头
面试官:其实我也不知道哈哈哈哈,自己工作不用PG,不过很久前看到过

问进去后工作内容会是啥,说投的是中台大部门,要看后面分配,面试官自己的部门是做搜索的,其他部门也有做登陆的。我说最近刚好也在学information retrieval,希望能做搜索相关的hhh

字节中台 后台实习 二面

自我介绍,实习开始时间时长,大三计划,大四能不能实习(?问这么远干嘛我一日常。。)
聊数据库,mysql索引的结构(b+tree),原理作用。为啥用b+tree不用其他结构
前面提到了有时候索引的大小会比原来的数据还大,举例?
如果是一样的数据,有序插入和随机插入,对于索引来说哪一种更好一些(答有序,插入会大体集中在同几个node上,磁盘cache友好,最后的node空间利用率也更高。随机会随机访问node,而且node分裂也不集中)
c++里面的多态是什么?讲了类和函数的多态,虚表、重载
public、private、protected的作用,需要运行时去校验吗?答不用,编译期可以校验。
虚表,虚指针在什么位置?实例里虚指针指向同个类的对象共享的虚表,虚表在全局的一个段内,虚指针取决于编译器可能在对象的头或尾
如果要动态决定对象类型,类型信息放在哪里?虚表内,RTTI信息
结合访问控制和虚表,如果获取到了虚指针,可以越权去调用private方法吗?按照自己的理解答了可以,只需要自己算出方法指针的offset就行了(按照底层理解猜测的,不百分百确定是对的
c++提issue那个简单讲一下(然后边讲讲快完之前面试官自己去翻博客看完了😭

64马赛马8次一组,决出前4名最少次数?8+4+2+1=15次,还有更优的嘛?(好家伙,现场想了10来min没想出来,只想到了可以拿前8次的第一名去比,上网查才发现这问题已经被问烂了)
矩阵左上角走到最下角最小路径和,为了写得快写了dfs,分析时空复杂度,其他方法说了bfs,因为都是非负的,可以把值看成边,然后dijkstra

反问:一般有几轮面试,部门做什么的

这一面的面试官有一种老教授的威严的感觉,还有赛马那道题卡了有点久,感觉有点拉垮

字节中台 后台实习 三面

自我介绍 实习时长,能否长期实习超过一年(emmm太远了说不定
之前实习做了啥(聊得比较久,10min)
c++98到现在都有什么东西
就讲了shared_ptr对比auto_ptr和未加入的module
module聊了一下大概长什么样子,会怎么实现?
提的那个enum redefinition issue说一下(听我吹完了,感觉最后听到只是一个 standard oversight 的时候好像有点失望哈哈哈哈)
为什么有协程,引申到栈,是否了解过无栈协程(没听过),从抢占和协作式引申,相比线程

题:出现字符种类数小于k的最长子串

全程就只有40min,面试官听说是部门大boss,问部门做什么的的时候也是说得比前面两个面试官广很多然
然后人很年轻,又感觉很严格的样子,气场强大

256

22.5.11 字节 飞书后端 成都 二面(已过)

个人:

  • 二本 24届 ACM 选手(银川济南铜,昆明银),CF 2100+
  • 4.17 刚拿到银摸了一周,四月底才开始看八股和面经(菜死)。
  • 朋友推的成都字节(北京也有学长推,但是太菜简历捞不起来)。
  • 一面的面经戳这

面试内容:

编程题

力扣2266 统计打字方案数 中等

力扣2267 检查是否有合法括号字符串路径 困难

介绍一下第一道题的写法。

//上来就要求做最新周赛的最后俩道题(怎么不怕我做过。。)
20 mins 切完,俩道 DP,就是第二题 WA 了一发 79/81。

操作系统:

  1. 了解过线程和进程吗
  2. 用户态和内核态了解吗
  3. 平时用过 Linux 吗
  • 有做过多线程和多进程的实验或项目吗

网络:

  1. 有 socekt编程 经历吗
  2. 视频面试的过程使用了哪些协议
  • NAT 是什么
  • 上面讲的哪些有研究过,websocket 有研究过吗
  • 有了解过 websocket 的大概过程吗
  • ARP 协议有了解吗
  1. 有做过一些 web 服务吗

编程语言:

  1. 了解过汇编吗
  2. 一个 exe 文件被加载到操作系统执行,大概的过程是怎么样的

数据库:

  1. 索引空间用哪些数据结构
  2. 常用索引的数据结构

其他:

  1. 计算机基础还有哪些你熟悉但是没有问到的
  2. 除了做题,计算机这一块还有什么感兴趣的
  3. 平时看哪方面的书

反问:

  1. 对自身学习的建议(其实想间接问面评)

    具体部门比较看重(应届生):
    1.写代码能力(说我做的比较不错),2.业务功能(要求有一定了解),3.沟通能力(个人性格)。

感受:

一开始就做算法题,而且 AK 比较快,所以后面信心大增。

虽然基础部分还是会的不多(甚至都问我还会什么了),但整体面完以后感觉还是比较稳。

希望能过三面 orz(算法题拉满求求了)

257

字节跳动 飞书 后端开发实习 一面 面经

base:北京

3月17日 投递简历

3月27日 笔试(83/100)

4月7日 一面 17:40 - 18:25 45分

  • 面试官人很帅,非常nice,介绍了一下自己的工作和部门氛围(go语言)
  • 自我介绍,实验室的项目,负责的工作
  • mysql索引失效的情况,提到了为什么索引失效
  • 说一下B+树的查找原理,回表
  • 说一下乐观锁和悲观锁:说了java的乐观锁(CAS),悲观锁(JUC);mysql的乐观锁(undo_log)和悲观锁(当前读);
  • mysql乐观锁和悲观锁的隔离级别
  • 说了一下四种隔离级别
  • 乐观锁到底有锁吗

所有问题回答的都很流畅,面试官说能看出来背的痕迹 QAQ

问我算法怎么样?我说一般。面试官追问刷了多少力扣? 380+

  • 编程题:验证二叉搜索树(中等)

反问:

  • 前面面试官已经介绍的很详细了,就反问了一下前端的技术栈:React

期待有下一面,哎。今年实习太难找了

258

飞书交付后端三面

字节三面面经(飞书交付后端,30min)

1.volatile原理

2.aps原理(state+双向链表阻塞队列)

3.aqs有没有用到volatile? 哪里用到?为什么用到?(有,state,保证同步安全)

4.CountDownLatch说一下(倒计时器,控制线程等待)

5.CycliBarrier说一下(循环栅栏,一组线程达到同步点阻塞等待同组其他线程)

6.(说了一串没听过英文名词)(回答不会)

7.k8s和docker说一下(不会)

8.redis是不是单线程(答,是)

9.追问:redis为什么用单线程(避免上下文切换)。

10.追问:竟然是单线程怎么处理高并发请求(Reactor网络框架)

11.说一下reactor网络框架(select+read+业务处理+write)

12.select是什么(Linux内存拷贝的系统调用)

13.Linux内存拷贝的系统调用除了select还有啥(poll,epoll)说一下三者的原理区别(有点多,省略)

14.算法题:合并有序链表

259

字节跳动后端一面凉经

今天下午一面,项目没问具体实现原理,只问了两个八股, 然后连续出了三道算法题(勉强写出两道),我这样是不是要凉了。。。

项目经验

项目是一个SSO开源项目,简单介绍了之后问了一些用途

  1. 数据库用的是客户的数据库还是项目提供的(SAAS还是自建项目)。
  2. 数据是在本地还是第三方
  3. 你在这个项目里遇到比较难的, 共享比较大的。
  4. 目前有哪些公司用了你们的项目(回答了字节、阿里的一些部门)
  5. 后面有一个大学的ai类项目,面试官应该理解错项目题目了, 后来就跳过了

八股

  1. 线程进程区别
  2. TCP UDP 区别

就问了这么多, 我背了一堆八股都没用上, 啃下来的Go 垃圾处理之类的内容也没用到。。。

编程题

先问我有没有玩过ACM, 我说没玩过有点遗憾,面试官笑了

  1. 给定一个数组A,长度为n,求将其分成3个和相等的连续子数组的方案数(子数组互不相交且全覆盖A)。 (思路是前缀和,没写出来,后来让换题了)
  2. 二分查找, 有重复数字, 求target第一个出现的位置。(比较简单, 但是处理第一个位置的时候,没处理好,卡了好一会)
  3. 数组是否有中出现次数超过一半的数字,类似剑指offer39,我说可以用hash, 他说有没有更好的方法,一开始没想到,就先用hash写了, 后面用摩尔投票法优化了(但是最后一点点优化没写完,时间不够了)

反问

  1. 问了第一道题思路,他回答前缀和
  2. 大半时间都在写题,我其他方面怎么样(回答作为在读,项目经验已经很好了,但是相比企业肯定还有不足)
  3. 那我应该怎么提高呢?(项目只能找实习提高,算法只能多练了)

有点疑惑, 为啥八股就问那么少。。是不是被KPI了。

到此牛客字节和阿里面经全部完毕

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值