- 40min
- 自我介绍
- 项目介绍
- 项目遇到的困难以及是怎么解决的
- 手写代码部分
// 1.手写call(当时没写出来)
Function.prototype.mycall = function (thisArg, ...argArray) {
thisArg = thisArg != undefined && thisArg != null ? Object(thisArg) : window
// 使用this绑定规则中的隐式绑定,
let fn = this
// 让fn中的this指向thisArg
thisArg.fn = fn
let res = thisArg.fn(...argArray)
delete thisArg.fn
return res
}
// 第二题,力扣70,爬楼梯
var climbStairs = function(n) {
let dp = new Array(n);
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(let i = 3; i <= n; i++){
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n]
};
// 第三题,不用Set在O(n)时间复杂度的情况下实现数组去重
// 口撕了用map实现
- 讲讲Vue的数据劫持
- 后面深挖了挺多原理的:(被问死了)
- 1.vue是怎么监听字符串的变化的,为什么无法监听数组和对象的属性变化。
- 2.vue怎么把模板解析成AST,具体有什么方法。讲了切割token流的方法,问我还有什么方法(这块拷问了很长时间),怎么遍历的巴拉巴拉
- 3.怎么去获取节点的属性呢
- Webpack中loader和plugin的区别和作用
- Git里面merge和rebase的区别
- 没回答好,大概这么说吧
- merge和rebase都是合并历史记录,但是各自特性不同:
- 1.通过merge合并分支会新增一个merge commit,然后将两个分支的历史联系起来其实是一种非破坏性的操作,对现有分支不会以任何方式被更改,但是会导致历史记录相对复杂
- 2.rebase会将整个分支移动到另一个分支上,有效地整合了所有分支上的提交,主要的好处是历史记录更加清晰,是在原有提交的基础上将差异内容反映进去,消除了 git merge所需的不必要的合并提交
- 怎么用git rebase解决代码冲突(git rebase --continue)
- 实习时间
- 能否接受工作地点在杭州,一天150-200
- 能否接受周末加班
- 有没有其他offer
- 希望在实习的过程中收获到什么
- 有无自己封装组件库的经历
- 怎么接触前端的,怎么学习的
- 你觉得你和其他人相比突出的优势
- 总结,这是在我出游大计之前几小时的面试,当时已经迫不及待想出去玩了,就随便面面,没想到被狠狠拷打了原理,直接寄。而且面试官后面这个问法感觉去了也是当牛马,还好挂了
#23届找工作求助阵地##我的实习求职记录##我的实习日记##我的求职思考##得物#