常见面试题练习
常见面试题(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));
冒泡排序:
解析: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);