最后
基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
for(var i = 2; i <= n; i++){
last = (last + m) % i;
}
return last;
}
47.求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
function Sum_Solution(n){
var sum = 0;
plus(n);
return sum;
function plus(num){
sum += num;
num > 0 && plus(–num);
}
}
48.写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
function Add(num1, num2){
var sum, carry;
do{
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}while(num2 != 0);
return num1;
}
49.将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0
function StrToInt(str){
if(str.length === 0){
return 0;
}
var format = str.match(/^(+?|-?)(\d+)$/);
if(!format){
return 0;
}
var num = 0;
var temp = format[2];
var base = 1;
var flag = format[1];
for(var i = temp.length - 1; i >= 0; i–){
num += parseInt(temp[i]) * base;
base *= 10;
}
return flag === ‘-’ ? num * (-1) : num;
}
50.在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
function duplicate(numbers, duplication){
if(!numbers || !numbers.length){
return false;
}
var len = numbers.length;
for(var i = 0; i < len; i++){
var curr = numbers[i];
if(numbers.indexOf(curr) !== i){
duplication[0] = curr;
return true;
}
}
return false;
}
51.给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1]。不能使用除法。
function multiply(array){
if(!array || !array.length){
return [];
}
var result = [];
var len1 = array.length, len2 = result.length;
result[0] = 1;
for(var i = 1; i < len1; i++){
result[i] = array[i - 1] * result[i - 1];
}
var temp = 1;
for(var i = len1 - 2; i >= 0;–i){
temp *=array[i + 1];
result[i] *= temp
}
return result;
}
52.请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配
function match(s, pattern)
{
if(s === “” && pattern === “”){
return true;
}
if(!pattern || pattern.length === 0){
return false
}
var reg = new RegExp(‘^’ + pattern + ‘$’);
return reg.test(s);
}
53.请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,“-123”,“3.1416"和”-1E-16"都表示数值。但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
function isNumeric(s){
var reg = /1?(?😦\d+)(.\d+)?|(.\d+))([eE][±]?\d+)?$/;
return reg.test(s);
}
54.请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
function Init(){
streamNums = []; //定义一个全局变量, 不用var
streamNumsLen = 256; //定义一个全局变量, 不用var
streamNumsIndex = 0; //定义一个全局变量, 不用var
for(var i = 0; i < streamNumsLen; i++){
streamNums[i] = -1;
}
}
function Insert(ch){
var code = ch.charCodeAt();
if(streamNums[code] == -1){
streamNums[code] = streamNumsIndex;
} else if(streamNums[code] >= 0){
streamNums[code] = -2;
}
streamNumsIndex++;
}
function FirstAppearingOnce(){
result = ‘’;
var ch = ‘’;
最后
正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
= 0){
streamNums[code] = -2;
}
streamNumsIndex++;
}
function FirstAppearingOnce(){
result = ‘’;
var ch = ‘’;
最后
正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
[外链图片转存中…(img-SCSKm5ve-1715887325588)]
± ↩︎