常见面试题练习

常见面试题(https://juejin.im/post/5c91bbc96fb9a070c9759a64

 

 

 

从url输入网址后发生什么

 

http状态码是什么,有什么用,在哪里查看,分别代表什么意思?(https://juejin.im/post/590082e6a22b9d0065be1a5c

 

HTTP 缓存有哪几种(https://www.jianshu.com/p/227cee9c8d15)(https://imweb.io/topic/5795dcb6fb312541492eda8c

 

GET 和 POST 的区别

 

手写函数防抖和函数节流

手写AJAX

手写一个 Promise

如何实现深拷贝

如何实现数组去重(https://juejin.im/post/5aed6110518825671b026bed#heading-2

 

html5新特性(https://www.cnblogs.com/vicky1018/p/7705223.html

css3新特性

 

css 实现垂直居中(https://juejin.im/post/5a5ca65a6fb9a01ca3254537

清除浮动

 

CSS 选择器优先级(important > 内联 > ID 100 > 类 10 > 标签 | 伪类 | 属性选择  1 > 伪对象 > 继承 > 通配符 通配符 > 继承)

浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。

比如DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:先查找html中所有class='red'的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。

css为什么少用!important

 

meta 及 viewport

 

箭头函数(this)哪些情况下不能使用箭头函数

 

this、apply、call、bind

 

rem , em , px 的区别

 

typeof 和 instanceOf 的区别(https://www.cnblogs.com/onepixel/p/5126046.html

 

instanceof原理

instanceof (A,B) = {
    var L = A.__proto__;
    var R = B.prototype;
    if(L === R) {
        // A的内部属性 __proto__ 指向 B 的原型对象
        return true;
    }
    return false;
}

 

 

new做了什么(https://juejin.im/post/59bfe84351882531b730bac2#heading-5

 

进程,线程,协程关系

 

几种循环方法的区别

 

字符串方法比较

 

数组方法比较

 

get 和 post  区别

 

判断是否是字符串类型(String)方法

 

货币格式转换

 

去除字符串首位空格(实现trim方法)

 

闭包

 

原型链

 

手写深拷贝

 

array方法有哪些,区别

 

css实现一个三角形

 

DOM事件委托(https://zhuanlan.zhihu.com/p/26536815

 

实现一个promise

 

vuex状态图

 

cookie, session

 

 

Javascript 之中的 class/构造函数/工厂函数

 

实现深拷贝

 

使用es5中的语法es6中的一些新方法

 

反转数组

 

去除数组中重复的数据

 

封装函数进行字符串驼峰命名的转换

 

提取一段文章中出现次数最多的单词

 

函数的节流和防抖

 

sort方法总结

var arr=[2,23,3,226,123,1,12];
//Step1:定义比较器函数

//升序
function compareASC(a,b){
return a-b;
}
//Step2:将函数作为参数传入sort方法
arr.sort(compareASC);
console.log(String(arr));

//降序
function compareDESC(a,b){
    return b-a;
}    
arr.sort(compareDESC);
console.log(String(arr));

 

参考链接:js十大排序算法

冒泡排序:

解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。

   2.第一轮的时候最后一个元素应该是最大的一个。

   3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。

function maopaosort(arr) {
    for (var i = 0; i < arr.length - 1; i++) {
        for (var j = 0; j < arr.length - 1 - i; j++) {
            //倒序排列
            if (arr[j] < arr[j + 1]) {
                var swap = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = swap;
            }

            // //正序排列
            // if (arr[j+1] < arr[j]) {
            //     var swap = arr[j+1];
            //     arr[j+1] = arr[j];
            //     arr[j] = swap;
            // }
        }
    }
}

var arr = [1, 4, 3, 6, 7, 36, 83, 2, 33, 5];
console.log('before:' + arr);
maopaosort(arr);
console.log('after:' + arr);

 

js实现判断质数

质数:质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。2是唯一一个既是偶数又是质数的数字。

function isPrimeNum(num) {
    if (typeof num !== "number") {
        return false;
    } else if (num < 2) {
        return false;
    } else if (num === 2) {
        return true;
    } else if (num % 2 === 0) {
        return false;
    }
    let sq = Math.sqrt(num);
    for (let i = 3; i <= sq; i += 2) {
        if (num % i === 0) {
            return false
        }
    }
    return true;
}
console.log(isPrimeNum(1));
console.log(isPrimeNum(2));
console.log(isPrimeNum(3));
console.log(isPrimeNum(49));
console.log(isPrimeNum("a"));

 

字符串翻转

var str = "every good boy does fine";
var start = 0;
var end = str.length - 1;
var tmp = "";
var arr = new Array(end);

while (end >= 0) {
   arr[start++] = str.charAt(end--);
}


var str2 = arr.join('');
document.write(str2);
posted @ 2018-09-27 15:18  EthanCheung  阅读(169)  评论(0编辑  收藏  举报