现在的位置: 首页 > 综合 > 正文

不一样的面试(发现自己最大的问题之一)

2018年04月08日 ⁄ 综合 ⁄ 共 2297字 ⁄ 字号 评论关闭

今天被北京XXX公司(著名广告投放公司)鄙视了。面试官是个中年男子,很帅气,虽然面试官人很好,但是还是让我心情不爽。

一进去就说先来个组成原理的题吧: CPU,主存,北桥,南桥,速度不一致,缓存之类的,这个很简单,回答出来了,面试官说了好几个good,还挺满足的。

接下来说做一道操作系统的题吧:我在word里面写了一些文本,点击保存。

(1) 他有没有写到磁盘上?

(2) 如果写了,是一个怎么样的详细过程,如果没写,在哪儿?

回答了磁盘缓存,文件操作会经过一个转换层转换成块IO操作,然后由设备驱动将这些块IO的请求写到缓存,缓存进行调度,然后分别写到磁盘。

如果文件不够大,不会写到磁盘,会先到缓冲区之类的。。。 差不多就这些。看样子面试官不满意我的回答。

接下来说我们做一个网络的题吧: 我在浏览器出入新浪的域名,然后就看到他的主页了,让我解释这个过程:

(1)我说先请求DNS,将域名转换成IP。 面试官说不详细,让我在详细介绍DNS的流程/结构。我就说有什么递归查询了,可能会访问顶级域名服务器啊,他说我说的还是只是其中一个方面。想半天想不出来,然后他说大概会经过:本地缓存查询-》DHCP-》然后才是请求DNS。

(2)接下来我说拿到IP之后会发送一个IP数据包,通过在Internet上面的路由选择到达sina的服务器,然后他会响应这个请求。然后面试官马上就问了,那你说说响应是怎么回来的?我说响应的IP数据包也有目的IP地址啊,经过路由选择到达局域网之后通过MAC地址找到你的主机。他说不完善,然后我有事想了一通想不出来他想知道什么。。。最后他说客户端请求的时候,会生成一个临时端口号,然后响应的数据包回来的时候会送到这个端口,客户端会监听这个端口。大概就是这个意思吧。。。

(3)然后面试官又问我了:你知道一般这个请求会发送多少个IP数据包么?汗。。。 我说看页面的大小吧。。。面试官仍然不满意我的回答,忘了他说什么了。。。

(4)然后又问我,我请求的页面是全部内容都会发过来么? 这个直接被鄙视。我说静态部分应该会全部发过来,动态部分应该要是情况而定(基本是蒙的)。面试官耐心地给我解释,说有一个什么“html树”,每一个节点都会发送各自的请求什么的。。。 不懂,看来得查一查。

这里比较详细地讲解了整个过程:http://zhan.renren.com/seochina?gid=3602888497994264527&checked=true

好吧,我们再来做一个编译原理的题吧(。。。):你说你会java,那么你说一个,从一个java源文件,到在机器上的二进制可执行文件这个过程是怎么样的?

我就说java会有自己平台无关的jvm指令集,首先会将源文件编译成字节码文件,就是这样的指令集表示的,然后会汇编成为依赖于具体的硬件平台的汇编,然后汇编程序就会链接,然后转换成二进制码执行。。。其实我基本上是在凭感觉说。。。 面试官又说我说的太粗糙了。。。汉。。。好几次这样说我了。(说实话,我遇到过好几个人说我对各种计算机领域的只是理解不够深入了。。。看来我平时应该多注意这种细节问题的思考和探知啊)。 然后面试官问我知道语法树么。我马上明白了,原来他是要我回答编译原理方面的细节啊,说实话,什么词法分析,语法分析,语义分析,优化之类的我早忘记了。。。不过面试官还是耐心地给我讲了一下。

完了又问我,你知道为什么要转换成汇编么? 哎,为什么啊,我回答说汇编是依赖于体系结构的最原始的“高级语言”,开始的时候我们不可能直接写二进制代码,就弄了这样好理解的符号化的东西。。。我好想回答的不是他问的,哎,又被鄙视了。

接下来,我们在做一个java的题吧:

try{

  int x;

  x = 1;

  return x;

}catch(Exception e){

  x = 2;

}finally{

  x = 3;

}

返回什么? 我说肯定不是2,执行return x之前会先执行finally,所以是3。

好吧,错了。面试官又是耐心给我解释,我恍然大悟啊。一开始就没有走对方向,我其实在不确定的情况下应该往底层一点想想,想想x是存在栈中,return x是函数的返回值,是存放在栈中的另一个位置的,而finally的之后修改的是栈中变量x,而与函数返回值无关。。。 哎,处处是底层啊。。。又被鄙视了。

面试官又问我,你对linux安全了解么?啊,这个我还真不了解,赶紧说不了解。。。

面试官又问我,你用过哪些服务器啊?我说tomcat啊,Apache啊,还听过一个叫什么GlassFish的,shit,不知道有没有这么一个服务器,面试官表示没听过。

然后面试官又是耐心给我讲,列了一大堆服务器,大概十几个服务器的名字。

又给我将什么现在服务器因为要处理大量并发请求,趋势就是会设计成“异步”的,而不是“同步”的。

我还是和他扯起来,我说什么可以通过集群,将请求分配到不同服务器,结合动态负载均衡等技术来处理请求,他说即使分布式处理,还是可能会出现单台服务器需要处理大量请求的情况,我表示赞同。然后我又说“异步”的处理方式会影响用户体验啊,响应时间不确定啊,什么的。。。

差不多就这样结束了,面试官尽然来了一句:“你先回去吧,我看如果没有更好的,我在打电话给你。。。”(太直接了,我喜欢。。。)好吧,握个手,走人了!

 

这次让我更加重视自己的缺点了,平时学习一个东西不够深入,没有强烈的类似的底层细节知识的思考和探知欲望。。。学知识有点急躁。。。。哎,一定要注意。(学习东西一定要深入底层,这里说的底层不是说贴近于硬件的那种底层,而是设计各方面细节的原理性的东西。。。计算机一通百通!)

路还很长啊!

抱歉!评论已关闭.