公司招聘前端,来的人让我头皮发麻

2021-03-22 17:10:14 +08:00
 xiaoming1992

笔试第一题, ul 下面 5 个 li, 需要实现点击 li 时打印 li 的 data-content

有看着不会下手的

有解答如:

let a1 = document.querySelector("ul li:first-child")
a1.addEventListener(...)

let a2 = document.querySelector("ul li:nth-of-type(2)")
a2.addEventListener(...)

// ...

到公司面试的人, 答得最好的是下面这个:

const list = document.querySelectorAll("li")
for (let i of list) {
  i.addEventListener(...)
}

笔试题可以不动手写, 简单讲一讲思路就行, 一个 PascalCase to kebab-case 字符串转换函数(所有题目里难度次高的一道题), 有一位面试者没做, 我就简单问了问思路, 说到判断一个字符是不是大写字符, 其实平常肯定不会问这么 xx 的问题的, 但是我突发奇想, 就问了一嘴, "那怎么判断它是不是大写字符呢?", 然后他想了一会之后说, 这个问题我牵涉的比较少, 然后我就只能 "行, 那我们看下一题吧"...

在这儿要跟一位不知名 V 友说声抱歉, 其实他远程笔试答得还是很好的, 但是因为一些其他客观原因, 被 hr 否了

1629 次点击
所在节点    前端开发
10 条回复
ReputationZh
2021-03-22 18:28:49 +08:00
……我也想知道在前端里,如何判断大写字母,难道用正则?
pangbeilei
2021-03-22 19:04:10 +08:00
想知道被否的那位客观原因指的哪方面的?
noe132
2021-03-22 20:51:32 +08:00
@ReputationZh 正则[A-Z],判断 charcode,甚至可以直接 letter >= 'A' && letter <= 'Z'
xiaoming1992
2021-03-23 12:22:52 +08:00
@ReputationZh 其实在 replace 方法里使用正则 A-Z,根本不需要额外判断了,他说判断,我才问他怎么判断。可以获取 ascii 值判断范围,可以直接使用大于号小于号,甚至直接 [A, B, C,...].includes() 都算对

@pangbeilei 我的问题,第一次发布招聘贴没经验,等那位兄弟发过简历,hr 跟他联系之后跟我说,外地的不太合适。我一方面没有考虑到会有外地的投,一方面没有考虑到公司会不喜欢外地的,所以感觉很抱歉
aaniao002
2021-03-23 19:31:39 +08:00
我觉得看公司吧,如果要招来自己培养,会简单的 javascript 就好,要厉害点的,可以试试 www.caniuse.com 上面抽几个常用 js function 和 css 考浏览器支持情况。再顶尖的请直接发设计稿。
xiaoming1992
2021-03-23 22:39:56 +08:00
@aaniao002 其实我们的要求已经一再降低了(毕竟薪资也不多。。。),只要基础的 js 过得去就行,可问题是来的一大半,连一句完整合法的 js 语法都写不出来,一个个经验都是两三年的。。。行,你这两年只用 vue,忘了 js 的语法,那你把他当成 vue,大致讲讲思路吧,思路也讲不出来。。。
cyrbuzz
2021-03-24 16:19:14 +08:00
```
const list = document.querySelectorAll("li")
for (let i of list) {
i.addEventListener(...)
}
```
这个有啥不好吗,除了没限定 ul?

当然也可以给 ul 加事件判断冒泡的发起元素,这样只需要监听一次点击事件。
xiaoming1992
2021-03-25 00:31:03 +08:00
@cyrbuzz 肯定要搞一下事件委托啊。其实他们这样写,我都会问一句,"那如果我 li 很多,需要绑定很多次事件,能怎么样优化一下吗"。我感觉前端看到这样的题目,本能就会想到事件委托吧,难道我想错了?
mayliya
2021-03-27 14:06:46 +08:00
我突然有点自信了
KouShuiYu
2021-04-08 18:08:35 +08:00
```js
document.querySelector('ul').addEventListener('click', (event)=>{
console.log(event.target.innerText)
});
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX