谈谈昨天的面试

    今天去了一家刚创业的公司(也不能说完全是刚创业吧,更确切点是刚步入软件行业这边),之前是要交一个项目,然后前几天通知我今天去面试,详细说说吧。

    面试我的是一个技术牛人,首先谈到了我大学都学了哪些课程,然后我balabala把大学三年学的课程说了一遍,什么c语言,c++,数据结构,操作系统原理,微机原理,计算机组成等等软件工程必修的课程都说了遍。然后便开始问我大学里面最喜欢的课程是哪门。说实话,大学里面学的很好的课程确实没有几门,都是属于那种半桶水的,如果我说了最喜欢哪门,他肯定要问我里头一些细节的东西,然后我就拐弯抹角的说大学里的课程有点和现在公司开发脱节,说我现在主要是做.NET这块的,想让他问点这块的东西,但是你们都懂得,程序员的嘴,却是不是那块料,没办法,圆不过去...然后和我说了很多大学里面的课程都很基础,特别是c语言的,学好了其他什么的都是浮云。这确实是,但是我都两年多没动过c语言了,更别提指针的东西了。

   不过面试官也没在难为我,然后就拿出了四道题目来做,但是很悲剧的我只做出来一道,还是最简单的那道,下面详细来说说吧。

  第一道题:说出下面代码的不对之处

 

......
if(x==0)
{
......
}

第二道题目:请优化下面代码

int a;
......
for(int i=1;i<10000000;i++)
{
if(a>0)
......
}

第三道题目:请优化下面代码,x的值可以存在一定误差(各位不好意思,我的笔误,r=c/100而不是开始的a,抱歉了)

BYTE a[10000,2];
......
r=c/100;//0<c<=100
for(int i=0;i<10000;i++)
{
x=(int)a[i,0]*r+a[i,1]*(1-r);
if(x>255)
x=255;
if(x<0)
x=0;
}

第四道题目:请设计一个垃圾箱

然后交谈过程中还问了两道题目

第一道:数据库中有两张表,第一张存员工基本信息,第二张存员工所拥有的某些文档信息(可能一个员工有多份文档),现在要找出每个员工的所拥有的文档数量。

第二道:本市有多少个加油站。

   


                   第一题  

  由于算是第一次正式的面试吧,有些紧张,第一道题目想了很久也没想出来,还是面试官提醒我是一个规范性的问题才突然想起一个去一家做游戏开发的同学曾经给我说过他们公司使用if时必须使用如下格式才行

  

   if(0==x)

  然后面试官继续问我为啥要这么用,我只记得当时那同学给我说过这样做的话容易发现错误,让编译不通过,然后就照着说了.....结果还是说不到重点,最后还是面试官告诉我"=="号如果不小心写成了"="号就直接编译不能通过,而开始说的那种方式编译器就会认为是在赋值。


 第二题

   第二道题目,呵呵,额,各位看官一定要笑话我了,但是不管你们信不信,我确实就华丽的没有打上来.....好吧,我也不多说了,你们肯定知道答案了。


第三题

   第三道题我只记住了个大概,就是在x左边计算的时候是会产生一个浮点数的,浮点数在计算过程中其实是比较耗资源的,所以应该避免使用浮点型,于是先将r扩大一百倍,然后使用位移来计算出结果(好像是这么说的,但是具体的我真没记全,还望各位多多指教下)。

 


第四题

    第四题,开始以为是设计一个GC方面的内存回收,心想着用.NET提供的托管那么安逸,自己去设计者还真不太好从哪方面下手,刚想说,结果面试官就告诉我这个垃圾桶就是现实生活中的实实在在的一个垃圾桶问我要怎么设计。这道题目也是我唯一四道题目中打出来了的,我就问了他一大堆的需求,然后再开始说应该怎么怎么去设计。后来才知道他其实问我的是关于软件工程方面的问题,哈哈~~

 


第五题

    因为之前设计数据库还比较多,所以面试官一说完我就说增加一个表,然后里面存一个员工的主键,加一个员工的资料数量(Count),结果却....面试官说:那你这不是有增加了一个联合查询,效率不也不是很好。从他对话中才得知其实是想让我把数量(Count)那个字段直接加在员工主表那,但是我却反驳他:一般数据库设计好后已经交给程序员开发了的话一般是不推荐修改数据库的,那样的话数据库对应的实体映射表,还有其他一些逻辑都得修改,可谓牵一发而动全身...balabala....结果却让我很无语,他告诉我那个还是在设计阶段,并没有开始开发...又一次凸显了我薄弱的理解能力啊....自己囧一个。

 


   第六题

   其实真不知道加油站有多少,我想面试官也不知道吧,他主要考的还是你的发散思维,而不是一味的说不知道或者直接说出结果。我当时说的是全市有多少人,可能有多少车,然后除去大概出租车的数量,balabala,反正就是不能说不知道之类的话。

 

 

    最后问了些关于软件开发过程中的敏捷开发思想,就是从客户那拿到需求后,得尽快做出一个demo给客户看,然后客户觉得满意后再继续开发下去,然后没过一定时间就循环这段过程,直到最后把整个软件开发完成。总之,就是软件工程这一些列问了比较多点东西。

 

 

  虽然面试过程很坎坷,不过最后还是拿到了offer,现在有点犹豫要不要去,主要是因为那公司刚起步,连财务总监都是刚刚招来的,技术这边就更少人了,我现在最担心的就是自己去那家公司学不到太多的技术,因为才起步肯定公司都还没有生成一定的技术沉淀,所以还请各位给小弟拿拿主意,先谢谢了。

 

你可能感兴趣的:(面试)