到今天陆陆续续面试了几家公司的前端,今天就把所有遇到的面试题整理一下。
question 1.如何进行行内断句?
answer:有两种。1:word-wrap:break-word; 把太长字符串截断到下一行。
2:word-break:break-all; 直接进行单词内断句,节省空间。
ps:资料:word-wrap和word-break ;
question 2:如何用css画一个圆?
answer:使用border-radius;
quertion 3:如何在保证盒子模型大小不变的情况下增加border?
answer:使用box-sizing:border-box;
question 4:如何用css实现省略号?
answer:使用text-overflow:ellopsis;和overflow:hidden;一起使用。
question 5:如何实现旋转?
answer:transform:rotate(10deg);
PS:skew(10deg,10deg)(扭曲),scale(2,2)(缩放),translate(10px,10px)(移动)
question 6:css优先级?
answer:选择器越精准,优先级越高,id选择器>类选择器>派生选择器。
内联式(style = “color:red”)>内嵌式(<style>) > 链接(<link>)> 导入(import)
question 7:float的特性,如何清除浮动?
answer:float具有破坏性,会导致父元素的高度塌陷,清除浮动一般用clear:both;和overflow:auto;
question 8:设置文字图片行内居中?
answer:vertical-align:middle;/* 内容以对象中部对齐*/
question 9:如何让块级元素垂直水平居中?
answer:这个问题直接贴资料链接吧,虽然我自己实现过一次,但目前还没掌握如何贴可以运行的代码。
ps:资料:块级元素水平垂直居中。
在我很多次面试中,面试官都偏向于css的基础还有css3的新特性,之前把所有css模糊的地方都自己实现了一遍以后,感觉还是挺好的,包括如何用css画三角形,这些都挺有意思的东西,慢慢掌握吧,前端知识还很多。
question 1:闭包如何理解?如何运用?
answer:用2句话概括下闭包。1.闭包是引用着外部变量的内部函数。2.所有函数都是闭包。一般运用是匿名闭包(IIFE),也叫立即执行的函数表达式,优点是:模块化,可重用,实现信息隐藏,只暴露出public方法,最大的优点是不污染变量对象。
ps:感觉很奇怪,几乎每个面试官都问了闭包的知识,但很少问原型和作用域链。
question 2:js实现继承的方法?
answer:4个方法,最常用的是原型继承,还有构造函数实现继承,还有call和apply实现继承。
question 3:call和apply的作用和区别?
answer:这2个方法的作用都是指定作用域,区别是apply的第二个参数必须是数组。
question 4:如何实现数组去重?
answer:
var a = [1,2,2,3,4,5,6,5,3,4,7,7,77]; function noRepeat(target){ var result = {}; for(var i = 0,len = target.length;i<len;i++){ result[target[i]] = target[i]; } return Object.keys(result); } console.log(noRepeat(a));
question 5:seajs和requirejs的区别?
answer:seajs是CMD规范,requirejs是AMD规范,一个是迟加载一个是预加载。
PS:回答比较粗略,可以查看资料:seajs和requirejs的区别
question 6:之前写过什么jQuery插件吗?
answer:写过一个图片轮播和日历的插件,图片轮播在下一篇博文中实现。
还是觉得JS问的太少,因为我平时研究框架设计,学习prototype.js,深入的理解原型和作用域链和闭包,但感觉施展不出来,不过,这些都是晋级JS高手必备的东西,我掌握了,以后总会有用处。
至于http协议和浏览器渲染过程也是问的比较多,推荐大家看2篇非常经典的博文。足以应付很多问题。
1:浏览器工作原理
2:http协议详解