HTML5技术

2016十家公司前端面试小记 - 小小沧海(2)

字号+ 作者:H5之家 来源:博客园 2016-02-23 18:00 我要评论( )

不管是排序也好,还是去重也罢,都是计算机基础知识了,虽然快排写出来了,去重也用多种方式实现了,但是算法是我的弱项,这里就不展开了。不过对于准备面试的童鞋来讲,准备下常用算法还是比较重要的,大部分公司

不管是排序也好,还是去重也罢,都是计算机基础知识了,虽然快排写出来了,去重也用多种方式实现了,但是算法是我的弱项,这里就不展开了。不过对于准备面试的童鞋来讲,准备下常用算法还是比较重要的,大部分公司还是比较看重此类基础知识的。

JS的定义提升

利用js的特性定义提升这个知识点衍生出来的面试题相当之多,诸如以下等等

(function(a){ console.log(a); var a=10; function a(){}; }(100))

这算是我做过的定义提升里面的最简单的题目了,建议可以看下我的上一篇文章:一道常被人轻视的前端JS面试题()

基本上能做对那篇文章中所说的题目的话,此类面试题基本平趟无悬念

跨域

关于跨域大概可以分iframe的跨域,和纯粹的跨全域请求。

关于跨域的可以去看园子里的这几篇文章:

JavaScript跨域总结与解决办法()

跨域-知识()

跨域资源共享的10种方式()

其实正统的跨全域的解决方法大致也就,JSONP,Access Control和服务器代理这么三种

JSONP原理

只要你聊到跨域,就必须聊到JSONP,那么就必须要讲一下JSONP的实现原理,以及你在项目中那个需求使用了JSONP,这里简单讲就是HTML里面所有带src属性的标签都可以跨域,如iframe,img,script等。

所以可以把需要跨域的请求改成用script脚本加载即可,服务器返回执行字符串,但是这个字符串是在window全局作用域下执行的,你需要把他返回到你的代码的作用域内,这里就需要临时创建一个全局的回调函数,并把到传到后台,最后再整合实际要请求的数组,返回给前端,让浏览器直接调用,用回调的形式回到你的原代码流程中。

基本讲到这也就没什么要再讲的了。

将url的查询参数解析成字典对象

这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何一处没有考虑到容错,就会导致整个js都报错。而正则就没有这个问题,他只匹配出正确的配对,非法的全部过滤掉,简单,方便。

实现代码:

function getQueryObject(url) { url = url == null ? window.location.href : url; var search = url.substring(url.lastIndexOf("?") + 1); var obj = {}; var reg = /([^?&=]+)=([^?&=]*)/g; search.replace(reg, function (rs, $1, $2) { var name = decodeURIComponent($1); var val = decodeURIComponent($2); val = String(val); obj[name] = val; return rs; }); return obj; }

函数节流

对于常见的场景,如网页滚动时,经常会有滚动到哪时做什么样的动画效果,遂要注册onscroll事件,如何减少触发次数,到达优化性能,同时又满足效果要求不卡顿,一个是优化事件内代码,减少代码量,二就是做函数节流。

大部分节流都采用时间做节流,即时间间隔小于多少的不再调用,但同时保证一个最小调用间隔。(否则拖拽类的节流都将无效果),也可以用调用次数做节流,但要考虑最后一次调用需要要执行。

可以参考:()

设计模式

这方面被问到的比较多的有观察者模式,职责链模式,工厂模式

主要是应用于js开发组件中会经常涉及,纯粹的页面业务逻辑可能涉及不多。

比如如何去设计一个前端UI组件,应该公开出哪些方法,应该提供哪些接口,应该提供哪些事件。哪部分逻辑流程应该开放出去让用户自行编写,如何实现组件与组件之间的通信,如何实现高内聚低耦合,如何实现组件的高复用等等

css垂直居中方法

可以看到我提到上面大多数都是关于JS的面试题,主要是因为css并不是我的强项,但有几个出现频率很高,就是经典的垂直居中问题。

这个问题又可以细分为,被垂直居中的元素是否定高,是文字还是块,文字是单行还是多行文字等等

这个可以百度下,有N多种解决方案,主要还是看应用场景的限制。

自适应布局

这个问题可以划分为,左固定右自适应宽度,上固定下固定中间自适应高度等等布局要求。

关于左右自适应的,不低于10种解决方案,还要看dom结构要求是并列还是嵌套,是否允许有父级元素,是否允许使用CSS3,是否有背景色,是否要两列等高,等等

而关于自适应高度的解决方案就略少一些,大致也是靠,CSS3的calc属性,内padding,绝对定位后拉伸,动态js计算等等解决方案,同样也是要看应用场景能用哪个

移动端自适应

也被问到了很多移动端开发中的各种坑,比如2倍屏,3倍屏的自适应等,我移动端的经验略少,所以只是按照我做过的经验去尽可能的描述清楚,这里就不多说了

其他关于前端

除了技术以外,因为带过一个小团队,所以更多的时间都是去聊关于项目,关于团队,关于如何管理,关于如何处理团队内问题,如何跨团队协作等等。这部分纯属工作经验了,按照做过的不同项目也会有不同。

总之,大部分聊得还算比较愉快,京东评定的是T3,美团评定的是P6,我也不太清楚这算是个什么等级,不过大部分公司都是评定为中级最多中高级开发水平。大概就这样了,从参加工作到现在也有4年了,只混到这么个水平似乎也确实有些说不过去。

总之,2016年,加油吧↖(^ω^)↗

PS:元宵节快乐~

原文链接:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 回顾总结2016年,展望新年的小目标 - 邴越

    回顾总结2016年,展望新年的小目标 - 邴越

    2017-02-08 16:00

  • 2016-07-07 新入职的随笔 - 且行且止

    2016-07-07 新入职的随笔 - 且行且止

    2017-01-25 13:01

  • 2016——注定不平凡的一年 - 左潇龙

    2016——注定不平凡的一年 - 左潇龙

    2017-01-24 15:00

  • 反骨仔的 2016 年度全文目录索引 - 反骨仔(二五仔)

    反骨仔的 2016 年度全文目录索引 - 反骨仔(二五仔)

    2017-01-12 10:00

网友点评
h