初级前端面试题-持续更新

300 阅读9分钟

一、HTML-CSS

img的alttitle有何异同?strongem的异同?

  • alt属性是图片无法正常加载时的替换文本;
  • title属性是鼠标悬浮在图片上方时的提示文本;
  • strong粗体强调标签(b)
  • em斜体强调标签(i)

html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

新特性 拖拽释放、语义化更好的标签(header,nav,footer,aside,article,section)audio、video、Canvas、Geolocation、localStorage、sessionStorage、各种表单控件(calendar、date、time、email、url、search) webworker, websocket

移除的元素

  1. 纯表现的元素:basefont,big,center,font, s,strike,tt,u;
  2. 对可用性产生负面影响的元素:frame,frameset,noframes;

支持 HTML5 新标签:

  1. IE8/IE7/IE6 支持通过 document.createElement 方法产生的标签,可以利用这一特性

让这些浏览器支持 HTML5 新标签,浏览器支持新标签后,还需要添加标签默认的样式(当然最好的方式是直接使用成熟的框架、使用最多的是 html5shim 框架):

<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->

如何区分: DOCTYPE 声明新增的结构元素、功能元素

说说你对语义化的理解?

  • 用正确的标签做正确的事情!
  • html 语义化就是让页面的内容结构化便于对浏览器、搜索引擎解析;
  • 在没有任何样式的情况下,也能清晰的展示出见文档的结构,对于阅读源码的人,更容易将网站分块,便于维护和理解
  • 搜索引擎爬虫依赖于标记来确定上下文和各个关键字的权重,更利于利于网站的SEO优化

CSS3有哪些新特性?

圆角、阴影、渐变、2D3D转换、动画、媒体查询 等等。

对BFC规范的理解?

解释下浮动和它的工作原理?如何清除浮动?

网络中使用最多的图片格式有哪些

介绍一下CSS的盒模型

  1. CSS 的盒子模型有两种:标准W3C盒模型IE盒模型
  2. 盒子模型由内容(content)内边距(padding)边框(border)外边距(margin)组成
  3. 标准盒模型的宽只是内容(content)的宽度,而IE8(及以下)盒模型的宽度是除过外边距(margin)的宽度 image.png

8、CSS有哪些选择器?

基础选择器、复合选择器、伪类选择器、属性选择器

基础选择器:

  • 标签选择器(element)
  • id选择器(# id)
  • 类选择器(. classname)
  • 通配符选择器(*) 复合选择器:
  • 后代选择器(空格)
  • 子选择器(>)
  • 多标签选择器(element,element)
  • 相邻选择器(element+element) 属性选择器: 属性选择器(a[target])

伪类选择器:

  • 链接伪类(a: hover)
  • 伪类选择器(li:nth-child)

9、哪些属性可以继承?

可继承的样式:

  • font-size
  • font-family
  • color
  • text-indent 不可继承的样式:
  • width
  • height
  • padding
  • border
  • margin

10、优先级算法如何计算?

  1. 优先级就近原则,同权重情况下样式定义最近者为准;
  2. 载入样式以最后载入的定位为准;
  3. !important >  id > class > tag  
  4. important 比内联优先级高,但内联比id要高

11、CSS3新增伪类有那些?

名称说明
p:first-of-type选择属于其父元素的首个 <p> 元素的每个<p>元素。
p:last-of-type选择属于其父元素的最后 <p> 元素的每个<p>元素。
p:only-of-type 选择属于其父元素唯一的<p>元素的每个 <p> 元素。
p:only-child   选择属于其父元素的唯一子元素的每个<p>元素。
p:nth-child(2) 
:enabled :disabled控制表单控件的禁用状态。
:checked       单选框或复选框被选中。

12、display都有哪些值,说明他们的作用

以下为常用

名称说明
display:none;通常与 JavaScript 一起使用,以隐藏和显示元素,而无需删除和重新创建它们,默认情况下,<script> 元素为 display:none;
display: block;元素以块级元素显示
display:inline;元素以行内元素显示
display:inline-block;元素以行内块元素显示(不换行,还可以设置宽高)

13、在定位中relativeabsolute分别是相对于谁进行定位的?

名称说明
static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)
relative生成相对定位的元素,相对于其在普通流中的位置进行定位。
absolute生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位。
fixed生成固定定位的元素,相对于浏览器窗口进行定位(老IE不支持)。
inherit规定从父元素继承 position 属性的值

14、display:nonevisibility:hidden的区别?

  • display:nonevisibility:hidden都是隐藏对应的元素;
  • display:none相当于从文档中消失,不占有任何空空间,而visibility:hidden还会在文档布局中保留 原来的空间。

