第一次去的时候还是有点发蒙,因为飞亚达那里长时间施工,一时间晕头转向的绕道沙河立
交后面。这样一折腾之后,浑身汗透了,和出道深圳的时候极其类似。
在上电梯的时候,我就琢磨着,腾讯的势力有多大。因为4,5,6层电梯开门总是能看到正
对面的腾讯前台,到了7层一问:小伙子,3楼到10楼都是腾讯地盘。一切简洁代过。
技术型的面试就是简单,递给两张试题,圆珠笔,草稿纸,支个地方就可以了。我在作题目
的时候还能看到后面的人在用source insight写代码,偶尔也会回头和我打招呼,对眼色。
面试题目是核心,大家一定想知道很多。我应聘的是Linux后台开发(看到QQ大批的业务,
他的后台却是Linux,你们大家如何想呢?),题目自然是关注Linux编程环境。面试的师傅
问我作C还是C++,我答曰C。于是他给我抽出试卷B。
题目总共两张,总共9道题,大致划分:
编程环境,2道,execl调用,TCP select问题
数据结构,3道,sizeof,数据存储,查找算法
编程语言,1道,C++类存储
算法,2道,算法分析和设计
编程工具,1道,Makefile
我基本都有答,不过有两个是彻底瞎蒙的。
1. 问题输出结果
#include "unistd.h"
#include "stdio.h"
int main(void)
{
printf("call execl");
sleep(1);
execl("/bin/sh", "", NULL);
printf("error!\n");
}
正解-->
这个东西只会输出ls结果,两个printf都是不输出的。
首先,Linux IO是行缓冲形式,未遇到换行和强制输出是不数出的,待到execl执行后,创
建新的进程映像,后面的printf也不会去执行。
2. TCP通讯中,select到读事件,但是读到的数据量是0,为什么,如何解决。
同步传输控制?我根本没使用过:(
其他的基本通过,有一个问题很有意思。
3. 假设电信每分钟登录次数是60w次,现在要提醒5分钟内重复登录的用户,如何设计程序
缓存和查找算法?
我说,数据库查询得到5分钟内拨号号码,然后根据号码建立位图数组。他反问我:你知道
数组要有多大么?我答曰,假设足够大……
我又说,为建立的号码列表排序,方便以后二分检索,他又反问:那如果我说这个程序是动
态的呢?要知道随时都会有其他用户登录。我没法回答了。
你咋不早说妮!!……
----------
这么多天来,我一直都在琢磨一个事情,为何自己的能力在一个阶段上,迟迟不能进步。老
是想着作大项目,得到项目经验,却在一些大工程上不知道如何下手。我才发现一个严重的
问题,我往往忽略了很多关键性和基础性的能力培养。数据结构和算法设计是两个核心的概
念,除此之外,那些应付性的代码和蹩脚的设计根本无法谈上经验,似乎这两年都在无止境
的乏味折腾。
所以还是,千里之行,始于足下。如果极限概念模糊,也不要吝惜自己“宝贵”的时间,咬牙
抱起高等数学吧。
没有评论:
发表评论