首页 > 4.1字节暑期实习一面等通知经
头像
2021.3.10
编辑于 2021-04-03 20:31
+ 关注

4.1字节暑期实习一面等通知经

字节跳动暑期实习不知是面是凉经

  1. 介绍一下自己(balabala)
  2. 聊一下linux吧,常用命令了解吗。
  3. 虚拟内存的理解。
  4. 线程和进程的区别,为什么要有多线程。
  5. CPU 密集型和 IO 密集型了解吗(我不会,面试官和我大概的讲了一下)。在这两种场景下该如何分配线程池
  6. 讲JVM的运行时数据区,类加载机制讲一下。
  7. JIT了解吗,为什么需要 JIT,我编译后运行不是速度更快?
  8. TCP为什么要三次握手,四次挥手?
  9. TCP面向连接的,可靠的。那我要用UDP实现传输可靠可以吗,讲一下思路。
  10. 算法题,判断是否是回文链表(时间复杂度和空间复杂度要求最好)。
  11. 反问。

以下是我自己的回答,仅供参考😶

  1. 没有项目经验,面试官也知道在学校里一般接触不到什么项目,实习生也不太要求这个,注重基础的掌握。
  2. linux 实在不怎么用,玩过几下虚拟机。
  3. 虚拟内存是一种很重要的思想技术。CPU 在进行访问内存时,通过虚拟地址来访问,CPU 内的页表寄存器存储了进程的页表位置,通过该寄存器找到页表后,从页表里找该虚拟地址对应的实际物理页号:
    • 如果有就通过物理页号与偏移量结合得到实际的物理地址,CPU 再从实际物理地址中获取数据。
    • 如果没有则触发缺页中断,系统由用户态转为内核态,内核去将所需的数据存入内存,此时页表中就存有我们所需数据的物理页号。即第一种情况。
    • 为什么要有虚拟内存? 如果没有虚拟内存,那么程序运行时就必须知道自己所在的运行环境的内存大小等信息,否则可能发生访问内存越界等问题,显然这是很麻烦的一件事。但假如使用虚拟内存,那么程序就无需考虑这一点,内存的分配完全交给内核去分配,程序只需要提出内存申请即可,这也是解耦的一种思想。
  4. 线程是 CPU 分配任务的基本单元,进程是分配资源的基本单元。一个进程可能包含多个线程,线程可以共享进程中的资源。多线程可以提高 CPU 的利用率。灵活使用多线程可以充分例用系统资源。
  5. CPU 密集型指的是程序需要充分例用 CPU 资源来进行运算,例如矩阵运算等。IO 密集型是指程序主要进行 IO 操作。CPU 4核的情况下,CPU 密集型的话线程分配可以比核数多一点的线程(五六个),IO 密集型的话可以多分配一些线程,例如8个线程,因为这些线程不太需要 CPU 运算,可能大部分都是处在 IO 阻塞状态,如果线程数较少的话, CPU 大部分时间都会被闲置。
  6. 八股文
  7. Java是半编译半解释型语言,启动时使用解释器运行,如果哪一部分代码使用频率很高,那么使用次数在触发一个阈值时,jvm会将该代码编译成本地机器码。下次执行到时直接使用本地机器码来运行。如果一个项目很大,那么全部编译的话时间需要很久,使用解释器可以快速启动。
  8. 八股文
  9. 再写一层协议,将 UDP 包装成 TCP。
  10. (回文链表)[https://leetcode-cn.com/problems/palindrome-linked-list/]
  11. 我离成为一名实习生,还欠缺什么。如果我暑期找不到实习,那我暑假该如何利用,学习哪方面的知识。

更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