字节飞书二面
算法题: 1, 2, 5, 10 硬币组成n元的组合方式
答: 完全背包的动态规划, 但是递推公式有点问题, 没做出来, 应该是求出用不用第i硬币的加法而不是取max
类似:********************************************************
问题
1. 上次面试有哪些不会?学了吗?
2. 什么情况下数据会进入老年代?
3. JVM老年代会不会被GC?
4. 为什么GC要分成不同的年代?
5. GC的分代内存是连续的还是零碎?各有什么好处?坏处?
6. 数据链路层、网络层、传输层为啥要分层, 各层的职责
7. 那为啥要分呢, 不分不是更好
8. 传输层 什么是链接?
9. 如果网络某一个路由器断开3s, 链接还存在吗?
10. 进程间通信方式共享内存, 进程A 存放字符串的指针, 进程B读指针,然后print(指针) 会打印出什么?
11. 你能讲讲你个人的优势在哪里?
回答:
1. 上次关于JVM进程的详解没有讲清楚, 这次详细讲解了new 一个对象的全过程
● 类加载检查, 看下这个对象所属的类有没有加载、链接、初始化成功, 否则先加载类(JVM类加载具有动态加载的特性)
● 分配内存, 分配方式根据内存模型的规整与否(关系GC的选择)
● 内存零值赋值
● 初始化对象头,包括这个对象的年龄代、字面量、属于哪个类的元数据等, 其实就是标记字段 + 类 指针
● Init(), Java程序看起来,对象的创建函数,字段init(), 对象的地址分配给引用变量
● JVM内存模型分为不同的年龄代, Eden Survivor Old等
● 年龄代存在对象头中, 用于记录GC情况, 当一个对象对于GC Root没有被引用的地方,即不可达时, 会被标记, 后续再次会被删除
2. Eden在经过一次MoniGC 还存活的对象进入S0、S1区, 年龄+1, 年龄超过GC器阈值(0 -15)可以进入老年代, 同时大对象也可以进入老年代
3. 会。被回收的直接原因是因为对象的引用可达性不存了,GC一般分为部分GC和Full GC, 部分GC可以在单独的Eden、Old乃至混合区域GC,如果内存不够还会触发Full GC 引用不可达的老年代对象一样会被删除
4. 不同年代内存区域有各自的适用范围, 比如Eden每时每刻都会有大量的对象死去, 适用用标记-复制, 而老年代对象存活时间较长, 用标记-清除、标记-整理更好, 分代GC效率更高
5. 零碎的。零碎的好处是空间利用率高, 只需要一个逻辑标识就能知道是哪个年龄代, 坏处是没有利用好空间局部性。连续的好处是利用了空间局部性, 但是容易有碎片。
6. 有点问穿, 数据链路层的基本单位是数据帧, 用于咋局域网内的物理机器地址mac传输, 网络层是在不同的子网内ip传输, 传输层是在找到了应用端间口建立的稳定或者不稳定的链接
7. 。。。。我回到是耦合性, 解耦了, 不同层有不同的协议解决各自的问题, 混沌系统太复杂的很难排查, 分层每次只需要接受下层接口,给上层提供服务就行,而不用关心实现细节
8. 我认为的链接是指在目标端口的过程中, 无论是IP协议会在不同路由器留下转发映射, 还是APR协议留下目标MAC IP转换, 在逻辑上是有一条通路的, 这就是链接
9. 我认为如果路由器的ip映射也消失了, 就会断开链接, 如果没有不一定会断开, 还会重新去找路径链接, 如果在没有超过ACK确认的时间内找到了则不会断开(这段感觉在胡言乱语)
10. 这不太会, 我答的是地址或者HashCode, 提到了很多虚拟地址的情况, C++相关的问题, 后面查资料是因为每个进程的虚拟地址空间不一样, 进程B是打印不对的
11. 从个人专业学习、工程经验、团队经验、个人性格四个方面回答
答: 完全背包的动态规划, 但是递推公式有点问题, 没做出来, 应该是求出用不用第i硬币的加法而不是取max
类似:********************************************************
问题
1. 上次面试有哪些不会?学了吗?
2. 什么情况下数据会进入老年代?
3. JVM老年代会不会被GC?
4. 为什么GC要分成不同的年代?
5. GC的分代内存是连续的还是零碎?各有什么好处?坏处?
6. 数据链路层、网络层、传输层为啥要分层, 各层的职责
7. 那为啥要分呢, 不分不是更好
8. 传输层 什么是链接?
9. 如果网络某一个路由器断开3s, 链接还存在吗?
10. 进程间通信方式共享内存, 进程A 存放字符串的指针, 进程B读指针,然后print(指针) 会打印出什么?
11. 你能讲讲你个人的优势在哪里?
回答:
1. 上次关于JVM进程的详解没有讲清楚, 这次详细讲解了new 一个对象的全过程
● 类加载检查, 看下这个对象所属的类有没有加载、链接、初始化成功, 否则先加载类(JVM类加载具有动态加载的特性)
● 分配内存, 分配方式根据内存模型的规整与否(关系GC的选择)
● 内存零值赋值
● 初始化对象头,包括这个对象的年龄代、字面量、属于哪个类的元数据等, 其实就是标记字段 + 类 指针
● Init(), Java程序看起来,对象的创建函数,字段init(), 对象的地址分配给引用变量
● JVM内存模型分为不同的年龄代, Eden Survivor Old等
● 年龄代存在对象头中, 用于记录GC情况, 当一个对象对于GC Root没有被引用的地方,即不可达时, 会被标记, 后续再次会被删除
2. Eden在经过一次MoniGC 还存活的对象进入S0、S1区, 年龄+1, 年龄超过GC器阈值(0 -15)可以进入老年代, 同时大对象也可以进入老年代
3. 会。被回收的直接原因是因为对象的引用可达性不存了,GC一般分为部分GC和Full GC, 部分GC可以在单独的Eden、Old乃至混合区域GC,如果内存不够还会触发Full GC 引用不可达的老年代对象一样会被删除
4. 不同年代内存区域有各自的适用范围, 比如Eden每时每刻都会有大量的对象死去, 适用用标记-复制, 而老年代对象存活时间较长, 用标记-清除、标记-整理更好, 分代GC效率更高
5. 零碎的。零碎的好处是空间利用率高, 只需要一个逻辑标识就能知道是哪个年龄代, 坏处是没有利用好空间局部性。连续的好处是利用了空间局部性, 但是容易有碎片。
6. 有点问穿, 数据链路层的基本单位是数据帧, 用于咋局域网内的物理机器地址mac传输, 网络层是在不同的子网内ip传输, 传输层是在找到了应用端间口建立的稳定或者不稳定的链接
7. 。。。。我回到是耦合性, 解耦了, 不同层有不同的协议解决各自的问题, 混沌系统太复杂的很难排查, 分层每次只需要接受下层接口,给上层提供服务就行,而不用关心实现细节
8. 我认为的链接是指在目标端口的过程中, 无论是IP协议会在不同路由器留下转发映射, 还是APR协议留下目标MAC IP转换, 在逻辑上是有一条通路的, 这就是链接
9. 我认为如果路由器的ip映射也消失了, 就会断开链接, 如果没有不一定会断开, 还会重新去找路径链接, 如果在没有超过ACK确认的时间内找到了则不会断开(这段感觉在胡言乱语)
10. 这不太会, 我答的是地址或者HashCode, 提到了很多虚拟地址的情况, C++相关的问题, 后面查资料是因为每个进程的虚拟地址空间不一样, 进程B是打印不对的
11. 从个人专业学习、工程经验、团队经验、个人性格四个方面回答
全部评论

这个确实好难啊 好多都是非高频问题
mark
佬这是base哪里的飞书啊

请问是飞书文档吗

相关推荐
点赞 评论 收藏
分享
03-11 09:58
门头沟学院 测试开发 点赞 评论 收藏
分享