当前位置: 首页 > 面试经验 >

地平线前端一面22-23年总结

优质
小牛编辑
96浏览
2023-04-23

地平线前端一面22-23年总结

面试软件用的腾讯会议,只有面试者开视频,用时30分钟,效率最高可当天出结果,基础和api问题很多

常考八股文,手撕,场景,看代码说输出

注重手写,js和react偏多,计网没有,webpack看下

  • 面试多会照着简历问,所以不熟的东西千万不要作死写上去
  • 手写一定要滚瓜乱熟,因为考的都是基础,所以面试时给你停顿时间不超过一分钟
  • 答不出来也不必紧张,面试官的目的就是深挖到你答不出来,只是为了摸清你了解到哪个程度,一般情况并不会因为你少部分答不上来就不要你了

x2表示地平线考过至少2次

说下防抖节流,说了使用场景和实现。(x2)

拍平数组(x2)

2023.4.14

面试全程40min左右,IC部门的

面试官是受托来面试的,不是搞前端的,虽然在交给我编程题时我有看到他那边2021前端面试题的文档,但是他并没有问我前端。

所以问了我数据结构的常用排序的时空复杂度,问了进程线程的区别,http这些计算机基础关键问题,最后给了我三道编程题,不限语言,尽快邮件交付即可。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>地平线前端笔试</title>
</head>

<body>
    <div>请输入时间: <input type="text" id="time" value="5"> <button onclick="startCount()">开始倒计时</button></div>

    <div>请输入字符串:<input type="text" id="str" value="abccbbb"> <button onclick="delRepeat()">开始去重</button> 结果为<input
            type="text" id="res"> </div>
    <div>请输入字符串(方法1:正则表达式):<input type="text" id="strAI2" value="3[abc]"> <button onclick="repeatAIReg()">开始重复</button>
        结果为<input type="text" id="resAI2"> </div>
    <div>请输入字符串(方法2:压栈):<input type="text" id="strAI1" value="3[2[a]2[b]]"> <button onclick="repeatAI()">开始重复</button>
        结果为<input type="text" id="resAI1"> </div>

</body>
<script type="text/javascript">
    //倒计时
    let c = 0;
    let t;

    function timedCount() {
        c -= 1;
        document.getElementById("time").value = c;

        if (c === 0) {
            clearTimeout(t);
            return;
        }
        t = setTimeout(function () {
            timedCount()
        }, 1000);
    }

    function startCount() {
        c = document.getElementById("time").value;
        timedCount();
    }
    //倒计时

    //消除相邻字符串

    function delRepeat() {
        let str = document.getElementById("str").value;
        for (let i = 1; i < str.length; i++) {
            let flag = false;//是否删除过重复元素
            if (str[i] === str[i - 1]) {
                flag = true;
                let j = i;
                while (j < str.length && str[j] === str[i - 1]) j++;//直到找到不与前者相等的元素
                str = str.substring(0, i - 1) + str.substring(j, str.length);//删去重复的子串,将剩余的子拼接
            }
            if (flag) i -= 2;//回到被删的前一个元素,再次遍历,下一步会i++,所以i-=2;
        }
        document.getElementById("res").value = str;
    }
    //消除相邻字符串

    //智能重复

    //方法2:正则表达式
    function repeatAIReg() {
        let str = document.getElementById("strAI2").value;
        const regex = /\d+\[[a-zA-Z]+\]/g;//获取cnt[str]格式的字符串数组  
        while (str.match(regex)) {
            let arr = str.match(regex);
            for (const s of arr) {
                let cnt = /\d+/g.exec(s);//获取cnt
                let subStr = /(?<=\[)([a-zA-Z]+)(?=\])/g.exec(s)[0];//获取[str]中的str
                let repeatStr = subStr.repeat(cnt);
                str = str.replace(s, repeatStr);
            }
        }
        document.getElementById("resAI2").value = str;
    }
    
    //方法2 压栈
    function repeatAI() {
        let str = document.getElementById("strAI1").value;

        let subStr = '';
        const stack = []
        for (const s of str) {
            if (s === ']') {
                let cur = stack.pop();
                while (cur !== '[') {//获取'[xxx]'
                    subStr = cur + subStr;
                    cur = stack.pop()
                }

                let num = '';
                cur = stack.pop()
                while (Number.isInteger(parseInt(cur)) && stack) {//拼接数字
                    num += cur;
                    cur = stack.pop()
                }
                //将多取出来的放回去 
                if (cur) stack.push(cur);
                //将算好的字符串放入栈
                stack.push(subStr.repeat(parseInt(num)))

                subStr = '';
                cur = ''

            } else {
                stack.push(s);
            }
        }
        document.getElementById("resAI1").value = stack.join();
    }


    //智能重复

</script>

</html>

因为23年没有什么参考,所以整理了22年的,22年面经如下,从新到旧排序

2022.8.23

1.自我介绍

2.实现两栏布局,说了三种

3.判断一个对象是空对象,说了stringfiy和object.keys

4.说下防抖节流,说了使用场景和实现。(x2)

5.然后看了几个作用域的题目,事件循环题。

6.字符串计数,用map实现,延伸一下求最多的字符,统计map中value最大的。

7.vue2和vue3区别。可从用法到源码都说了一遍。

8.vue和react区别。可从用法到源码说了一遍

9.vue实现数据响应。说了下watch。

10.说下watch和compute区别,秒了。

11.es6有哪些新特性,项目中用了。说了七八个。

12.手写拍平数组,秒了。

13.手写深拷贝,秒了。

2022.8.5

  1. 为什么要来前端岗位?
  2. 从整体的角度来说一下前端技术?(这种开放题反而有点不知道怎么回答)
  3. 项目中的防抖和节流技术,应用场景
  4. 手写防抖,延伸出防抖里面函数如何接受参数?使用闭包实现出来
  5. Promise是什么?
  6. 如何解决回调地狱问题的?
  7. then和catch的区别是什么?
  8. 原型链是什么?为什么用它?
  9. 根据原型链延伸出了n多个题目,具体到每条线都要理解

2022.7.22

1.首先进行自我介绍

2.实现左边固定,右边自适应布局

我答的是用左边盒子固定宽度,右边BFC盒子

3.还是上面那个问题,用flex布局怎么实现

4.怎么判断是不是一个对象类型

用typeof判断会有弊端,然后我从底层存储数据类型解释了为什么null会被typeof误判成对象

然后我介绍了使用 Object.string可以准确判断一个类型的类别

5.面试官共享屏幕问js执行题的输出

考点一:块级作用域和全局作用域

考点二:根据作用域链查找输出变量显示的值

考点三:事件循环机制,setTimeout内部打印for循环的i变量

考点四:上题var 改成let后的输出是什么,为什么

6.你会vue是吧?问你点vue知识,watch和computed的区别

从应用场景进行解释,另外computed具有缓存上次值的功能。

7.了解slot插槽么?

这个没咋用过

8.用过react么?

没用过

9.考查算法思想:高维数组如何进行平铺成一维数组?

没答好,我只能想出二维变成一维的办法

10.反问环节:部门使用的是vue技术还是react技术呢?

react。

基于我今天的面试表现您对我有什么学习建议?

其他都挺好,算法能力可能差了点。建议我多练练算法。

用时30分钟

2021地平线笔试一二三面

2023年最全前端面试(20w字)HTML5+CSS3+JS+TS4+Vue3+React18+八股文+手写+项目+笔试 涵盖了大部分知识点,部分目录展示

#软件开发2023笔面经##地平线##面试##前端##实习#
 类似资料: