美文网首页
2020年前端面试集锦(HTML CSS 原生JS )

2020年前端面试集锦(HTML CSS 原生JS )

作者: 缺月楼 | 来源:发表于2019-12-09 08:55 被阅读0次

2020年 ,即将到来,金三银四面试黄金季,一定要抓住。本博客总结常见的面试题,查漏补缺,希望对你有所帮助。

技巧

  • 遇到比较抽象的问题就具体化(举例子),遇到比较具体的题目就抽象化(阐述)。
  • 抽象题目搜知乎,代码题目搜Stackoverflow 或者博客。
  • 『XXX 的原理』这种题目一般来说都是说一下源代码的思路,但不需要看源代码,直接看别人总结好的博客即可。(尽量不要使用百度)

HTML

  • 你是如何理解HTML 语义化的?
    参考答案
    1.举例法
    HTML 语义化就是使用正确的标签(总结)。段落就写 p 标签,标题就写h1标签,
    文章就写article标签,视频就写video标签,等等。
    2.阐述法
    首先将以前后台开发人员使用 table布局,然后将美工人员使用div+css布局,最后讲专业的前端会使用正确的标签进行页面开发。

  • meta viemport 是 做什么的,怎么写?
    参考答案
    举例法 :
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
    然后逐个解释每个单词的意思即可。

  • 你平时用过哪些HTML5标签?
    你平时用的html5标签列举出来即可,要注意如果这个标签的用法比较复杂,你要先看一下MDN的文档 ,如果你说出的标签,却不知道它有哪些API,那就会比较麻烦。

参考答案:最简单的演示

<header>
  <nav></nav>
</header>
<main>
  <section></section>
</main>
<footer></footer>

CSS

  • 两种盒模型 说一下??
    参考答案
    IE盒模型border-box和W3C盒模型content-box。区别在于IE的content部分把 border 和 padding计算了进去。box-sizing:border-box; border-box更好用,我平时更喜欢。

  • 如何垂直居中??
    参考答案
    如果父元素height不定,直接子元素padding:10px 0;就垂直居中了
    如果父元素给定height:
    ·table标签自带。
    ·子元素用两个span包起来,子元素和span display:inline-block,vertical-align: middle;,
    span height:100%。
    ·子元素position:absolute;top: 50%;margin-top: -50px;或者用translate(-50%,-50%);
    ·子元素position:absolute;left:0;top:0;margin: auto;
    ·父元素display: flex; justify-content: center;align-items: center;

  • flex怎么用?常用的属性有哪些??
    参考答案
    ·flex-direction: row左起 | row-reverse右起 | column上起 | column-reverse下起;
    ·flex:无单位值(flex-grow),无单位值(flex-shrink),有效宽度值(flex-basis)后两个
    值可选 flex:auto(0,1,auto),flex:none(0,0auto),flex:initial(1,1auto)

  • BFC 是什么??
    参考答案
    BFC是什么(参考)

  • CSS 选择器优先级
    简答
    1.越具体的优先级就越高
    2.同样优先级写在后面的会覆盖前面的
    3.!important 优先级最高,(谨慎使用)

  • 清除浮动说一下 背代码

clearfix:after{
  content: '';
display: block; /* 或者table*/
clear: both;
}

.clearfix{
     zoom: 1; /* IE 兼容*/
 }

原生JS

  • ES6语法知道那些,分别怎么用?
    参考答案
    举例法
    let const 箭头函数 promise 展开操作符 默认参数 import export 等,具体的请参考这里ES 6 新特性列表

  • Promise Promise.all Promise.rase 分别怎么用
    参考答案
    先理解一下 MDN 对Promise的描述。Promise 对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法(handlers)。 这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象.

function fn() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // 返回一个随机数 1-6
      let n = parseInt(Math.random() * 6 + 1, 10);
      resolve(n);
    }, 3000);
  });
}
// 如果成功了 resolve(n) 的结果 会  传给 .then()的第一个参数 x
fn().then(
  x => {
    console.log("筛子的点数是" + x);
  },
  () => {
    console.log("摇色子不会失败");
  }
);

背代码 Promise.all 用法
Promise.all([promise1, promise2]).then(success1, fail1)
promise1和promise2都成功才会调用success1

背代码 Promise.race 用法
Promise.race([promise1, promise2]).then(success1, fail1)
promise1和promise2只要有一个成功就会调用success1

背代码
// 节流(一段时间执行一次之后,就不执行第二次)

 function throttle(fn, delay){
     let canUse = true
     return function(){
         if(canUse){
             fn.apply(this, arguments)
             canUse = false
             setTimeout(()=>canUse = true, delay)
         }
     }
 }

 const throttled = throttle(()=>console.log('hi'))
 throttled()
 throttled()

