最近有很多公司都开始了秋招提前批,像字节、阿里、百度、京东、拼多多等很多大厂都开放了很多岗位。很多 22 届应届生也都跃跃欲试,而且提前批的好处是不仅能更快走完全部流程,更快拿到 offer,而且即使挂了,也不会影响接下来的正式批,在正式批仍然可以正常进行投递,也就是说相当于多了一次机会,有一张复活卡,难道不香吗!
说到这里,我给大家介绍一位朋友,他在字节跳动的提前批,4 天就拿下了 offer,接下来分享一下他面试过程的 部分面试题,给接下来想要面试字节或者其他相关互联网公司的小伙伴们做个参考。
这里我针对这些面试题也给大家整理了相关的解答,分享给大家学习参考。
这里的答案有些只给了大致的方向或者相关知识点,由于篇幅原因(小声 bb:以及作者知识有限),这里就不全部展开去谈了~
对了,补充说明一下,我这位朋友面试的是后端开发
,不过这里我还想再说一点,就是对于应届生
来说,面试官更注重你的基础,也就是对于相关技术栈的底层的一些知识,所以不管是前端、后端、测试,又或者是嵌入式相关岗位,都离不开以下这几个方面的内容:
-计算机网络
-操作系统
-算法与数据结构
除了这几个内容之外,就是针对不同的岗位的一些相对应的技术栈、知识点,这些都需要有所准备。
1.一面
主要聚集点:Mysql、Redis、操作系统、计算机网络等
1.1自我介绍
1.2项目经历
1.3算法题
1.4进程和线程的区别?
进程:资源分配的最小单位。
线程:独立调度的最小单位。
1.5你了解哪些锁?
1.6 死锁的四个必要条件?
1.7 volatie与sychronized的对比?
1.8 volatie的应用场景?
单例模式(懒汉式)
public class Singleton {
private volatile static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class) {
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
1.9 虚拟内存了解吗?与物理内存的区别?
虚拟内存就是一块虚拟的空间可以给用户存放数据,如果让用户直接去操作物理内存的话,不同用户彼此不知道他使用了哪块物理内存空间,就会造成冲突。
有了虚拟内存之后用户就可以将数据直接在虚拟内存操作,而不需要关心这些内存最终会映射到操作系统哪些物理内存上。这个映射的操作是操作系统完成的,用户不感知。那下面就顺便讲下操作系统是如何完成虚拟地址和物理地址之间的映射的。
这里面涉及到一个叫做 “页表” 的概念。进程访问虚拟内存,CPU 执行时通过分页机制转换成物理内存访问,虚拟地址到物理内存的转换表称为页表,这个转换是个查表的过程。
同一程序运行起来的两个进程,虚拟地址空间相同,但对应的物理空间是不相同的。OS 需要给每个进程设置一份页表,在进程调度过程中,上下文切换阶段会做页表的切换。
小总结:页表就是一个用于将虚拟地址转换为物理地址的工具。
此时又来了一个新的家伙,叫做 “快表”,**那快表是干嘛用的呢?**快表是为了加快虚拟地址到物理地址这个转换过程而存在的。快表一般存放在 CPU 内部的高速缓冲存储器 Cache 中。
快表与页表功能很类似,就是将一部分页表存到 CPU 内部的 Cache 中。CPU 寻址时先根据虚拟地址中的页号&