前言
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的,在我看来,自己付出多少,回报就有多少。
腾讯pcg一面(有两个面试官)
1.学校有什么课
2.操作系统和计算机网络学了么?
3.自我介绍
4.之前用java比较多对吧?(对,不过可以转语言)
5.有了解go么?
6.了解linux么?
7.用什么命令可以查看网络占用的端口
8.进程和线程的区别
9.跨进程通信有哪些方式
10.跨两台主机通信的进程通信方式有哪些?这我答了socket
11.除了socket还有什么方式?(想了一会勉强答了个nfs或者其他文件系统,不过好像和面试官期望的不一样)
12.管道和共享内存可以跨主机通信吗,请结合他们的原理进行回答?(这个没答出来就了…直到现在也不知道答案,我依然觉得能跨主机的只有socket,有大佬帮忙看一下么)
13.多线程和多进程的区别
14.某个线程奔溃了会影响所在进程么,那以进程存在的形式比如nginx,某个进程挂掉了,会影响整个nginx么
15.堆和栈的区别?这里我答的是虚拟内存里面的堆和栈(提到了brk和mmap的区别)
16.new和malloc的区别
17.程序编译、链接过程
18.java中的堆和栈(面试官可能不太用java)
19.用过C语言吗
20.讲一讲你排查线上故障的过程(排查内存泄漏)
21.平时用什么工具排查java系统的故障(jstack jmap arthas perf)
22.TCP和UDP的区别
23.TCP和UDP相比,怎么保证消息的可靠性