面经 1

周立功单片机的校招来的很早,刚开学还没一个星期就过重庆来了。迅速在网上投了简历,昨天晚上接到面试通知。

今天早早的杀到交大,游走在交大的校园里面还可以看到很多刚报道的新生和家长。随便找个人问了笔试地点三教就杀过去了。

笔试题比较基础。。考了一些计算机组成的基本概念。sizeof 的结果值,1/n*(n-1) 阶乘,字符串分割函数,字符个数统计,字符串循环翻转。总体感觉思路不难,难的是从时间,空间效率,还有安全性方面考虑周全就比较难了。

比如1/n*(n-1) 阶乘那道题,直接把多项式化简之后就剩 1-1/n了 算法复杂度直接为O(1); 分割字符串的时候,注意检查malloc函数不为NULL的情况。具体其他算法优化,就看个人的思路了。

2个小时的笔试结束后,在交大吃了午饭,等下午面试通知。一直到1点半的样子接到机试电话。我汗~,头一回面对机试,心头不由一紧。

2点在交大的语言大楼八楼,机房进行机试。看着面前的方正CRT,突然感觉还是咱们学校的HP LCD 舒服啊。

机试,随机抽取5道题,时间不限。直到你放弃为止,做出几道算几道。跟ACM,topcoder一样,狂汗啊。。来者不善。看了题确实难肯啊

拿到第一题就郁闷了,求一组随机字符串的字符出现个数并排序。更上次tc的500pt的题差不多,当时就没弄出来,想了下要用到map,而已经很久没看stl了,搞了半个小时没弄出来。。

第二题更抽象,给你一个解码的算法,要你写出编码函数。。仔细读了几遍,好像也就是一组数组的顺序映射到另一组数组上。

例如对{1,2,3,4,5,6,7}解码是这样的{x0,x1,x2,x3,x4,x5,x6} 步骤一: 队列首部的数字放到队尾 步骤二:同时 打印出变化后的队列首部,并删除

{0x,x1,x2,x3,x4,x5,x6}

{x2,x3,x4,x5,x6,x0}; x1 --> 1

{x4,x5,x6,x0,x2};     x3 --> 2

{x6,x0,x2,x4};          x5 --> 3

{x2,x4,x6};               x0 --> 4

{x6,x2}                     x4 --> 5

{x6}                          x2 --> 6

 {}                             x6 --> 7

反过来对{1,2,3,4,5,6,7} 编码结果就是 {4,1,6,2,5,3,7}; 这道题纠结了很久感觉有点像解方程的未知数一样,但是应该有逆转的步骤 

第三题 写个函数寻找两个字符串的最长子串

比如 psz1:amliagghelloa   psz2:amgghelloddc  最长子串是 gghello

这个问题有点像数据结构书上的滑动窗口的算法,但那个算法直接是寻找子串匹配的,而现在是找最长字串。。难。。

 

第四题 我到现在都还没理解错哪里了

跟别人讨论了我再补上。

第四题大概是给定一个比特流,比特流的首位不变,基于比特流的前一个比特反转相同变1,不同变0,比如01010111反转过来,00000011

即对一个char的bit位进行处理。

最后一题是

将一个二叉树,平衡化,使其左子树小于其父,右子树大于其父。。gosh,数据结构的时候,树基本没怎么实践操作过

而且貌似树的表示方法,领结表,和领结矩阵,都快忘记了。。没得说挂了

 

坚持了3个多小时,实在搞不定,放弃掉了。。

然后进行技术面。照着简历上的问。我简历上也没写什么项目。感觉做过的东西都不怎么拿的出手。随便写了Linux,stl 之类的充数

那个技术面的面官,一身休闲背个阿迪的包,一双锐步鞋。不知道的还以为我们是同学呢。。汗~~

开头就问了写平时对什么了解比较多,我说Linux 和 stl吧。 他就开始问stl了,问我为什喜欢用stl,我说,喜欢里面的算法,简单实用。他让我说,平时用的比较多的算法。。我脑子这个时候比较乱,平时用的那些算法,现在还真说不上来了。就说了个find_first_of,copy。他问,知道什么叫函数对象么,我心凉了下,没听说呢,然后老实交代,没听过。他又问,知道stl的算法分为两种么,这个我好像记得。

一种是作为容器的方法,是容器特有的,另一种是基于迭代器的通用算法,我紧张的差点没把迭代器说出来,总算看到他点了下头了。

