面试总结
扫描二维码
随时随地手机看文章
从上个星期六开始投简历到现在,在猎聘、拉勾、智联上陆陆续续投了几十份简历了,邀请面试的有三家,一家是游戏公司,软件园那边的,规模比较大,公司气氛看起来也挺不错,一家是做安防产品的半硬件公司,在靠近郫县的电子科大科技园,人不多,公司氛围比较严肃的感觉,但是个个看起来都很supercoder的感觉,最后一家名字叫爱读书,我以为是iReader这个耳熟能详的公司,结果是一个连官网都木有的不造是啥的小公司,所以没去。
先来说第一家:成都软件园某某游戏公司
进去之后前台小妹来了个常规一条龙服务,给张表填填,倒口水喝喝,给你拉拉家常之类的,完事之后马上进入正题,拿了一张笔试试卷来给我做,时间限制好像没有规定,而且周围没有人守着你做,也就是说你可以悄悄拿出你的手机google一下,但是考虑到他们会不会在监控里偷偷看着你,也就没有实施这个想法。
来说说试卷上的题,共三道:
1‘、有一个vector
实现版本1:
void furitCount(const &vectorfruits){ int applenum,orrangenum,banananum; applenum=orrangenum=banananum=0; vector::iterator it; for(it=fruits.begin(),it!=fruit().end(),it++){ if( (*it).compare("apple") applenum++; else if( (*it).compare("prrange") ) orrangenum++; else if( (*it).compare("banana") ) banananum++; else cout<<"error"<<endl; } cout<<"applenum: "<<applenum<<endl; cout<<"orrangenum: "<<orrangenum<<endl; cout<<"banananum: "<<banananum<<endl; }
但是感觉这个版本的实现太过平庸,没有体现任何技巧,于是实现版本2
实现版本2:
void furitCount(const &vectorfruits){ int applenum,orrangenum,banananum; applenum=orrangenum=banananum=0; applenum=count(fruits.begin(),fruits.end(),"apple"); orrangenum=count(fruits.begin(),fruits.end(),"orrange"); banananum=count(fruits.begin(),fruits.end(),"banana"); }
这个版本感觉使用了一点点stl中自带算法的,看起来更简洁更高大上,但是要遍历三次才能统计完,性能太差。
各位看管能否给出你们的实现代码呢?我觉得面试官应该像看到的不是我上述两个代码吧?他应该想看到更多的技巧!!!
2、_int8 data 是一个8位的有符号整数,请将上面得到的各种水果的总数用data存储,写出存储过程和解析过程
实现代码:
存储过程:
data=applenum; data<<2; data+=orrangenum; data<<2; data+=banananum;
解析过程:
banananum=data&3; data>>2; orrangenum=data&3; data>>2; applenum=data&3;
存在问题:
每个水果的数量分配两个位只能表示最多到3,分配3个又不够,大家有更好更高效的存储方法么?
第三题有点记不住了,也没多大价值,先请各位看官看看上面两个题吧,怎么写才是最好的答案?