Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

面试 集合 #25

Open
plh97 opened this issue Apr 13, 2018 · 1 comment
Open

面试 集合 #25

plh97 opened this issue Apr 13, 2018 · 1 comment
Assignees
Labels
diary 记录一些生活上的感想 javaScript 关于js的一些事

Comments

@plh97
Copy link
Owner

plh97 commented Apr 13, 2018

阿里 外包

阿里的同学真给力,长达50分钟的电话初面。

hr: 你好,我是阿里的,说说你现在工作内容吧。
我: 我现在在做公司后台系统,用vue重构,同时做小程序。

hr: 你在做的过程中,遇到的难题,克服的困难。
我: 小程序商品详情页面有个弹框,我负责实现他的功能,让他在同时满足3个条件的情况下弹出,(这不是我的店铺,我第一次进到商品详情页面,我有店铺可以回去)才弹出该弹框。

hr: 嗯嗯,还有呢?
我: 公司业务做得少。(本来想说上家公司的那个webpack分批打包业务的。有点捉急mmp)说个自己的项目吧,最近有做一个围住神经猫的小游戏,遇到的困难自然是A算法,路径问题,……%¥&……

hr: 这个用库就可以了,网络上一堆,我想问的是,你做的东西对公司有什么帮助,你能不能说一些和公司业务相关的东西。这个问题就算了,你说一下,现在有一个数组,用一个函数就可以得到他的所有名字
我: arr.filter(e=>e.name==='peng').map(e=>e.name); O(1)复杂度吧。
hr: 用一个函数就做到它。
我: 不会,只能用两个。答案如下。。。

var arr = [
	{name:'xiaoming',id:"123"},
	{name:'xiaoming',id:"456"},
	{name:'xiaoming',id:"789"},
	{name:'xiaohua',id:"101112"},
	{name:'xiaowang',id:"131415"},
	{name:'xiaohong',id:"161718"}
];
res = arr.filter(e=>e.name==='xiaoming').reduce((all,e)=>{
	return {name: 'xiaoming',id:[...all.id , e.id]}
},{name:'xiaoming',id:[]})
console.log(res);

hr: 看过你写的 #8 这个issue,35条网络优化建议,你有哪些在公司这里用过。

我: 三级域名 api.vmei.com, static.vmei.com这种,静态资源设置缓存,同时静态资源不携带cookie,可以加速访问静态资源。开启http2,加速网络资源。

hr: 说一下http2与http1的区别.

我: http2采用二进制数据输送,比http1快很多,可以实现资源传输的优先级顺序,实现先加载css,再加载js,http2可以开启google那个加速模块。

http2开启了线路复用, 即可以共享连接,他是之前Google加速模块SPDY的升级版,采用二进制传输,有更强健壮性。header的压缩,服务端推送。有请求优先级别选择。

hr: 还有呢?你为什么开http2?

我: 因为看到京东也开了http2,所以我也开。

hr: 那你知道我们公司都没有全部开启https,你知道为什么么?你都没有去理解其中的原理,就跟风。。那你说一下http2如何开启吧,

我: 先开https,要有一个证书,用的let encrypt.

hr: https和http区别,以及你为什么要用https

我: 中间套一层tcl或者ssl加密层,对数据加密,https更加安全。其实翻墙也是同样的原理,中间套一层ssl加密,让防火墙无法识别数据,从而达到防火墙无法过滤信息的目的。

这个真说错了,shadowsock是基于socket5协议来做的,只不过搬瓦工刚好占用了443端口而让你误以为是https.

hr: 大概说说react的生命周期。以及ajax函数放在生命周期那个阶段最好。

我; 大概分为三部分 生成组件,挂在组件,销毁组件,以及一些componentwillReciveProp,shouldcomponentupdate之类的吧。ajax请求自然是放在created里面最好,放在组件生成的阶段。

hr: 你说的是vue吧,算了setState也懒得问你了。

😰尴尬的一b,其实是应该放在componentDidMount,因为真实Dom还没挂载,无法实现ajax请求,太久没做,忘光了。

hr: 如何防止this作用域紊乱。

我: 箭头函数内部没有this,所以多用箭头函数,bind也可以改变this指向。

hr: 说说webpack如何进行性能优化吧,在原有脚手架基础上。

我: 我觉得vue-cli已经做的非常好了,没有优化必要。我用的webpack3-4,从我接触到webpack的时候就已经 是webpack3了,

hr: 这个肯定是有的,最优配置都是自己做出来的。像我们公司从前的webpack打包要6分钟,现在我们优化到只要 1分钟,我们从1-4一直在做优化,我们自己有研发一个happypack的wepback打包插件,极限提速,666,顺带案例自己的库一波(mmp,10秒jsp编译过程我都嫌久了,真的没做过复杂项目呢。)

hr: 你说说vue-cli脚手架内部实现原理吧,

我: 首先自然是 merge(webpack.base + prod + dev)(居然不问我webpack/babel/vscode插件怎么写。外包还没到这个级别吧。又也许是知道我不会,懒得问直接跳过)

hr: 项目测试用的什么

我: eslint+vscode

hr: 如何禁止不符合eslint规范的代码被提交,

我: 当然是用自定义的命令咯,内部调用node,然后调用eslint对代码进行检查,错误数量>0则不执行git add .的代码咯,


小店铺 - SEE

面试官很nice...无论是深度还是广度,都面面俱到...离开的时候觉得没啥好说的,到宿舍再想想,面试官真的很棒.

页面优化

cdn加速,静态资源压缩,
接口数据持久化.
css只发生重绘不要重排,

跨域的几种几种实现方式

nginx / nodejs代理服务器
服务端头部添加'header('Access-Control-Allow-Origin:*')'即可接受所有...
jsonp....

很明显我说错了一半以上,但是面试官也不戳破....

科里化函数的实现....

mark,后面再补...

react 中的纯组件与class extends Component {}定义的组件的区别...

不会...

原生js实现一个promise.....

我不会.....

nodejs Express实现模型..... 以及和koa的区别...

express通过回调函数,洋葱模型,,,

beforeCallback()
content()
afterCallback()

koa才是洋葱模型,express不是啊,,...

很明显我又说错了...koa才是洋葱模型, express是啥,我也不清楚...

除了koa,其他python ,go,java, php会不会...

不会..

docker 会么,

会一点,docker分层, repository image container,
说具体怎么用吧,
通过exec可以进入到image快照里面,就像linux系统,
attach 和 exec 的区别知道么,,,
不知道....

好吧,面试官非常自信,走的时候,连还有什么你知道的,但我没有问到的么?都不用问了,知识点十分全面,好吧,是我太菜....多参加高水平公司的技术面试是否能提高个人水平,查漏补缺......?
@plh97 plh97 added javaScript 关于js的一些事 diary 记录一些生活上的感想 labels Apr 13, 2018
@plh97 plh97 self-assigned this Apr 13, 2018
@plh97 plh97 changed the title 前端表象之旅 面试 集合 May 23, 2018
@lizhongzhen11
Copy link

666,我也要把BAT还有网易等知名的全面一遍,不管过不过,去见识见识国内一流大厂的技术要求。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
diary 记录一些生活上的感想 javaScript 关于js的一些事
Projects
None yet
Development

No branches or pull requests

2 participants