📍面试公司:掌阅科技一面
💻面试岗位:服务端开发
❓面试问题:
1、网络七层协议
2、平时用到哪些协议
3、ipv6的定义与ipv4的区别
4、BGP、OSPF协议
OSPF一种 内部网关协议(IGP),常用于 自治系统(AS)内部,基于 链路状态算法(Dijkstra 最短路径算法) 来计算最优路径。
BGP(Border Gateway Protocol)一种 外部网关协议(EGP),主要用于 自治系统之间 的路由选择,属于路径矢量协议,互联网核心路由协议。
5、进程和线程的区别
6、非静态内部类访问外部类的原理 (有点猝不及防 脑子一下有点宕机)特此复习一下
在 Java 中,非静态内部类(Inner Class) 可以直接访问外部类的成员(包括 private
修饰的)。
比如:
class Outer { private String name = "outer"; class Inner { public void print() { System.out.println(name); // 直接访问外部类的私有字段 } } }
背后原理:,非静态内部类会隐式持有一个对外部类实例的引用。
- 在字节码层面,Inner 类会有一个 合成字段:
- 当创建内部类实例时,必须依赖一个外部类实例:
- 编译器会把对外部类成员的访问,转化为通过 this$0 字段来访问:
也就是说,Inner
实际是借助外部类引用来访问外部类的属性和方法。
final Outer this$0; // 保存外部类的引用 Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); // 编译器自动传入 outer System.out.println(this.this$0.name);
补充:
私有成员访问的特殊处理,
- 外部类的
private
成员,内部类也能访问。这是因为 编译器在编译时会生成合成的access$xxx
方法,供内部类调用。
静态内部类为什么不能访问 外面的实例变量?
静态内部类能访问什么?外部类的静态成员(字段、方法)。
7、线程池相关八股
8、java反射相关
9、字节码的生成和修改 (答得不好 脑子一热就先讲字节码的内容有哪些了)特此学习:
字节码的生成方式:
javac HelloWorld.java # 生成 HelloWorld.class
- JDK 自带 API:JavaCompiler(编译源码字符串成字节码)。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, "HelloWorld.java");
- ASM / Javassist / Byte Buddy:直接在内存中生成字节码,不需要源码。
- cglib:基于 ASM 封装,常用于动态代理。
字节码的修改(字节码增强):
这里美团技术团队 有这个技术完善的描述:https://tech.meituan.com/2019/09/05/java-bytecode-enhancement.html
10、java内存管理机制(内存区域划分、年轻代、老年代、GC垃圾收集--在对象存活判定上有点卡壳)
11、操作系统中的内存碎片
12、如何排查线上GC问题(没说gc-log 直接说的使用链路监测和arthas)
13、java动态代理 jdk-cglib 只说了基本的概念和对应的区别,细节用法没说出来
14、mysql的性能优化
15、mysql的故障恢复 (说了redo log 恢复 发现面试官脸色不对 )
16、mysql 主从复制延迟
算法:回文素数--- 本人此时因为傻逼 把题目给的回文例子 去验证它的素数属性 发现半天校验不过素数,最后面试官看不下去了 笑着给我说 你刚刚验证的貌似不是素数啊。
🙌面试感想:第一次遇到全程八股,感觉自己还有很多细节没学到位。还有就是不知道是不是我这边电脑的问题面试官的几次说的话都很糊 让面试官重复了几次。 害,这把玩崩了。
全部评论
(3) 回帖