前端面试题
-
介绍一下浏览器的缓存。(Expires, Cache-Control等)
可以参考这篇博客。
-
描述一下cookie,sessionStorage和localStorage的区别?
可以参考这篇博客
-
前端性能优化有哪些方法?
可以参考这篇博客
-
vue组件通信。
可以参考这篇博客
-
写一个验证微信号有效性的正则。(微信号格式:由6-20个字母,数字,连字符,下划线组成,且必须以字母开头)
/^[a-zA-Z][a-zA-Z\d_-]{5,19}$/
^:匹配的开始 [a-zA-Z]:字母不区分大小写 ^[a-zA-Z]:首字母不区分大小写 [a-zA-Z\d_-]:字母、数字、下划线和减号;\d表示数字 {5,19}:6-20位
-
写出下面代码执行结果。
var a = 1 function fn(a) { console.log(a) a = 2 } fn() console.log(a)
输出: undefined , 1
-
写出下面代码的执行结果。
for (var i = 1; i <= 3; i ++) { setTimeout(function() { console.log(i) }, 0) }
输出:4,4,4
-
写一个方法,不使用js库函数(如:reverse),实现判断回文字符的判断(一个字符正序和反序是一样的,列如:‘abcba’)。
function palindRome(str){ var len = str.length; var str1 = ""; for(var i=len-1; i>=0;i--){ str1+=str[i]; } console.log(str1 == str) }
-
写一个方法,实现正整数1到N的阶乘。
1.使用while循环: function js(num){ var result = 1; while(num){ result*=num; num--; } return result; } 2.使用递归: function js(num){ if(num<=1) return 1; else{ return num*js(num-1); } }
-
给定一个全部由小写字母组成的字符串,统计其中出现次数最多的字母。
1.使用正则 var str = "aatgddddhduiqjdaddancytcz" var arr = str.split("") var Arr = arr.sort() var strs = Arr.join(""); var max = ""; var maxSting= 0 strs.replace(/(\w)\1+/g, function (strs, strs2) { if (strs.length > maxSting) { maxSting= strs.length; max = strs2 } }) console.log(max, maxSting)