第二章 面试题进阶篇

70 阅读4分钟

2.1 ES6面试题

1. var、let、const区别

varletconst 共同点都是可以声明变量的

区别一:
    var 具有变量提升的机制
    letconst没有变量提升的机制
区别二:
    var 可以多次声明同一个变量
    letconst不可以多次声明同一个变量
区别三:
    varlet声明变量的
    const声明常量
    varlet声明的变量可以再次赋值,但是const不可以再次赋值了。
区别四:
    var声明的变量没有自身作用域
    letconst声明的变量有自身的作用域

2.2 作用域考题

1. let和const没有变量提升性

console.log( str );//undefined
var str = '你好';

console.log( num );//报错
let num = 10;
function demo(){
    var n = 2;
    if( true ){
        var n = 1;
    }
    console.log( n );//1
}
demo();


function demo(){
    let n = 2;
    if( true ){
        let n = 1;
    }
    console.log( n );//2
}
demo();

可以修改

const obj = {
    a:1
}
obj.a = 11111;
console.log( obj )

const arr = ['a','b','c'];
arr[0]= 'aaaaa';
console.log( arr );

2. 将下列对象进行合并

a. 方式一: Object.assign

const a = {a:1,b:4};
const b = {b:2,c:3};

let obj1 = Object.assign(a,b);
console.log( obj1 );

方式二: ...

let obj2 = {...a,...b};
console.log( obj2 );

方式三: 自己封装方法

function extend( target,  source ){
    for(var key in source){
        target[key] = source[key];
    }
    return target;
}
console.log( extend(a,b) );

2.3 箭头函数和普通函数有什么区别?

  1. 箭头函数没有prototype(原型),所以箭头函数本身没有this
  2. 箭头函数的this在定义的时候继承自外层第一个普通函数的this。
  3. 如果箭头函数外层没有普通函数,严格模式和非严格模式下它的this都会指向window(全局对象)
  4. 箭头函数本身的this指向不能改变,但可以修改它要继承的对象的this。
  5. 箭头函数的this指向全局,使用arguments会报未声明的错误。
  6. 箭头函数的this指向普通函数时,它的argumens继承于该普通函数
  7. 使用new调用箭头函数会报错,因为箭头函数没有constructor
  8. 箭头函数不支持new.target
  9. 箭头函数不支持重命名函数参数,普通函数的函数参数支持重命名
  10. 箭头函数相对于普通函数语法更简洁优雅

2.4 Promise有几种状态

有三种状态:
pending(进行中)
fulfilled(已成功)
rejected(已失败)

2.5 find和filter的区别

区别一:返回的内容不同
    filter 返回是新数组
    find   返回具体的内容
区别二:
    find   :匹配到第一个即返回
    filter :返回整体(没一个匹配到的都返回)

2.6 some和every的区别

some  ==》 如果有一项匹配则返回true
every ==》 全部匹配才会返回true

2.7 webpack面试题

webpack相关面试题(深度考察)_webpack面试题-CSDN博客

2.8 Git面试题

1. git常用命令

a. 创建仓库命令

命令说明
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。

提交与修改

命令说明
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git difftool使用外部差异工具查看和比较文件的更改。
git range-diff比较两个提交范围之间的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。
git notes添加注释。
git checkout分支切换。
git switch(Git 2.23 版本引入)更清晰地切换分支。
git restore(Git 2.23 版本引入)恢复或撤销文件的更改。
git show显示 Git 对象的详细信息。

提交日志

命令说明
git log查看历史提交记录
git blame <file>以列表形式查看指定文件的历史修改记录
git shortlog生成简洁的提交日志摘要
git describe生成一个可读的字符串,该字符串基于 Git 的标签系统来描述当前的提交

远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并
git submodule管理包含其他 Git 仓库的项目