js 的基本数据类型
null 和 undefined 的区别
Number(null)
和 Number(undefined)
输出啥
0 和 NaN
parseInt(undefined, 10)
输出啥
NaN
bigint 听过没
BigInt 是一种内置对象,它提供了一种方法来表示大于 253 - 1 的整数。
数组去重的方法
new Set().map 可以用吗
不可以!!! Set
只有 has
,add
,delete
,clear
方法以及 size
属性,可以使用 keys()
,values()
,entries()
,forEach()
const a = [1,2,3].map(k => console.log(k))
的返回值是啥
[undefined, undefined, undefined]
vue 中 key 为什么不能用 index
js 的事件执行机制
一段代码确定输出
console.log('1'); async function fun1() { console.log('2'); await fun2(); console.log('3'); } async function fun2() { console.log('4'); } process.nextTick(function () { console.log('5'); }); setTimeout(function () { console.log('6'); process.nextTick(function () { console.log('7'); }); new Promise(function (resolve) { console.log('8'); resolve(); }).then(function () { console.log('9'); }); }); fun1(); new Promise(function (resolve) { console.log('10'); resolve(); }).then(function () { console.log('11'); }); console.log('12'); // 答案是我的回答 // 1 // 2 // 4 // 10 // 12 // 5 // 3 // 11 // 6 // 8 // 7 // 9
process.nextTick()是在这一轮的事件循环末执行还是在下一轮的事件循环初执行还是在两者之间执行
process.nextTick 这个名字有点误导,它是在本轮循环执行的,而且是所有异步任务里面最快执行的。 Node 执行完所有同步任务,接下来就会执行 process.nextTick 的任务队列。
手撕代码
给定一个数组 const a = [-1,3,2,4,5,-6,7,-9];将这个数组正负数交叉排序,0 当做正数处理,返回[3,-1,2,-6,4,-9,5,7]
页面上有一个正方形的 div(红色),如何使得用户看不见它
通过 css scale 缩放成 0(面试官想让我说这个,愣是想不到)
反问
(1)业务 面向海外的创意,给广告主提供创意的 (2)技术栈 react 公司自己开发的组件库 (3)部门规模 不到150人 这个部门刚成立2个月
业务
这跟我的项目有关 cpm是什么?(千次展示费用,即广告展示一千次需要支付的费用。...忘了) 那你把你知道的说一说?次留率 消费成本 激活数 点击率 那次留率,激活数是什么?
项目的难点
vue data 中有一个数据 a: null,现在要监听 a 变化,但是只能变化一次.比如(null->1 行, 1->2 就不能变化了)
设计一个树形组件(可以展示层级的一个菜单)
比如实现这样的菜单 - 上海 - 浦东 - 张江 - 唐镇 - 长宁 - 松江 数据是类似这样的格式: treeData = [ { name: '上海', level: 1, children: [ { name: '浦东', level: 2, children: [ {name: '张江', level: 3, children: null}, {name: '唐镇', level: 3, children: null} ] }, {name: '长宁', level: 2, children: null}, {name: '松江', level: 2, children: null} ] } ] 我的思路是写一个方法,递归调用给的数据,最后这个方法返回的是一个拼接好的模板字符串,放到template中 面试官问这种方式行不行:(别问,问就是行!思路大概是递归调用组件) <tree :data=treeData/> <div> {tree.name} <tree :data=treeData.children v-if="Array.isArray(treeData.children)"/> </div>
vue 的路由模式
前端你想走什么方向
代码题
fs.readFile('/etc/passwd', (err, data) => { if (err) throw err; console.log(data); }); // 实现一个promisify(fn)函数 const readFile = promisify(fs.readFile) // 效果 readFile('/etc/passwd').then((data) => {}, (err) => {}) // 面试官提示 promisify(fn) fn = (...args, (err, data) => { }) // 实现promisify function promisify(fn) { return function () { let args = [...arguments]; return new Promise((resolve, reject) => { fn(...args, (err, data) => { if (err) reject(err); resolve(data); }) }) } }
反问
自我介绍
为什么没有继续实习
说一说你认为最有成果的项目
现在让你自己对自己提需求,你觉得项目还有哪些改进点
如何学习前端的,接下来准备学习什么
手撕代码:
倒计时 截止时间 2020年11月11日 0点 显示“剩余XX天XX时XX分XX秒” 每秒刷新一次
let deadline = new Date('2020/11/11 00:00:00').getTime(); window.setInterval(getDeadline, 1000); function getDeadline() { let cur = Date.now(); let time = deadline - cur; let day = parseInt(time / 1000 / 3600 / 24); let hour = parseInt((time - day * 24 * 3600 * 1000) / 1000 / 3600); let min = parseInt((time - day * 24 * 3600 * 1000 - hour * 3600 * 1000) / 1000 / 60); let sec = parseInt((time - day * 24 * 3600 * 1000 - hour * 3600 * 1000 - min * 60 * 1000) / 1000); // 都显示成两位数 1 -> 01 day = ('00' + day).slice(-2); hour = ('00' + hour).slice(-2); min = ('00' + min).slice(-2); sec = ('00' + sec).slice(-2); console.log(`剩余${day}天${hour}时${min}分${sec}秒`); }
反问
hr 面基本就是聊天了,只有七八分钟
本文作者:前端小毛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!