58同城23前端卷总结
编程题
1.机器人送餐最短路径
- 58充电堡餐厅为了提升员工就餐体验,研发一个送餐机器人,用于为在线下单的就餐人员送餐。
- 餐桌分布为一个比较工整的网格图,每一个餐桌座位都是坐标轴上第一象限中的一个整点,如图所示。
- 员工随意挑选座位后并下单。厨房收集订单信息。由机器人从默认起始位置(0, 0)开始送餐
- 机器人每1步只能移动一个座位,不能走对角线。机器人可以向x轴正方向,x轴负方向,或者y轴正方向移动1个单位(出于某种原因,机器人不能向y轴的负方向移动)
- 例如,如果当前时刻机器人所在的坐标为(x, y),下一步机器人可能可以到达的位置为(x + 1, y),(x - 1, y)或者(x, y + 1)。当机器人到达某个餐桌座位时,就餐人员就会立即取餐。一旦机器人分发完所有的饭菜,则表示送餐结束
- 写一个函数delivery,帮它计算一下送完一次订单最少所需要花费的总步数
1 |
|
2.字符串截取
请从一个字符串中找出符合要求的子字符串(子串:字符串中一段连续的片段),并输出该子字符串。
要求:
1、子字符串长度最长,且不包含重复字符。
例如:”qwertezxc” 数组中,最长且不包含重复字符子串是:”rtezxc”
2、如果存在两个同等长度的子串,则优选取首字母下标靠前的子串。
例如:“abcdeabc” 的子串 “abcde” 和 “bcdea” 的长度都是5,但是“abcde”的起始位置小于“bcdea”,则输出“abcde”
1 |
|
选择题错题整理
- a,b,c值分别是什么:
1 |
|
A false,true,true
B true,true,true
C true,false,false
D true,true,false
16.以下代码块执行结果是 A
1 |
|
A AaCA; aABCA
B AABCA; AaCA
C AaCA; aaaCA
D AaCA; AaCA
解析:/[AB]/
是一个简单的正则表达式,用于匹配单个字符,这个字符可以是 A
或 B
。/[AB]/
是一个简单的正则表达式,用于匹配单个字符,这个字符可以是 A
或 B
。
20.以下输出结果 D
1 |
|
A 10
B 20
C 30
D undefined
解析:箭头函数 console: () => { ... }
内的 this
指向的是定义它的上下文,而在浏览器环境中,全局对象 window
中并没有 a
属性,因此 this.a
返回 undefined
。
- 以下输出结果 D
1 |
|
A [2, ‘’, 0, 1]
B [‘2’, ‘’, ‘0’, ‘1’]
C [0, 1, 2, ‘’]
D [‘0’, ‘1’, ‘2’, ‘’]
解析:key按顺序排列
- 箭头函数是普通函数的简写,可以更优雅的定义一个函数,和普通函数相比,以下差异说明错误的是A
A 函数体内的 this 对象,就是使用时所在的对象,而不是定义时所在的对象
B 不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替
C 没有自己的 this,无法调用 call,apply
D 不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数