京东一面记录
公司: 京东(北京)
一面时间:2022-2-14 下午2:30-4:30
时长:1hour左右
你了解的js的数组的方法,聊一聊?
- forEach
- map
- filter
- reduce
- indexOf
- include
- includes
- find
- findIndex
- pop
- push
- shift
- unshift
- splice
- slice
- every
- some
- isArray
- concat
- from
- reverse
- sort
splice方法的参数解释一下?
点击ul中的li时如何获取到这个li,然后弹出li里面的内容?
event.target 和 event.currentTarget 的区别?
event.currentTarget 获取到的是发起事件的标签元素
event.target 获取的是触发事件的标签元素
遍历children直接给children绑定事件有什么不好的地方?
代码输出结果?原因?
var a = 10
function b() {
a = 100
}
b()
console.log(a)
代码输出结果?原因?
var a = 10
function b() {
var a = 100
return
function a() {}
}
b()
console.log(a)
var和let的区别?
什么是块级作用域?
大括号包裹的就是块级作用域
代码输出结果?原因?
const name = 'name'
const obj = {
name: 'obj',
a: () => {
console.log(this.name)
}
}
obj.a.call(name)
箭头函数是干嘛的?
代码输出结果?原因?
let arr = []
for(let i = 0; i < 10; i++) {
arr.push((finish) => {
console.log(i)
return function() {
finish()
}
})
}
const func = arr.reduce((pre, cur) => cur(pre))
func()
什么是程序(用计算机的术语回答)?
程序是指令集合
代码输出结果?原因?
const obj = {
a: '1'
}
obj.a??obj.a
代码输出结果?原因?
console.log(2.1 << 1)
数字转千分制字符串
function format_with_regex(number) {
//write code
}
//方法一
const format_with_regex = (number) => {
let str = number + '', res = ''
for(let i = 0; i < str.length; i++) {
res += str[i]
if((str.length - i - 1) % 3 === 0 && (str.length - 1) !== i) {
res += ','
}
}
return res
}
//方法二:正则表达式
const format_with_regex = (number) => {
let num = String(number)
return !num.includes('.')
?
num.replace(/\d{1,3}(?=(\d{3})+$)/g, (match) => match + ',')
:
num.replace(/\d{1,3}(?=(\d{3})+(\.))/g, (match) => match + ',')
}
useMemo和useCallBack的区别?
在哪些地方会写hook?写hook的规范?在任何地方都能使用hook吗?
自定义hook(用use开头),函数组件hook
正向代理和反向代理?
- 正向代理:客户端部署代理服务器,客户端发送请求给代理服务器,代理服务器发送给目标服务器,目标服务器返回给代理服务器,代理服务器转发给客户端。(服务端并不清楚谁发给了我)
- 反向代理:服务端部署代理服务器,代理服务器负责接收请求和相应业务。(客户端不清楚发给了谁)
什么是跨域?
端口,协议,域名不同就是跨域
如何解决跨域?
- cros
- jsonp
jsonp如何获取到后端的数据的?
一面的问题比较基础,准备二面了,面试官不纠结你是否答对,而是看你思维的思考过程是怎么样,答错了也没关系,但是要把思考说出来