美文网首页
前端面试-2017

前端面试-2017

作者: baby熊_熊姐 | 来源:发表于2017-08-22 15:25 被阅读34次

关于 ES6

  • Promise
    • 三种状态:pending | fullfilled | rejected
    • 方法:p.then()、[p1, p2].all()、p.catch()
// catch 与 then 的区别, 如果不用 catch 的话,则then第二个函数会被调用,有了catch,错误被捕获,catch 返回一个promise,之后还可以接 then
  var p1 = new Promise(function(resolve, reject) {
    // resolve('Success');
    // throw 'oh, no!';
    JSON.parse("kkkklklk")
  });

  p1.catch(function(e) {
    console.log(e); 
  }).then(function(){
    console.log('after a catch the chain is restored');
  }, function () {
    console.log('Not fired due to the catch');
  });
// 需要调用成功函数或者扔出一个错误,then的回调才会被调用
  var p1 = new Promise(function(resolve, reject) {
    // resolve('Success');
    // JSON.parse("kkkklklk")
    // reject()
    throw 'oh, no!';
  });
  • Async
    es7 特性
function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function add2(x) {
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  console.log(a, b)
  return x + a + b;
}

add2(10).then(v => {
  console.log(v);  // prints 60 after 4 seconds.
});
  • Generator
function* helloWorldGenerator() {
  yield 'hello'
  yield 'world'
  return 'ending'
}

var hw = helloWorldGenerator()

console.log(hw.next()) // {value:hello, done:false}
console.log(hw.next()) // {value:world, done:false}
console.log(hw.next()) // {value:ending, done:true}
  • 其他常用

关于 React

  • 优点

    • 申明式。状态可以预测,易于理解和调试的
    • 基于组件,组件可以初始化自己的状态,也可以将数据传递出去,
    • 写一次到处用,只代表 V层,不对其余部分作假设,适用于各种类型框架,如 MVC, MVVM 等
    • 虚拟DOM, 最小化重绘,减少不必要的DOM操作
  • 缺点

    • 只代表 V层, 需结合其他
    • 单向数据流

关于 Redux

“发生什么,导致什么改变, 变得清晰可预测"

  • 只有一个store, 便于预测管理全部状态
  • 改变state的唯一方式是触发一个action
  • action, 描述了发生什么及传递信息
  • reducer将action和state结合,并采用纯函数的方式,返回新的state

关于 Webpack

  • 做什么: Javascript 应用程序打包器,递归创建依赖图,打包成少量bundle,由浏览器加载
  • 如何配置:主要包括入口,出口,Loader(打包钱转换,test, use), Plugins(完成loader做不了的事情,高度可配置,内置插件和第三方插件)
  • 关于缓存

关于 immutable

  • 为什么用: 提供强大的API,一旦生成,不会改变,可以放心操作对象,新生成的state, 只是改变了该节点及其父节点,相对深度复制要节约内存

关于 HTTP

输入浏览器地址,浏览器查找IP地址(DNS查找,浏览器缓存,系统缓存,路由缓存),向服务器发送一个HTTP请求

  • 发起请求整个过程
  • 三次握手建立TCP连接:"你能听到我说话吗”,“我能,你能吗”,“我也能,我开始发送数据了”
  • 浏览器发送请求命令:方法 + 路径 + 协议
  • 发送头部信息,user-agent, host等,最后一个空行代表请求头发送完毕,post请求最后会继续提交请求体
  • 服务器响应 协议版本号 状态码数字和字符
  • 服务器发送应答头信息,自己的及被请求的,最后一个空行表示头信息发送结束
  • 服务器发送数据,以头信息所描述的格式发送
  • 关闭 TCP 连接

解决跨域

  • Ajax 请求不同源跨域
    • jsonp
      通过向网页中添加<script>, script元素请求的脚本,直接作为代码运行,服务器收到请求后会将数据作为回调函数的参数,只要定义了该回调函数就会运行
function todo(data){
  console.log('The author is: '+ data.name);
}
var script = document.createElement('script');
script.src = 'http://www.jianshu.com/author?callback=todo';
document.body.appendChild(script);
todo({"name": "fewjq"});
  • CORS
  • WebSocket 不受同源策略限制, 只需要服务器支持

原型继承

优化性能

css3 过渡、动画、变换

