字节飞书java后端 一面凉面

垃圾一本。
接到电话之后约了两周以后,中间给我发了一封感谢信,我以为面试取消了,结果当天又收到了面试,没有准备直接GG,水平太差还被以为是大二的。

1.说一下GC

大概说了gc就是垃圾回收,当一个对象不再被强引用或者软引用内存不够的时候会被gc回收。
大概有标记清除算法,沿着每个对象的引用链标记每个被引用的对象,遍历完成后回收没有被标记的对象。
缺点是回收之后内存和内存之间会产生很多碎片。
解决这个问题就是把内存分为两半,每次清楚后将存活的对象全部放到另一半去来消除碎片,代价是内存变为了原来的两半。
再一个就是分为了老年区、新生区,我讲到这就被打断说可以了。

2.hashmap

先问我了解过哈希表吗,我说阅读过源码,如果是问问题我还挺有自信的,结果直接让我简单实现一个哈希表,我有点蒙了,看了很久都有点忘了,只记得一些重要的特性例如红黑树的调整,阈值等等,当然这里不需要写出红黑树和扩容等等,但中间停停想想花了很长时间,最后面试官都等不及让我直接讲一下思路。

3.tcp udp

先问我了解过网络吗,我说了解过,之后问我tcp和udp有什么区别
我回答tcp可以保证数据的完整性和安全,在数据丢失的时候会重发,udp主要是尽最大的努力传输数据,对数据的完整性和安全性不做保证,但是速度更快,所以对数据容错比较大的时候可以使用udp,对数据敏感的使用tcp。
接着问我tcp怎么保证数据安全
本人因为一些原因科班知识比较薄弱,没有回答出来,汗颜。。

4. Linux

os用过,但是用的Ubuntu图形界面,对指令不熟悉。

5.Redis

redis是自学的,没有在项目里用过,但是我还是准备挺多的,结果只问了一个问题。
问了redis缓存穿透是什么
答:缓存穿透是个别攻击用户大量访问不存在的数据,导致redis里都查询不到,访问直接落在服务器,让服务器压力大增以至崩溃的情况。
问:怎么解决这个问题?
答:设立一个黑名单,将在短时间内大量访问无效数据的ip放在黑名单内,并禁止他的其他访问
或者使用布隆过滤器来过滤访问
不知道是回答得不好还是什么,没有继续询问直接跳到下个问题了

6.内核态和用户态

其实os我自认为学的还可以,结果直接给我干碎了。
这个我和同班同学核实了,我确实记得我的os老师没有讲过这方面的内容,我回顾ppt和考试都没有看到这个,我直接麻了,只能说不太清楚。
被直接质疑是不是还没上操作系统,麻了。

7.线程和进程

线程就是一个运行中的程序,是资源分配和调度的基本单位。
线程之间共享字元和沟通很麻烦。
线程是进程的一部分,共享线程的资源,沟通起来比较方便。
进程开销大,线程开销小。

8.写一个排序算法

前面心态崩掉了,这里直接放弃了。。

9. 对项目有什么印象深刻的地方

10.有什么想问我的

其实有,但自己没准备面的太差没好意思问。

你可能感兴趣的:(java,面试)