2014搜狗前端面经【A事业部】
刚刚面完搜狗,有种莫名其妙的感觉,哪里莫名其妙呢?听我慢慢道来。。。
开始面试官就这简历,问了一些有的没的东西,都不深(好吧我承认之前的经历有点菜,没神马加分项啊)。
后面开始技术面:
知识点1:JSONP
跨域有哪些?(我blablabla和JSONP)JSONP怎么实现的?(我JS代码写写写)那后台代码该怎么写?(好吧,这块确实不熟,看来得写写了)
知识点2:类
JS类怎么写的?(我写的function somedate(){} somedata.COMMON = 500; somdata.prototype={})你那个somedata.COMMON定义的常量,以后new时能得到吗?跟直接定义在prototype上有啥区别(擦,我这是自己给自己挖坑了么?回答此处省略。。。)那创建新的实例,new somedata()和直接somedata的区别?(不new是全局变量)怎么避免?(检测是不是somedata对象,不是new)怎么检测somedata对象?(说了个instance,不知道全不全)除了new以外,用call怎么创建新的对象?(好吧,这块不是很确定。。。写了个东东)用你这个call,原型上的方法能取到吗?(额。。。又不确定,随便答了答,说可能不能,要不继承干嘛还这么这么写。。。)呦,我还没问到继承呢(o(╯□╰)o,我只能囧囧的说,继承也就是为了取到原型上的方法。。。)
PS:后来亲自写了个代码实验了下,somedata.COMMON这样定以new对象实例后实例不能访问,只能直接写somedata.COMMON来访问;但写在prototype上的实例可以访问,甚至可以重写,用call创建实例的话,是取不到原型上的方法的,倒是可以取到构造函数里的方法
知识点3:事件模型
一个页面里有个DIV,点DIV外面它关闭,点里面不用关闭(document绑定关闭,div绑定不关闭,设置个全局变量确定是点在了里面还是外面)
PS:之前答时提到了取消冒泡,结果面试官说,万一里面好些控件,取消冒泡好么?于是我才答的上面那个,不过后来又面的家公司也问了这个,我直接答的上面的,结果被鄙视了,说应该取消冒泡。。。
知识点4:CSS方面IE的兼容性
这里犯二了,说有很多很多,比如css3IE不支持的单独写,以及IE的一些bug,不知道从哪儿说起。。。(真二啊,说几个能死么能死么?!)
知识点5:一个DIV上的提示框,当div到页面顶部时怎么办?(显示到下面)怎么判断?(blabla)考虑过兼容性问题吗?
然后我问问题:
你们开发使用框架吗?(原生多一些)怎么封装的?(就告诉我会有封装。。。貌似不愿意告诉我技术细节。。。难道这个很隐私?)
面完了感觉就是。。。基础问的好细啊。。。有些不是很确定,晚会儿写点代码测试下。。。恩。。。
-------------------------------------------------------------------------------------------------------
第二天收到了二面通知,于是开始了我悲剧的第二面,这个面试面完我好久都在怀疑自己的智商是不是真的捉急T T
二面面试官只问了我一个问题:写一个函数,把string转化为Int
我第一反应写出了:先判断是不是string,如果是parseInt()
面试官看了,说不是这个意思(其实我也觉得不该是这个意思),不要用parseInt,然后我吭哧半天,开始想怎么判断是不是123阿拉伯数字(想编码是啥),刚准备下笔,面试官又说,不用考虑容错,就是123这样的string。。。额,我的思维又跑偏了,于是囧囧的写了个循环,意思差不多是第一位取出来乘以10的length-1次幂,然后取第二位乘以10的length-1-1次幂,blabla,然后面试官顿了顿说,这是最直接的写法,有没有其他的,然后我用我困得不行的脑袋想了想说,不造。于是面试官说,位移知道吧,二进制第二位就是1X2,那十进制呢?瞬间我脑子里开始想,二进制有位移操作符(如<<),十进制是个啥呢?一阵沉默后我告诉他我不造,他说,十进制就是1X10。。。我囧囧有神了一会儿,然后他问,现在有思路了么,我又一阵冥思苦想,然后还是不知道啥意思,他又提示,比如1234,1的话就是1,12的话相当于1X10+2,123的话相当于12X10+3,有思路了么?写一下,不用写for。。。好吧,我表示我又犯二了,脑子开始想这是递归么?最后卡了半天也没写粗来(有点脑子一片空白的感觉),于是面试管说,这个很简单啊,就是num=num*10+str[i]啊(其实我不记得他写的啥了,只是后来反应过来应该是这个,姑且算他写的也是这个好了,o(╯□╰)o)。。。
这个暂时算完了,他又问,这种string能有几种形式,对应输出该是怎样?比如如果是-1(string),则输出-1,这个怎么实现?我说判断第一个是不是-,如果是就加个0减去这个数,他说,应该是负号后面的调用下函数,然后再加负号。。。我表示我回答的又low了。。。他接着问,还能有啥?我说,浮点数吧,1.23输出1,判断有没有.,他问,还有呢?我提了下,日期?正负无穷?科学计数?然后说了说实现,他问,还有呢?额。。。脑子又不够用了,还能有啥?他后来提了下,那汉字呢。。。我恍然大悟,就写判断是不是“一”,如果是“一”转化为1,,以此类推,他又问,这种用什么类型定义比较好?我回答的用对象,他又问,具体怎么操作呢?我囧囧的说,估计要把百,千这种也得写出来。。。然后他又问,像“一百二十四”这种,不能把百和十抽出来么?额,我说应该可以,隔一个抽取一个,不过貌似也有例外啊,比如三百零四,然后他就说,算了不问了,汉语太复杂了。。。o(╯□╰)o
下面就是问,当时刚毕业时有几个offer,现在这次找工作已经有几个offer。。。我实话实说,搜狗是我面的第一家稍微大点的互联网公司,其他大公司还没投,小公司面的基本都有offer,(感觉又要被鄙视了,呜呜)然后我就回来了,路上都觉得一阵郁闷。。。
感觉搜狗面试官很有意思,问的问题真的很少,但都很喜欢一个问题往死里问,其实还是很基础的,而且这种网上基本上没有重复的面试题,今天发挥的很差,除了真的天很热我很困以外,最主要原因还是编程底子欠佳,以后得多练习。。。
后面还有其他面试,等被虐完后再发上来吧。。。
-------------------------------------------------------------------------------------------
突然接到电话,进三面了,各种受宠若惊啊~~回头再更三面 恩
三面没神马东西,主要问了些个人情况,然后问了道题,如果是购物网站,当你想买个东西,底部会出一些其他物品推荐,这个怎么实现?(见淘宝)不是从技术的角度,单纯考思维。我答了搜索历史记录关联,然后就卡住了,后来面试官提醒了下,又答了个购买群里关联,然后就回去等消息了。
后来给offer了,不过因为各种原因我已经入职了一家 = =