8月7号下午面试,面试时间在1个小时左右。一面问的会比较基础,都是八股内容,考察个人机组,操作系统,计网,语言和开发的学习是否牢固。
没有自我介绍,面试官比较随和。
- 线程和进程的区别,为什么有线程:
- 进程是操作系统分配资源的基本单位,可以拥有多个线程,线程是进程内的一个相对独立的执行单元,是程序的最小执行单位;
- 二者资源分配上的区别,包括在JVM中的空间分类;
- 多并发的执行
- 二者的通信,进程通信(管道,共享内存),线程通信(消息队列等);
- 互斥锁的理解:
- 当多个线程需要同时访问共享资源时,如果没有适当的同步机制,可能会导致数据不一致性和竞态条件等问题。互斥锁提供了一种互斥访问的方式,即在任意时刻只有一个线程可以获得锁,获得锁的线程可以进入临界区执行操作,其他线程则需要等待。
- 线程没拿到互斥锁的时候,会被阻塞,直到获取到锁为止。
- 信号量理解:
- 信号量的定义:信号量允许多个线程同时访问共享资源,但可以通过计数器的值来限制同时访问资源的线程数量。
- 信号量的类型:
- 二进制信号量
- 计数信号量
- 虚拟内存的理解:
- 内存分段
- 内存分页
- 共享内存原理
- 计网经典TCP和UDP的区别和特点
- 一个HTTP的请求内容包括:
- 请求行:HTTP的方法、目标URL、协议版本
- 请求头:Host、User-Agent等
- 请求体:一般写网络请求接口PUT、POST时候都会有用
- Http是长连接吗?
- 不是长连接,1.0之后默认短连接
- 想要持久连接,要保持心跳
- 面向对象三大特点:
- 封装,继承,多态
- 多态在JAVA中的体现:
- 重写和重载
- Java是值传递还是引用传递?
- 手写Java的单例模式线程安全的情况:
- 饿汉,懒汉,双重检验锁(各自优缺点)
- 算法题:
- 二叉树的中序遍历,递归,非递归两种写法
- 实现一个场景题,所有人把自己想要约会议的时间给你,你要算出最少需要多少间会议室可以容纳这些会议,输入会议开始时间和结束时间组成,输出为一个整数。
- 我用的贪心遍历一遍
- 面试官表示可以用同一个时间轴来考虑
#快手##客户端##面经#