前端面试真题

简介: 前端面试

1.冒泡排序 选择排序
冒泡排序
冒泡排序规则:前后两两进行比较,如果符合比较的条件,就交换两个数的位置,直到所有的数据,都符合从小到大条件,结束排序。
规律:每一轮比较,都会找出一个较大的数,放在正确的位置。
比较的轮数 = 数组长度 - 1;
每一轮比较的次数 = 数组长度 - 当前轮数;
具体代码如下:

//冒泡排序
let arr = [100, 55, 5, 20, 8];
for (let i = 0; i < arr.length - 1; i++) {  //决定比较几轮
   for (let j = 0; j < arr.length - i - 1; j++) {  //决定每一轮比较多少次 
       if (arr[j] > arr[j + 1]) {
           let temp = arr[j];  // 变量互换位置
           arr[j] = arr[j + 1];
           arr[j + 1] = temp;
       }
   }
}
console.log(arr); // [ 5, 8, 20, 55, 100]

选择排序
规律:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。
比较的轮数 = 数组长度 - 1
每一轮比较次数 = 数组长度 - 当前轮次

具体代码如下:

//用选择排序的方法从小到大排列数组元素。
let arrs = [9, 8, 7, 6, 5, 4];
//比较的轮数
for(let i = 0; i < arrs.length - 1; i++){
    //每轮比较的次数
    for(let j = i + 1; j < arrs.length; j++){
        if(arrs[i] > arrs[j]){
            let tmp = arrs[i];
            arrs[i] = arrs[j];
            arrs[j] = tmp;
        }
    }
}
console.log(arrs);  //[ 4, 5, 6, 7, 8, 9 ]

2.字符串中大写字母出现的次数
思路:用ASCII码 来判断 65-90 是大写字母的范围

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。
具体代码如下:

let str = 'ASDdvdbFDGFGNaaR';
let temp = 0;
for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
        temp++;
    }
}
console.log(temp);  //10

3.字符串中字母相同的个数
思路:声明一个空的对象,用字符串中的值 作为对象的key 键名 value为存在的个数

let str2 = 'aaabbbfgtfffdfhgnfh';
let obj = {}; //声明一个空的对象  对象中的key值是不能重复存在的  所以用str2里的每一个字母作为key的值
for (let i = 0; i < str2.length; i++) {
    let char = str2.charAt(i);  //遍历出str2里面的每一个字母
    if (obj[char]) {
        obj[char]++;  //存在则++
    } else {
        obj[char] = 1;  //不存在则value 赋值为1
    }
}
console.log(obj);

4.数组去重
第一种方法(set,get)
set里不可以出现重复的元素 并且是无序的

let arr2 = [10, 10, 50, 60, 82, 50, 10, 65, 80, 90];
let setArr = new Set(arr2);  //去重了  但是没有顺序  Set { 10, 50, 60, 82, 65, 80, 90 } 是一个对象
let getArr = Array.from(setArr);  // [10, 50, 60, 82, 65, 80, 90]  去重并且排序
console.log(getArr);

第二种方法(indexOf)
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。–有值
没有值则返回 -1;

let temp2 = [];

for (let i = 0; i < arr2.length; i++) {
    if (temp2.indexOf(arr2[i]) === -1) {
        temp2.push(arr2[i])
    }
}
console.log(temp2);
相关文章
|
3月前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
24天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
60 1
|
2月前
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
3月前
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
1月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
3月前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
52 2
|
3月前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
39 0
|
3月前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
44 个 React 前端面试问题
|
3月前
|
存储 JavaScript 前端开发
|
3月前
|
Web App开发 存储 缓存
下一篇
无影云桌面