腾讯面试感受

Posted by zjh on August 17, 2020

前言

很操蛋的面试,很挫败,可能对于大厂的了解我还是只是停留在很基础的上面,本以为仔仔细细的准备java面试的问题(依照前面对面试的经历和理

解),实际上,面的全是专业素养(计算机网络,数据库理论,线程锁(不局限于java),数据结构);

过程

上来第一个问题很深刻:http的发展历史,说实话这东西真学过,只是发展历程这方面,谁又会觉得他是重要的呢,淦,后面还问了一些:
1、http的三次握手,
2、线程锁的分类和乐观锁的实现原理以及如何解决乐观锁aba的问题,
3、还有数据库事务的实现原理(这个大概是我疏忽了,没想到会问实现原理,光注重事务的隔离性和隔离级别了),
4、可能由于面试官是个主c++的程序员,看我主方向是java,所以他形式上的问了一下final,finaly,finalize的区别(很简单),
5、还有问了一个我没有一点头绪和一点都没听过的问题:linux系统下,如果你经常发现你的cpu爆红,你应该怎么从linux体系下对其进行分析和解决,然而我对linux的层面只停留在部署java、redis等软件程序上面,系统内核那是一点都没了解过,
6、最后问了一个简单的算法问题:在不用第三个变量的情况下,实现两个整形变量值的交换,看似很常规的问题:

x=y-x; 
y=y-x;
x=x+y;


这样实现就没有任何问题,只是接下来又问我,如果位数溢出了怎么办,,,,,,直接就蒙了,这也怪我确实专业素养太差,遗忘了一个异或运算,一直

把异或运算放在cpu的计算上面,没有考虑到实际编程也会用到 异或运算直接计算两个整形的二进制差值,不考虑正负,符号位不参与计算,所以不存在溢出的情况,即便最大和最小的数一正一副,异或之后变成1,

x=x^y;
y=x^y;
x=x^y;


就实现了两个数的位置互换

总结

自身太菜,专业素养能力不够