注意,有些地方认为节流函数不是立刻执行的,而是在冷却时间末尾执行的(相当于施法有吟唱时间),那样说也是对的。

背代码
// 防抖(一段时间会等,然后带着一起做了)

     let timerId = null
     return function(){
         const context = this
         if(timerId){window.clearTimeout(timerId)}
         timerId = setTimeout(()=>{
             fn.apply(context, arguments)
             timerId = null
         },delay)
     }
 }
 const debounced = debounce(()=>console.log('hi'))
 debounced()
 debounced()
  • 手写AJAX
    参考答案
    背代码,完整版
 var request = new XMLHttpRequest()
 request.open('GET', '/a/b/c?name=ff', true);
 request.onreadystatechange = function () {
   if(request.readyState === 4 && request.status === 200) {
     console.log(request.responseText);
   }};
 request.send();

背代码,简化版

 var request = new XMLHttpRequest()
 request.open('GET', '/a/b/c?name=ff', true)
 request.onload = ()=> console.log(request.responseText)
 request.send()
  • 这段代码里的 this 是什么?
    参考答案
1.fn()  // this => window/global
2.obj.fn() // this => obj
3.fn.call(xxx) // this => xxx 
4.fn.apply(xxx) // this => xxx
5.fn.bind(xxx) // this => xxx
6.new fn() // this => 这个新的对象 
7.fn = ()=>{} // this => 外面的this  

看调用 参考 方方的文章 this 的值到底是什么?一次说清楚

  1. 递归
    2.判断类型
    3.检查环(循环引用)
    4.需要忽略原型
  • 如何用正则实现trim() (去除字符串左右两端的空格)
    参考答案
String.prototype.trim = function(){
    return this.replace(/^\s+|\s+$/g, '')
}
//或者 
function trim(string){
    return string.replace(/^\s+|\s+$/g, '')
}
  • 不用class 如何实现继承 ? 用class又如何实现
    参考答案: 背代码
    不用 class 这样实现
 function Animal(color){
     this.color = color
 }
 Animal.prototype.move = function(){} // 动物可以动
 function Dog(color, name){
     Animal.call(this, color) // 或者 Animal.apply(this, arguments)
     this.name = name
 }
 // 下面三行实现 Dog.prototype.__proto__ = Animal.prototype
 function temp(){}
 temp.prototye = Animal.prototype
 Dog.prototype = new temp()

 Dog.prototype.constuctor = Dog // 这行看不懂就算了,面试官也不问
 Dog.prototype.say = function(){ console.log('汪')}

 var dog = new Dog('黄色','阿黄')

用class 实现

class Animal{
     constructor(color){
         this.color = color
     }
     move(){}
 }
 class Dog extends Animal{
     constructor(color, name){
         super(color)
         this.name = name
     }
     say(){}
 }
  • 如何实现数组去重?
    参考答案
    1 .计数排序变形,背代码
    2.使用 Set(面试已经禁止这种了,因为太简单)
    3.使用 Weak Map
  • == 相关题目 (没有规律 ) 建议反着答即可
  • 手写一个 Promise (极难) 抽空有时间 建议 学会
    参考 https://juejin.im/post/5aafe3edf265da238f125c0a

相关文章

  • MDN

    前端HTML/CSS/JS

  • 2020年前端面试集锦(HTML CSS 原生JS )

    2020年 ,即将到来,金三银四面试黄金季,一定要抓住。本博客总结常见的面试题,查漏补缺,希望对你有所帮助。 技巧...

  • 前端学习资料

    前端 Html+CSS+JS Web前端开发之HTML+CSS精英课堂【渡一教育】 Web前端开发之JavaScr...

  • JavaScript面试笔试题

    JavaScript前端面试 系列文章: HTML及HTTP面试笔试题CSS面试笔试题 JS一些算法题: FE-i...

  • 搜索框模糊查询

    前端html代码 前端js代码 前端css代码 后端php返回json

  • HTML

    html+css+javascript 称作前端三剑客,html主要做前端的骨架,css做前端的效果,js做前端的...

  • CSS相关文章

    前端面试之 CSS3 新特性 除了 HTML5 的新特性,CSS3 的新特性也是面试中经常被问到的。如何用 js ...

  • 原生js实现拖拽弹性重力运动

    刚开始学前端,记录下学到的知识,原生js实现拖拽弹性重力运行。记录下,直接上代码: html和css部分 js部分

  • 兼容ie8的轮播图

    效果图: 前端html代码: 前端css代码: 轮播图js代码:

  • 初入小程序

    1,需求知识(HTML,css,js) 小程序中的wxml,wxss与前端中的HTML,css基本相同,js完...

网友评论

      本文标题:2020年前端面试集锦(HTML CSS 原生JS )

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