2024秋招海康威视前端笔试大题笔经
杂谈
考得不是很难,一开始进去会让你选自己的技术栈(Vue,React和Angular),单选和多选涉及html、css、js、你选的技术栈、webpack、路由等等,考完就忘了,难点可能在模棱两可的选项吧。
大题及大致解析
论述题
- 论述题两道
- 是文本编辑框,不是代码ide,但是写了代码
1. html和htmls的区别
我答了七点,大概内容围绕:啥是html和htmls,名字差异,安全性(SSL/TSL),证书,端口号,SEO,htmls更受推荐,htmls可能会更慢
2. 什么是深拷贝?什么是浅拷贝?如何实现?
一开始说一下定义,深拷贝复制的是整个属性内容,拷贝内容变了被拷贝内容不会变;浅拷贝复制的是指针引用,最浅一层数据,拷贝内容变了被拷贝内容会变等等,差不多就那个意思
浅拷贝的实现:扩展运算符(如 [a, ...b]
),Object.assign()
,直接赋值等等深拷贝的实现:lodash的 cloneDeep()
,手写递归实现
// 随手写的,大概的思路伪代码(?),不一定对 function deepClone(obj) { if(typeof obj !== 'Object' || obj === null){ return obj; } const newObj = obj instanceof Array ? [] : {} for(let i in obj){ if(typeof obj !== 'Object' || obj === null){ newObj[i] = obj[i]; } else { deepClone(obj); } } return newObj; }
编程题
- 两道题,平台自带IDE,不可调试,可以自测,切题的地方我还找了一会儿,难度不高
1. 大人小孩排队
大概的意思就是形似 [1, 2, 3, 0, 0, 1, 2]
这样的数字,0
是小孩子,其它是大人,大人往前排,小孩子往后排,排成 [1, 2, 3, 1, 2, 0, 0]
这样。难度不高,可以直接记忆化搜索。
... // 仅包含重点代码(复盘时再写的,可能有错) function queue(nums) { // 一个就不排了 if (nums.length <=1) { return nums; } let idxMemo = -1; for (let i = 0; i < nums.length; i++) { if (idxMemo === -1 && nums[i] === 0) { idxMemo = i; } if (idxMemo !== -1 && nums[i] !== 0) { nums[idxMemo] = nums[i]; nums[i] = 0; i = idxMemo; idxMemo = -1; } } return nums; } ...
2. 数组内是否存在 | nums[ i ] - nums[ j ] | ≤ t ,且 | i - j | ≤ k
如题所示,很简单
... // 大概思路 function avail(a, b, target) { return Math.abs(a - b) <= target; } function isExist(nums, t, k) { if (nums.length <= 1) { return false; } for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length - i; j++) { if (avail(nums[i], nums[j], t) && avail(i, j, k)) { return true; } } } return false; } ...#秋招##前端##2024秋招##笔试##我的实习求职记录#