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

字节飞书后端日常实习 一面
最新回答
夙词欢

2026-05-08 11:31:16

字节飞书后端日常实习一面主要涵盖自我介绍、计算机基础知识、Java并发与数据库知识、算法题以及反问环节,整体面试难度较高,对知识掌握的深度和广度都有一定要求,且面试岗位虽为Go但也会考察Java知识。 以下是对面试各环节的详细分析:

自我介绍
  • 面试开场通常会要求进行3 - 5分钟的自我介绍。这是给面试官留下第一印象的重要环节,需要清晰、有条理地介绍自己的教育背景、相关项目经历、技能特长以及求职动机等内容,突出与应聘岗位相关的优势和经验。
计算机基础知识
  • TCP的可靠性实现

    涉及可靠数据传输(rdt)、流量控制、拥塞控制等方面。可靠数据传输通过序列号、确认应答、超时重传等机制保证数据的准确传输;流量控制使用滑动窗口协议,防止发送方发送数据过快导致接收方缓冲区溢出;拥塞控制则通过慢开始、拥塞避免、快重传、快恢复等算法避免网络拥塞,确保网络的稳定运行。

  • 线程通信

    synchronized:是一种同步锁,用于实现线程间的互斥访问,保证同一时刻只有一个线程可以访问被同步的代码块或方法。

    volatile:保证变量的可见性,即当一个线程修改了该变量的值,新值会立即被其他线程看到,但不保证原子性。

    管道输入/输出流:是一种特殊的输入输出流,用于在不同线程之间直接传输数据,实现线程间的通信。

    ThreadLocal:为每个使用该变量的线程提供一个独立的变量副本,每个线程都可以独立地改变自己的副本,而不会影响其他线程对应的副本,解决了线程间的数据隔离问题。不过面试者不记得wait()/notify()和join()方法,这两个方法也是线程通信和同步中重要的知识点,wait()/notify()用于线程间的协作,join()用于等待一个线程执行完毕。

Java并发知识
  • Java并发里的锁

    乐观锁:认为并发操作不会经常发生冲突,在读取数据时不加锁,只在更新数据时判断是否有其他线程修改了数据,常用的实现方式是CAS(Compare - And - Swap,比较并交换)。

    悲观锁:认为并发操作经常会发生冲突,在读取数据时就加锁,保证同一时刻只有一个线程可以访问数据,常见的悲观锁有synchronized和ReentrantLock等。

  • 线程池的参数及处理流程

    参数:常见的线程池类型有SingleThreadExecutor(单线程线程池)、FixedThreadPool(固定大小线程池)、ScheduledThreadPool(定时任务线程池)、CachedThreadPool(可缓存线程池)等。线程池的重要参数包括核心线程数、最大线程数、线程空闲存活时间、任务队列等。面试者没有答全参数,以FixedThreadPool为例,当有新任务提交时,如果当前线程数小于核心线程数,会创建新线程执行任务;如果当前线程数等于核心线程数,会将任务放入任务队列;如果任务队列已满且当前线程数小于最大线程数,会创建新线程执行任务;如果当前线程数等于最大线程数且任务队列已满,会触发拒绝策略。

数据库知识
  • MySQL的事务

    事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性指事务是一个不可分割的工作单位,事务中的操作要么都做,要么都不做;一致性指事务执行前后,数据库从一个一致状态转变为另一个一致状态;隔离性指多个事务并发执行时,一个事务的执行不能被其他事务干扰;持久性指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。面试者在回答持久性时磕巴,持久性是通过日志实现的,主要是redo log(重做日志)和undo log(回滚日志),redo log记录的是事务对数据库所做的修改,用于在数据库崩溃恢复时保证事务的持久性。

算法题
  • 力扣最短无序子序列,要求用On复杂度实现

    面试者一开始想到的是nlogn复杂度的解法,在面试官引导下尝试实现On复杂度的解法,但存在边界问题。该问题的On复杂度解法通常可以通过找到无序子数组的左右边界来实现,具体思路是分别从左到右和从右到左遍历数组,找到第一个不满足递增和递减顺序的元素位置,从而确定无序子数组的范围。

反问环节
  • 这是面试者向面试官了解公司和岗位信息的机会,可以询问关于团队氛围、项目情况、技术栈、实习生的培养计划等方面的问题,以便更好地了解该实习岗位是否适合自己。
面试建议
  • 由于面试岗位虽为Go但也会考察Java知识,且整体面试难度较高,所以准备不够充分的话可能会影响面试结果。建议面试者在面试前对计算机基础知识、Java并发与数据库知识进行系统复习,同时多练习算法题,提高解题能力和对边界条件的处理能力。