金三银四记录一次面试

102 阅读1分钟

其他问题

1.项目里遇到的困难和解决方法

2.react常用的API使用

3.vue 和 react 渲染的区别

4.webpack loader plugin

5.vdom

6.浏览器缓存

7.ref的用途

8.useMemo useCallback的用途

手写题

1. 按要求写出对应的hook

2.计算时钟分针和时针的角度

  let now = new Date();  
  let hours = now.getHours();  
  let minutes = now.getMinutes();  

  let hourAngle = (hours % 12 + minutes / 60) * 30;  
  let minuteAngle = minutes * 6;  

  hourAngle = (hourAngle + 90) % 360;  
  minuteAngle = (minuteAngle + 90) % 360;  

  return {  
    hourAngle: hourAngle,  
    minuteAngle: minuteAngle  
  };  
}  

let angles = getClockAngles();  
console.log("Hour Angle: " + angles.hourAngle);  
console.log("Minute Angle: " + angles.minuteAngle);

3.字符串大小写取反

    let reversed = '';  
    for (let i = 0; i < str.length; i++) {  
        const char = str[i];  
        if (char === char.toUpperCase()) {  
            reversed += char.toLowerCase();  
        } else if (char === char.toLowerCase()) {  
            reversed += char.toUpperCase();  
        } else {  
            reversed += char;  
        }  
    }  
    return reversed;  
}  

4.生成一千个不重复的四位验证码

    let codes = [];  
      
    // 生成随机四位数的函数  
    function generateRandomCode() {  
        let code = Math.floor(1000 + Math.random() * 9000);
        return code.toString().padStart(4, '0'); 
    }  
      
    while (codes.length < count) {  
        let newCode = generateRandomCode();   
        if (!codes.includes(newCode)) {  
            codes.push(newCode); 
        }  
    }  
      
    return codes;  
}   

5.给一个字符串 提取出需要的信息

    const userInfo = {};  
    const parts = userInfoString.split(' '); 
  
    for (let i = 0; i < parts.length; i++) {  
        const part = parts[i];  
        if (part.startsWith('Name:')) {  
            userInfo.name = part.substring('Name:'.length); 
        } else if (part.startsWith('Age:')) {  
            userInfo.age = parseInt(part.substring('Age:'.length), 10);
        } else if (part.startsWith('City:')) {  
            userInfo.city = part.substring('City:'.length);
        }  
    }  
  
    return userInfo;  
}  
  

6.找出字符串中连续出现最多的字符和个数

    if (!str || str.length === 0) {  
        return { char: '', count: 0 };  
    }  
  
    let maxChar = str[0];  
    let maxCount = 1;  
    let currentChar = str[0];  
    let currentCount = 1;  
  
    for (let i = 1; i < str.length; i++) {  
        if (str[i] === currentChar) {  
            currentCount++;  
            if (currentCount > maxCount) {  
                maxChar = currentChar;  
                maxCount = currentCount;  
            }  
        } else {  
            currentChar = str[i];  
            currentCount = 1;  
        }  
    }  
  
    return { char: maxChar, count: maxCount };  
}  

7.扁平化数组

function flattenArray(arr) {  
    let result = [];  
    for (let i = 0; i < arr.length; i++) {  
        if (Array.isArray(arr[i])) {  
            result = result.concat(flattenArray(arr[i]));  
        } else {  
            result.push(arr[i]);  
        }  
    }  
    return result;  
}