零零散散记得一点面试问题
快手一面:主要是网络,操作系统,java基础,多线程,jvm,linux基本命令,算法。
操作系统:
1.页式存储
2.将磁盘中的文件读取到内存中,会经过哪些存储结构
3.操作系统中的三级缓存
网络:
1.tcp三次握手
2.网络分层
3.tcp,udp,http区别
4.如何判断丢包,丢包算法。
5.如何控制传输的数据量大小。
6.视频通话属于tcp还是udp,为什么。
java基础:
1.常用的容器,特点
2.TreeMap,HashMap底层实现,适用场景
3.Queue常用实现类
4.线程安全的容器,多线程环境下的几个常用容器
5.内存溢出监测,查看,如何找到溢出位置。
多线程:
1.加锁
2.读写锁、CAS锁
JVM:
1.java虚拟机中的内存结构,每个区分别存放内容。
2.为什么java程序能够跑在物理机上。
算法:
1.一个可容纳10个小球的容器,A,B,C三个人分别不停往容器中放红、白、黑三种颜色的小球,当容器满时,小球数量最多的颜色的小球被收走,用java程序模拟该过程。
2.N个面包,有三种吃法,一次吃一个,一次吃两个,一次吃三个,如果把N的面包全部吃完,求所有的吃法序列。
3.从上向下打印出二叉树中每层的最右节点。
快手二面:主要是操作系统,网络,算法
网络:
1.如何实现rpc协议
2.拥塞控制
算法:
1.有n个女生,n个男生,保证在i位置处,前面(i-1)位置上的女生数量不小于男生数量,给出所有排序序列。
2.给定一个递增数列,从某一位置截断,将截断位置的前后调换,形成新的序列,从其中找到最大的数的位置。时间复杂度要低。
其他:
1.数组,链表(底层,优缺点,适用场景)
2.锁实现原理
3.线程竞争
4.java内存模型
5.动态加载、静态加载
6.cglib
6.数据库索引、最左前缀、优化方式、锁、区分度
7.给一张表,有一个字段的取值只能为0或1,现要求将0全部换为1,1全部换成0