Function.prototype.bind2 = function (context) {
if (typeof this !== "function") {
throw new Error("Function.prototype.bind - what is trying to be bound is not callable");
}
var self = this;
var args = Array.prototype.slice.call(arguments, 1);
var fNOP = function () {};
var fbound = function () {
self.apply(this instanceof self ? this : context, args.concat(Array.prototype.slice.call(arguments)));
}
fNOP.prototype = this.prototype;
fbound.prototype = new fNOP();
return fbound;
}
前言
今天终于收到富途的offer啦,和大家分享一下面试的全过程。感觉整个过程都比较顺利,富途对css基础,js基础,网络安全,项目经验,算法,个人软实力都有所考核,算是比较全面的吧。
整个流程是:笔试+一面+二面+CTO面+HR面
笔试
小题
1. 写出在html头部中,设置设备宽度等于页面宽度的属性标签
答:
2. css选择器的优先级
答:标签选择器 < 类选择器 < ID选择器 < 内联style < !important
3. BFC的概念和特性
答: BFC——块级格式化上下文
4. 使用雪碧图的关键css属性是什么
答:background-position
5. 基础类型
答:number,boolean,string,null,undefined,symbol
6. onLoad 和 DOMContentLoad 的区别
答:
7. this
答:2
8. 原型
答:只有函数有prototype属性,所以undefined
9. 事件队列
10. 严格模式
答:
大题
1. bind函数的实现
答:以下是网上比较标准的答案,我当时没想到继承这方面。
2. js深拷贝的实现
答:注意几个点
3. trim的实现
答:str.replace(/(^\s)|(\s$)/g, "")
一面
面试官考察了一下笔试题后开始面试,大都是问前端的基础问题
了解目前团队,对项目的角色定位,负责过的东西
答:略
项目中对通用组件的处理
答:
vue中watch和computed的区别
答:
vue官方文档描述得相当详细,大家可以参考文档👇
事件队列EventLoop
答:回答以下关键点
快速排序和归并排序的大致实现以及其复杂度
答:
说一下遇到过的网络安全问题以及解决方案
答:当时结合项目说了一下XSS攻击的防范和CSP防御
HTTP缓存问题以及304的情况
答:略
实现判断A数组是否是B数组子集
答:忘了。。。
移动端开发时遇到的兼容问题和调试方式
答:
二面
二面的面试官应该是web端的负责人,不再问前端知识,更多是问一些实际情景解决方案和网络安全。
两个水桶各装着x升颜料,一个红颜料,一个蓝颜料,现在从蓝桶往红桶勺y升蓝颜料,再从红桶勺y升颜料回蓝桶,请问两个桶的红蓝比例是多少?
答:一个是x/y,一个是y/x
一个抽奖程序的前后端逻辑
回答的过程中一直有和面试官讨论我的想法和出发点,最后回答了以下几点:
网络安全的手段
答:
冒泡排序的实现,复杂度以及优化
答:
首屏优化手段
答:
SPA的优缺点
答:
为什么百度的图片用另外的域名而不是主网站的域名
答:可以从CDN和携带cookie两个方面回答
最后是一道计算个人所得税的填空代码题,很简单
答:略
三面
CTO面应该是想了解你的整体能力,沟通能力,考察你是否符合公司人才标准,以及对代码的规范和对问题思考的全面深入程度。
三面我只分享一下题目,大家可以独自去思考和网上搜索答案。
1. 将for循环改为goto语法
2. 实现一个求中位数的函数,middle(a,b,c)
3. 实现一个生成3~7区间的随机整数的函数
4. 大医院每天接生100人,小医院每天接生50人,哪个医院能达到“生男孩几率大于60%”的目标的多一点?
四面
最后的HR面问的也是比较经典的问题
最后
希望大家都能拿到自己心仪的offer,有任何疑问都可以在评论区一起讨论啊~谢谢支持🙏
完