拼多多|前端|一面+二面(提问篇)|2021 届秋招|
7195
2020.10.26
2020.12.04
发布于 未知归属地
  • 2021 届秋招拼多多前端一面+二面(提问篇)
  • 2021 届秋招拼多多前端一面+二面(解答篇)

一面

首先针对简历中的项目进行询问,了解完之后就开始考查算法题目了。

1. js 实现字符串去重

给定一个长度小于 50 且包含字母,数字和特殊字符的字符串,提取其中的数字和字母并且把数字去重,最后输出时数字在前面,字母放在后面,且维持在其原字符串中的位置。

# in: "14-4a635a*&Kco"
# out: "144635aaKco"

def solution(s):
    st = set()
    number = []
    string = []
    for i in s:
        if ord('0') <= ord(i) <= ord('9'):
            if i not in st:
                number.append(str(i))
                st.add(i)
        elif ord('a') <= ord(i) <= ord('z') or ord('A') <= ord(i) <= ord('Z'):
            string.append(i)
    return ''.join(number) + ''.join(string)

print(solution("14-4a635a*&Kco"))

2. js 深度优先实现一个深拷贝

function deepClone(obj = {}) {
    if (typeof obj !== 'object' || obj == null) {
        // obj 是 null 或者不是对象和数组,直接返回
        return obj;
    }
    let res;
    if (obj instanceof Array) {
        res = [];
    } else {
        res = {};
    }

    for (let key in obj) {
        // 判断自身中是否包含自身属性
        if (obj.hasOwnProperty(key)) {
            res[key] = deepClone(obj[key])
        }
    }
    return res;
}

二面(1h)

基础知识

  • 自我介绍,说一下自己的特点
  • react 组件的生命周期有哪些?
  • 你使用的是 15 版本还是 16 版本
  • useReducer 有几个参数?有什么作用?
  • useEffect 有几个参数?
  • react 里面的高阶组件怎么理解?
  • 有过高阶组件的使用场景吗?
  • redux 使用 connect 包裹出来的不是高阶组件吗?(是,掌握的不熟)
  • ES6 的新增特性
  • Symbol 类型有什么特点?与 Number,String 有什么不同?
  • Symbol 类型的唯一性怎么理解?
  • set,map 怎么理解?
  • 从 set 转成一个数组该怎么做?
  • set 元素的特点?(不重复)
  • 两个 NaN 的恒等的吗?为什么?
  • 两个 Symbol 类型的值是一样的,这两个 Symbol 相等吗?
  • Promise 的工作原理是怎样的?
  • Promise 的 then 为什么是异步的?(从微任务和宏任务解释)
  • ES6 还有哪些对象?(Proxy 和 Reflect)
  • DOM 的 api 分为几级?
  • 常用的 DOM 的操作方法?
  • 事件捕获和事件冒泡怎么理解?
  • 怎么阻止事件的冒泡?
  • 项目中用到了什么样式?使用的 css 还是 less?
  • 对 CSS 动画有了解吗?序列帧怎么定义?
  • 样式里的清除浮动怎么设置?为什么这样设置?
  • 浏览器缓存有哪几种?

笔试环节

1. 约瑟夫环问题(用 js 实现)
有一个数组 a[N] 顺序存放 0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

输入描述:

每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。

输出描述:

一行输出最后一个被删掉的数的原始下标位置。

输入例子:

8

输出例子:

6

2. js 实现翻转字符串

输入

'_www.Pin&^duoduo?com'

输出

'_www.niP&^oudoud?moc'

两道算法题答的都不理想,原因在于平时大部分算法题都使用 python 写的,js 语法都没掌握全,比如 js 中求字符串的 ASCII 码的方法忘记了😂

面试官前面基础知识问得很全面,问题切换的很快,通过这次面试还是看得出来基础知识掌握得不太扎实,广度和深度都有待加强。

评论 (1)