估计这个就是函数对象的意思吧,回去了解下呢。问我对快速排序了解么,我说以前学过,他又问快速排序是怎么实现的呢,我一下答不上来,就先说,那个是基于分治策略的,然后就开始胡说了,主要是真的忘记了。然后问了我:一组随机数一个寻找第k大的数,怎么办。我当时脑袋卡壳了,答不上来,其实一般来说很简单麻。先排序阿,再找,但是前面他提到快速排序,我的注意力被引过去了,就问你是让我用快速排序做么?他说随便,我想到快速排序是不稳定的,肯定不能用快速排序来找萨,就说快速排序是不稳定的,这个问题不能用快速排序吧。这回好像蒙对了,他立马问,为什么快速排序是不稳定的呢。我又忘记了。。支吾了两下没说出来。

然后又问对vector熟悉不,我说当然,用的比较多啊,他问,你为什么用vector呢。额。。这个要总结下了,我整理下思路,说了两点:1,不必担心数组越界。2,容量是动态分配的,比较方便。他又来了,问到,那vector的内存是连续的么。我想了下说,当然不是连续的,动态分配的内存都是在堆上的嘛。怎么可能连续呢。然后他反问在堆上的就一定不连续么? 这让我瞬间无语掉。。靠我怎么知道,估计凡是都有万一,就支吾着说,应该也有可能,看操作系统分配内存是用什么算法了,顺便啪啦啪啦说了写内存分配的算法。什么顺序分配啦,最先最大啦。但是说着说着没底气了。

然后他换话题问我操作系统,问我Linux到什么程度了,我说刚转过来2个月的样子吧。他问,做过什么大的开发项目么,我说,暂时没有,目前正在着手写个ftpserver,他问,是有界面的么,我说没有,commandline的,他问 可以动态配置蛮,我想了下,动态配置好像就是apache那样加载conf 文件作为server参数吧。要是这个功能都没有,那就是个玩具了,于是说当然。又问可以支持多链接么。。我肯定的了下,然后他说,你怎么实现多链接呢,fork函数呗。。但是说出口立马没底气了,mult process 显然不如 multiple thread牛逼撒。他又抓住点上了,立马问,fork和clone的区别的。。这个我好像看过但是忘记了。好像是pid不一样吧。但是当时我脑子空白掉,说没看过clone函数。他有点失望的样子,问了在Linux下写makefile了么,我说当然,但是我自己知道,就能 clean下,和cc 一下而已。然后又聊到flex上面,问我flex的好处,我没有太多思考就说了,flex一次编译一劳永逸(其实相比ajax还有调式方便,便于管理,适合大行开发的有点,当时没说出来),当然有点夸张了。他马上追问为什么,我说那是编译后生成的代码在flash里面,就跟java的虚拟机一样萨。然后他又抓住用户体验,说如果用户不装flash呢,我说这个一般都装了吧。其实我应该这样说(就跟tcp/ip协议一样,当初tcp/ip协议并不是国际标准,但是用的人多了也就成了事实上的标准了,flash也一样。。这样也许就把话题引导到我比较熟悉的网络方面了)他好像不是很满意我的回答。然后他突然问到,对Windows了解么,我说还行,他问,为什么在Linux下编译的程序不能在Windows下运行呢。。我想了下说,调用的系统api和动态连接库不一样吧。还有文件的格式不一样撒。他追问,如果我不调系统api就光一个main函数,什么都没有呢,我立马傻掉了,靠还真没想过。于是开始胡说了。。结果。。

最后问我最近看些什么书,我就说了 unix 网络编程,问还有呢。我说了 tcp/ip协议卷。 他立马露出吃惊的样子,都看完了? 我知道还是老实点说吧,看过第一卷。 他又问c++和c 方面的呢,我说c++primer啊,他也是有点怀疑的样子说都看完了? 我说没有顺便说了个章节数。他立马问那章节讲的什么,我说是 泛型编程和模板的偏特化。他才没有追问了。

 

整个过程十分紧凑,尤其他不断的对你的回答进行深挖。。很容易脑子空白掉。弄的我最后都严重没自信了。连最后问那个技术面的考官,他也说:我感觉你不是很有自信。。可能是自己从来没写过5000+的代码。技术细节又问的这么细。怎么能自信的起来嘛。

最后还是回去等消息。。看来还是挂了啊。。

 

不过还是吸取不少经验。。

1,回答之前最好仔细考虑下,也许下个问题就是从你回答引发的

2,自信点,你出去不仅代表个人,也代表你的学校,能走到面试的都不差

3,不会的就是直接说不会得了,但是一般面试官的问题比较随即,所以这个时候你应该把问题引导到你擅长的地方。

比如一个问题不会,你可以说:这个平时没有注意。但是一般在***方面的**是怎么样的。把问题转到有利你的地步,比如fork那段,clone是我的盲区了,但是我知道fork跟vfork的区别,就可以把这两个说出来。很多东西问的很细无非就是看你是不是在撒谎而已

4,简历上的写上去的东西一定要慎重。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值