校招面试中积累的前端问题 - Matthewsun

标签: 面试 前端 问题 | 发表时间:2014-09-15 21:04 | 作者:Matthewsun
出处:

css问题:

ie6/7下块级元素如何模拟display:inline-block

众所周知,inline-block是一个很好用的属性。它可以将对象呈递为内联对象,但是对象的内容都作为块对象呈递。而旁边的内联对象会被呈递在同一行内,允许空格。
可惜的是,在IE6/7下是不支持这个属性的,这时我们该如何办呢?
这时我们可以考虑让块级元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的hasLayout属性(如zoom:1)。代码如下:

//css
.ib { display:inline-block; *display: inline; *zoom:1; width: 60px; height: 60px; background: red;}
//html
<div class="ib">我是ie6/7下模拟的inline-block元素</div>

延伸上一个问题,实现两栏自适应布局的一个方案

只需要给左侧元素的布局浮动属性,并设置宽度,右侧的元素display:inline-block,ie6/7下使用兼容解决方案即可解决。当然两栏自适应布局的方法不止这一种,这里仅仅是做一个小小的延伸扩展。

css组件的命名规范

class命名一直是网页重构的一个重要的话题,而css组件的命名就更是重中之重。如何防止命名冲突,全站组件和单页面组件的命名怎么从普通class命名中间区分开来,以及全站的组件和单页面的组件之间又如何准确区分?
我这里给出的答案是在class的命名规范上下文章,全站组件的命名加上mod前缀以标示,例如:mod_xx。而单页面组件的命名加上单页的前缀和mod标示,如:xx_mod_xx。

css框架

Bootstrap的流行导致了越来越多的人去研究前端css框架,而在面试的时候面试官更多的是考察你对框架源码的剖析,以及知识的广度。比如说它的栅格布局,响应式布局以及各个css组件之间的联系。还有个css框架是YUI的 pureCss,它可能没有bootstrap那么有名气,但恰恰是在面试的时候能够说出这个框架的名字以及你对于它的理解,相信是可以加分不少的。pure是一组轻量的响应式css模块,pure的所有模块都是在 Normalize.css之上建立的。和传统的reset不同,它提供的是跨浏览器保持HTML元素默认样式的一致性。有兴趣的同学可以深入研究学习一下。

javascript问题:

事件绑定

js事件绑定,主要有三个问题:
1 事件绑定在标准浏览器和IE浏览器下的兼容性写法
2 事件绑定在标准浏览器下函数的第三个参数的含义 
3 事件绑定在ie下,回调函数的this指向会被指向window

先说一下第二个问题,其它的问题可用代码示例。

obj.addEventListener(ev,fn,false);

这个参数的名字叫做useCapture,是一个布尔值,名为冒泡获取,false代表的含义是由里向外,true是由外向里。举个栗子:

<div id="outDiv">
<div id="middleDiv">
<div id="inDiv">请在此点击鼠标。</div>
</div>
</div>
  • 全为 false 时,触发顺序为:inDiv、middleDiv、outDiv;
  • 全为 true 时,触发顺序为:outDiv、middleDiv、inDiv;
  • outDiv 为 true,其他为 false 时,触发顺序为:outDiv、inDiv、middleDiv;
  • middleDiv 为 true,其他为 false 时,触发顺序为:middleDiv、inDiv、outDiv;

使用匿名函数解决attachEvent回调函数的this指向问题:

function bindEvent(elem,type,fn){
if(elem.attachEvent){
elem.attachEvent("on"+type,function(){
fn.apply(elem,arguments);
});
}else{
elem.addEventListener(type,fn,false);
}
}

js阻止默认事件和阻止冒泡的兼容写法

1.停止事件冒泡

//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation )
//因此它支持W3C的stopPropagation()方法
e.stopPropagation();
else
//否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;
return false;

2.阻止浏览器的默认行为

//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.preventDefault )
//阻止默认浏览器动作(W3C)
e.preventDefault();
else
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;
return false;

当然jquery中帮我集成了一个解决方案,那就是return false,已解决了兼容性问题。

js获取元素的位置

这道面试题考察的是,有没有获取父元素的位置,再加上自身的offset值,代码如下:

function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
}  

hr问题:

你对加班的问题怎么看?

这个问题几乎是hr必问,但不要以为hr仅仅想听到你的答案是愿意加班哦。看看我是怎么回答的吧:
我不喜欢经常加班,因为我认为经常加班是工作低效率的一种表现,但是如果公司有紧急的需求需要我去加班,我愿意奉献自己的精力去完成,不会以不加班为借口,拖延紧急项目的进度。

关于面试的问题还有很多很多,比如说前端的性能优化,seaJs的模块化加载,前端MVC模式的应用,nodeJs等等,感兴趣的同学可以深入研究下。