15、CSS中 link@import 的区别?

  1. 首先link属于HTML标签,而@importCSS提供的语法;
  2. 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;影响性能
  3. import只在IE5以上才能识别,而link是HTML标签,无兼容问题;
  4. 建议使用link标签

16、为什么要初始化CSS样式?

17、解释下 CSS sprites,以及你要如何在页面或网站中使用它。

18、Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?

19、html常见兼容性问题?

二、JS

1、null和undefined的区别?

2、讲一下 var、let、const 的区别?

  1. var声明的范围是函数作用域,而let和const声明的范围是块级作用域
  2. var声明的变量有作用域提升的特性,而 let、const 没有
  3. var 声明的变量会挂载到 windows 对象上,所以使用 var 声明的是全局变量,而 let 和 const 声明的变量是局部变量, 块级作用域外不能访问
  4. 同一作用域下 let 和 const 不能重复声明同名变量,而var可以
  5. const声明的是常量,必须赋初始值,一旦声明不能再次赋值修改,如果声明的是复合类型数据,可以修改其属性(比如 const 变量引用的是一个对象,那么修改这个对象内部的属性并不违反 const 的限制)

js中的基础数据类型有哪几种? 了解包装对象吗?

答: 6种,分别是string、number、boolean、undefiend、null、symbol 基础数据类型临时创建的临时对象,称为包装对象。其中 number、boolean 和 string 有包装对象,代码运行的过程中会找到对应的包装对象,然后包装对象把属性和方法给了基本类型,然后包装对象被系统进行销毁。

js的typeof返回哪些数据类型?

共7种

  • "string"表示值为字符串
  • "number"表示值为数值
  • "boolean"表示值为布尔值
  • "undefined"返回表示值未定义
  • "object"表示值为对象(而不是函数)或 null;
  • "function"表示值为函数
  • "symbol"表示值为符号

列举至少3种强制类型转换和2种隐式类型转换

  • 强制转换类型主要有:parselnt() parsefloat() Boolean() Number() String()
  • 隐式类型转换主要有:+ - == !

3、js中的基础数据类型有哪几种? 了解包装对象吗?

2、new操作符具体干了什么?

5、如何判断this指向?箭头函数的this指向什么?

6、什么是闭包?

7、什么是同步任务,什么是异步任务

8、什么是宏任务,什么是微任务

9、什么是回调函数,回调函数存在什么问题

什么是作用域,什么是作用域链?

说说对浅拷贝 和 深拷贝的理解

防抖和节流的作用

说说es6的新增特性

Promise是什么?

Promise.all() 和 Promise.race()

for-in 和 for-of 的区别

怎么让一个函数无论promise对象成功和失败都能被调用?

3、说说你对JSON 的了解?

4、js延迟加载的方式有哪些?

5、浏览器为什么要阻止跨域请求?如何解决跨域?每次跨域请求会达到服务端吗?

6、call apply bind 的作用与区别?

7、对内存泄漏的了解

15、Token一般存放在哪里? Token放在 cookie, sessionStorage 和 localStorage 中有什么区别?

16、js事件模型

17、谈一谈箭头函数与普通函数的区别?

8、如何判断当前脚本运行在浏览器还是node环境中?

9、什么叫优雅降级和渐进增强?

31、JavaScript 原型,原型链 ? 有什么特点?

说说什么是事件代理(事件委托)?

10、对Node的优点和缺点提出了自己的看法?

11、对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?

12、你有哪些性能优化的方法?

13、http状态码有那些?分别代表是什么意思?

14、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?

15、document.write和 innerHTML 的区别?

16、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

17、平时如何管理你的项目?

18、说说最近最流行的一些东西吧?常去的哪些网站?

19、javascript继承的 6 种方法

20、ajax 如何使用

ajax 的作用 和 优缺点

21、异步加载和延迟加载

22、前端的安全问题?

23、ie 各版本和 chrome 可以并行下载多少个资源

24、javascript里面的继承怎么实现,如何避免原型链上面的对象共享

25、grunt, YUI compressor 和 google clojure用来进行代码压缩的用法。

26、什么是 "use strict"; ? 使用它的好处和坏处分别是什么?

27、GET和POST的区别,何时使用POST?哪些地方会出现css阻塞,### 28、哪些地方会出现js阻塞?

29、eval是做什么的?

30、Node.js 的适用场景

32、对网站重构的理解

33、WEB应用从服务器主动推送Data到客户端有那些方式?

34、事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?

35、Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题?

36、如何获取UA

37、js 数组去重

38、http状态码的了解

三、VUE

四、代码

1、写一个通用的事件侦听器函数

2、js对象的深度克隆代码实现

数组去重

数组排序

数组合并

对象合并

冒泡排序

4、js 操作获取和设置 cookie