transition
transition: property duration timing-function delay
animation
animation: name duration timing-function delay
animation-name: 可以指定多个用逗号隔开
iteration-count(n, infinite)
animation-direction: normal, alternate
animation-play-state: playing | paused
@keyframs name {
to {
font-size: x-large
}
}
transform
transform:translate, scale(n), rotate(ndeg), skew(ndeg), matrix
transform-origin: % | 长度值 | x(left center right) y(top center bottom)

Canvas 与 Svg 不同处

Canvas 基于像素位图,及时模式,基于Canvas标签, 而SVG基于矢量,保留模式,基于xml元素

闭包

闭包由函数及创建该函数的环境构成
允许将函数与其所操作的环境关联起来

盒模型

box-sizing: content-box | padding-box | border-box

  • content-box:默认,宽不包含padding 和 border
  • padding-box: 宽包含padding 不包含 border
  • border-box: 宽包含 border, padding

DOM 操作
通过css选择器选择元素
querySelector(<selector>):返回匹配选择器的第一个元素
querySelectorAll(<selector>): 返回匹配的所有元素

媒体查询

  • 媒体类型
    • all
    • print
    • screen
    • speech
  • 媒体属性
    • width/height orientation
      @media 媒体类型1, 媒体类型2 操作符 媒体属性
<meta name="viewport" content="width=device-width, initial-scale=1">

标准模式和混杂模式

DOCTYPE, 申明文档类型(document.doctype), 默认开启混杂模式
混杂模式(backCompat)会让IE的行为与IE5相同,不同浏览器在这种模式下差异很大
标准模式(css1Compat), 让IE行为更接近规范
接近标准模式,很多特性符合标准,也有混杂的地方
<!DOCTYPE html> h5 中定义标准类型

HTML 与 XHTML 区别

  • xhtml ,可扩展的超文本语言,必须被正确标记且格式良好,必须被正确地嵌套、关闭、必须小写,必须有根元素
  • xml 结构化存储及传输信息,焦点是数据的内容

link 与 <script> 位置

一般 link 放在前面,<script>放在后面
由于文本解析自上而下,如果 link 放在后面,那先出现的是html结构,没有样式;如果 script 放在前面,一方面js里有对元素的引用,会导致报错,另一方面,加载执行时间长,会导致页面空白。

BFC

BFC 形成:float 元素,position:absolute 元素,display属性table-cell,table-caption,inline-block,flex,or inline-flex 以下之一,及overflow 属性不为 visible 元素,会建一个新的块级上下文

同一个BFC中元素,左端对齐,触碰容器的左端,上下垂直排列,margin 叠加

作用:

  1. 消除 margin 叠加,使其位于不同的 BFC中
  2. 容纳浮动元素,使容器拥有高度
  3. 阻止文本环绕

清除浮动

  1. 使用空标签,clear: both,
  2. 对父元素,overflow: hidden, zoom:1
  3. 使用伪元素:::after {display: block, cntent:'.',height:0, clear: both, }

相关文章

  • JS相关

    2017年第一波JavaScript前端面试题

  • 前端相关技术点

    1.整理了一份关于前端的一些常见面试题(2017) 我遇到的前端面试题2017 2.用JS获取地址栏的参数(超级简...

  • 前端面试的经典题

    前端面试的经典题 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 Javascript...

  • 值得看的前端面试文章- 收藏集 - 掘金

    【前端面试 -- 四月二十家前端面试题分享】1-5 套个人解题答案 - 前端 - 掘金前端面试题 前端面试--四月...

  • 前端面试概念收集器

    前端面试概念收集器 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 本文分为 概念,原...

  • 前端面试的难题和怪题

    前端面试的难题和怪题 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 函数 答案 Er...

  • 前端面试-2017

    关于 ES6 Promise三种状态:pending | fullfilled | rejected方法:p.th...

  • 前端面试题整理

    本人2017年毕业,从事前端工作1年,去过新华三,海康、大华面试,结合今天和之前的面试经历,整理了一些面试题。因为...

  • 面试.md

    [TOC] 2017年第一波 JavaScript 面试题 一道常被人轻视的前端****JS面试题 目录 前言 第...

  • PHPer 面试指南-扩展阅读资源整理

    前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议...

网友评论

      本文标题:前端面试-2017

      本文链接:https://www.haomeiwen.com/subject/usshdxtx.html