本文链接: 校招面试中积累的前端问题,转载请注明。

相关 [面试 前端 问题] 推荐:

前端工程师面试问题列表

- - 博客 - 伯乐在线
前言:@ darcyclarke 在 GitHub 上分享了一个 repo,其中包括了不少前端面试问题,可用于检验潜在的候选人. 绝不推荐在单个候选人身上用上所用的问题(那样会花费好几个小时滴). 从这个列表选择一些,应该能从候选人身上,检测出你所需要的技能. 请记住,下面的很多问题都是开放式的,无标准答案,并能引发有趣的讨论.

校招面试中积累的前端问题 - Matthewsun

- - 博客园_首页
ie6/7下块级元素如何模拟display:inline-block. 众所周知,inline-block是一个很好用的属性. 它可以将对象呈递为内联对象,但是对象的内容都作为块对象呈递. 而旁边的内联对象会被呈递在同一行内,允许空格. 可惜的是,在IE6/7下是不支持这个属性的,这时我们该如何办呢.

一文搞懂前端兼容问题

- - SegmentFault 最新的文章
如果你喜欢我的文章,希望点赞 收藏 评论 三连支持一下,谢谢你,这对我真的很重要. 对于大部分开发者来说,版本兼容是一件存在感很低的事情,因为它在绝大部分情况下都是一行配置,在一些前端工具链(例如 Babel、CoreJS,Autoprefixer 等工具)的帮助下适配到目标浏览器,只会在一些大的 break change 事件(例如 Vue3 必须在支持 Proxy 的现代浏览器下才能运行)下才会关注这件不起眼的事情.

web前端面试笔试题+优化

- - JavaScript - Web前端 - ITeye博客
前端是庞大的,包括HTML、CSS、Javascript、Image、Flash等等各种各样的资源. 前端优化是复杂的,针对方方面面的资源都有不同的方式. 那么,前端优化的目的是什么. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源.

面试题:火车运煤问题

- Louis - 酷壳 - CoolShell.cn
这个可能是一个比较经典的智力题了,和以前的那个《赛马问题》很相似,其题目如下:. 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤. 请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市.

技术面试中,什么样的问题才是好问题?

- - 四火的唠叨
其实很久以前就想谈一谈这个话题了,但是最近才有了足够的动机. 因为从最近参加的很多 debrief 来看,我认为身边大多数的软件工程师面试中,在通过技术问题来考察候选人这方面,很多都做得不够好. 比方说,我看到对于一些经验丰富的软件工程师候选人的面试,一些面试官依然是草率地扔出一道算法题让做了事,并且认为能不能够比较清晰完整地将代码写出来,是工程师级别裁定的最重要的标准.

面试时,你会问面试官哪些问题?

- Walter8529 - 博客园-首页原创精华区
每次面试的时候,面试官都会在最后给面试者一些时间,来问问题. 这是个非常好的机会,能按照自己的思路,来了解职位、技术、企业文化、福利待遇、企业状况和前景等情况,以弥补前面面试过程中没有了解到的情况. 但较早以前面试准备不太充分,虽然也能地问上一些问题,但挂一漏万,每次回来后,总觉得对企业、对职位没有完全了解清楚,不能依此作出很理性的决断.

亲历百度面试有感:技术or前端型产品

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  近日在换工作,先后面试了百度云和百度安全的相关岗位,最后因为非常可惜的原因,跟百度安全失之交臂. 经过总结,自己认为主要的原因就在于 "技术型产品"和"前端型产品"的认知,特写出来跟互联网的各位产品经理做一下分享.   a、毕业四年,互联网工作经验,大于五年.   b、客服、技术支持、市场、服务器采购和运维、产品、项目总负责人等等,都干过....

前端面试想要得高分,看过来~~~

- - JavaScript - Web前端 - ITeye博客
   理论是基础,有些东西还是要温故而知新吧,闲余之时还是要“炒炒现饭”. 下面小编把“Web前端开发面试题”贴出来,大伙看看吧~~. CSS 盒子模型,绝对定位和相对定位.   1)清除浮动,什么前端面试想要得高分,看过来~~~时候需要清除浮动,清除浮动都有哪些方法.   2)如何保持浮层水平垂直居中.

世界顶级公司的前端面试都问些什么

- - SegmentFault 最新的文章
原文: http://davidshariff.com/blog/. 作者: David Shariff. 本文首发微信公众号:jingchengyideng. 欢迎关注,每天都给你推送新鲜的前端技术文章. 在过去的几年里,我在亚马逊和雅虎面试过许多前端工程师. 在这篇文章中,我想分享一些技巧,帮助大家做好准备.