腾讯大佬给的一面
经过两次的面试,内心再也不飘了,以前自己知道的问题也不得不去重视了,学技术是没有投机取巧的,看书是要结合这代码去看的,要不就又是背书了。
面试的问题如下:
1、Java的回收策略是什么?如何判断可回收状态?引用计数法的弊端是什么?
2、“abc”.equals(a)和a.equals("abc")在工程中一般使用哪个?为什么?
一般使用第一种,为了防止空指针异常
3、IO如何做到读写不加锁?
使用生产者消费者模式
4、①现在给你一个65535的内存空间,一个持续读,一个持续写,怎么可以顺利运行?
还是运用 生产者消费者模式;
②现在需要持续运行N年,然后怎么做?
运用最少使用页面置换算法;
5、65535Bytes是一个数据buffer,一个线程把数据序列化之后写入,另一个反序列化解析,怎么处理越界问题?
6、现在有一个场景,写线程写到了65534,读线程读到了65500,马上要越界了,怎么处理?
7、堆栈的区别是什么?
8、你new了一个对象小明,对象中存了一个int值(年龄),这个年龄的内存在堆上还是栈上?
堆上
9、你创建了一个结构体,结构体中有一个HashMap,这个HashMap在堆上还是栈上?
堆上
10、Thread和Runnable的区别是什么?在工作中更倾向于用哪个?
我们在工程更倾向于使用第二种,因为java是一种单继承的语言,但是为了弥补这种不足,java语言设计者加入了可以实现多个接口的功能,所以我们更倾向于使用第二种。
11、try catch finally,try中return了,那么finally还执行吗?
finally可以执行;
12、红黑树的原理,并手写 红黑树?
13、①在100M内存中,给10亿个QQ号进行排序?
②边看边下载视频 ,在我们直接把进度条拉到了N分钟的时候,我们再次下载这个视频的时候,不希望 以前文件中的已下载数据浪费,怎么做?