2017年前端面试题大全集,只发一次!

简介: 2017年BAT公司常见的Web前端面试题整理

2017年BAT公司常见的Web前端面试题整理

1.JavaScript是一门什么样的语言,它有哪些特点?

没有标准答案。

2.JavaScript的数据类型都有什么?

基本数据类型:String,boolean,Number,Undefined

引用数据类型:Object(Array,Date,RegExp,Function,Null)

那么问题来了,如何判断某变量是否为数组数据类型?

方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效

方法二.obj instanceof Array 在某些IE版本中不正确

方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:



如果你想学习web前端可以来这个群,首先是二九一,中间是八五一,最后是一八九,里面可以免费的学习交流,也有资料可以下载。

3.已知ID的Input输入框,希望改变文本框的背景颜色,怎么做?(原生JS)


4.希望获取到页面中所有的checkbox怎么做?(原生JS)



5.Html事件绑定有几种方式?

直接在DOM里绑定事件:

这种方式称为原生事件或者属性事件

在JS里通过onclick绑定:xxx.onclick = test

Dom标准通过事件添加进行绑定:addEventListener("click",test, false) //第三个参数为是否支持事件捕捉

IE事件:attachEvent("onclick",test)

那么问题来了,Javascript的事件流模型都有什么?

“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

目标事件

“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

IE事件流:目标事件和事件冒泡

阻止事件冒泡的方式:


阻止事件的默认行为:


6.看下列代码,将会输出什么?(变量声明提升)


上面的代码经过变量提升后,等价于下面的代码


再看下面的输出结果:


此时打印a函数,不会打印1,因为下面是一个函数表达式,跟变量声明一样,只会把var a;提升到最前面,a=function(){}保留,会覆盖前面的a=1;因此打印函数。

此题目,我再百度面试的时候问到过。

7.掌握样式的优先级。

!important > style(内联) > Id(权重100) > class(权重10) > 标签(权重1) 同类别的样式,后面的会覆盖前面的。

百度视频部门一道面试题是这样的:


8.怎样添加、移除、移动、复制、创建和查找节点

1)创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

2)添加、移除、替换、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

9.用js写一个正则匹配标签中是否包含一个class(百度面试题)


10.事件循环绑定,输出结果(考察闭包)


通过闭包封装后的代码:


闭包我所知道的两个作用:

a.通过闭包可以把局部变量传递出来,就是通过闭包可以访问函数内部的变量,比如下面的代码:


通过闭包就可以访问函数内部的局部变量,并且实现数量累加。

b.使用闭包可以避免空间污染,闭包内部的变量都只能在内部使用,这样有效避免和外部变量的混淆。(个人理解)

11.js数组去重。


12.两个div标签,如何控制标签左边固定,右边自适应,左边div标签的宽度为100px(滴滴面试题)


滴滴面试起初问我,现在有并排的三个Div框,如何实现三个div都自适应,我当时就懵了,这个考察的是display:table的使用



13.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚

考察点2:是否知道如何判断一个变量是什么类型的

考察点3:递归算法的设计



14.继承的使用


15.请评价以下代码并给出改进意见


评价:

不应该在if和else语句中声明addListener函数,应该提前先声明,定义全局变量;

不需要使用window.addEventListener或document.all来进行检测浏览器,应该使用能力检测;

由于attachEvent在IE中有this指向问题,所以调用它时需要处理一下

改进如下:


16.对作用域上下文和this的理解,看下列代码:

相关文章
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
539 156
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
353 1
|
存储 JavaScript 前端开发
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
429 2
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
44 个 React 前端面试问题
|
前端开发 容器
前端面试热门问题--浮动和清除浮动(CSS)
前端面试热门问题--浮动和清除浮动(CSS)
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1053
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    452
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    351
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    335
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    451
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    623
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    931
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    238
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    764
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    419