这次给大家带来的是牛客一位昵称为一条咸鱼游啊游的朋友分享的面经,勾玉在这里做出分析解答,一起看看吧~
巨短的腾讯一面·Java·后台实习
好久以前投的,投了20多天突然被捞了。第一次遇到这么短的面试,加上算法不到半个小时。
1.也没让我自我介绍,开头直接问我实习时间。
2.你平时用什么语言(Java)
3.类加载过程
参考勾玉文章 面试八股文之【JVM类加载机制】
4.类加载器,双亲委派
参考勾玉文章 面试八股文之【JVM类加载机制】
5.JVM怎么调优(???可以修改一些参数) 具体修改哪些参数?(比如有个大对象进入老年代的设置,Hotspot默认是0,这个可以改一下)
推荐阅读该博客: https://blog.csdn.net/weixin_42447959/article/details/81637909
6.单例模式怎么实现。(讲了两种)问我优缺点。
一种懒汉式,一种饿汉式, 饿汉式:
代码语言:javascript复制public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
懒汉式:
代码语言:javascript复制public class Singleton {
/* 私有构造方法,防止被实例化 */
private Singleton() {
}
/* 此处使用一个内部类来维护单例 */
public static Singleton getInstance() {
return SingletonFactory.instance;
}
/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */
public Object readResolve() {
return getInstance();
}
private static class SingletonFactory {
private static Singleton instance = new Singleton();
}
/* 获取实例 */
}
还有更完美的写法吗,通过枚举:
代码语言:javascript复制public enum Singleton {
/** * 定义一个枚举的元素,它就代表了Singleton的一个实例。 */
Instance;
}
7.学过操作系统吗(学过)
8.讲讲操作系统进程调度(Linux有单独的调度器线程,讲了Linux的CFS完全公平调度算法,还讲了《linux内核设计与实现》老版本的linux的多级反馈队列算法)
这里最好回答完6种进程调度算法:先来先服务调度算法、最短作业优先调度算法、⾼响应⽐优先调度算法、时间⽚轮转调度算法、最⾼优先级调度算法、多级反馈队列调度算法
9.讲讲操作系统的内存管理(讲了xv6的空闲链表,Linux的buddy system和slab分配器)
推荐阅读:https://www.cnblogs.com/CareySon/archive/2012/04/25/2470063.html
10.怎么保证线程安全(加锁)
11.linux有哪些锁
mutexlock, spinlock, semaphore信号量,以及他们对应的读写锁
12.除了加锁还有什么保证线程安全的方式吗?
cas、volatile、Lock,可以参考我的 并发基础之CAS
13.你项目的流量控制和拥塞控制怎么做的?(流量控制滑动窗口,拥塞控制实现的比较简单,是简单的指数退避)
14.两个主机建立连接,一个主机宕机,另一个主机会怎么做(断开连接),马上断开吗?(等待一个timeout时间),这个时间是多少?(不清楚)
客户端宕机后服务端由于得不到回应,将触发超时重传机制,重传未响应的报文。如果宕机恢复了,就会回一个rst报文,重置这个tcp连接;如果没恢复,重传没有响应,就会在一定的重传次数后通过socket告知应用程序该tcp故障。该时间不定,具体要查看linxu内核参数。
15.UDP能携带的数据最大长度是多少?(不太清楚,猜测可能是2^16-1)
因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535。udp包头占8字节, ip包头占20字节, 65535-28 = 65507
完事后也没有让我反问,流程有点奇怪。感觉怪怪的又说不上哪里奇怪orz。面完一度怀疑我是不是被KPI面了(?)喜欢请点个赞或者再看,感谢~