阿里(飞猪)一面面试经历
这也是我的第二次大厂面试经历(电话面试),这次总体感觉还是不错的(虽然答错了一两道题。。。hhh,但是面试官人很好。)
面试题
问项目(为什么选用 Ruby Rails框架,Ruby和Java开发有什么区别)
前端优化方式有哪些,你在自己的项目中做了哪些优化
- 路由动态导入
- 分包
- SSR
- 自制Vite插件优化SVG图片的加载
- React中的useTransition
(只答了这些)
面试官:SSR为什么可以做性能优化呢?
我:emm,因为客户端向服务器请求数据的时候,只用请求HTML文件和JS文件,不用请求加载CSS文件,只用将HTML文件和JS文件加载完之后,将JS代码水合。
面试官:可以再具体点嘛?
我:服务端渲染的话,在服务器中就可以实现HTML和CSS预渲染,不用在客户端解析布局等。只需要用JS代码为HTML添加交互方式。从而达到性能优化。
为什么使用Dcoker
Cookie和localStorage的大小
我:4kb和5MB。
面试官:那Cookie是存在浏览器里的还是存在电脑内存里的,如果我换一个浏览器Cookie会存在吗。
我:不会。
如果现在打开两个同域名的页面,一个是登陆了,一个没有登陆,那他们共享Cookie嘛?
我:共享
子域名之间如何可以共享Cookie吗?
我:可以,在后端可以设置让子域名共享Cookie,具体设置什么我忘记了。
如何实现跨域
我:
- JSONP
- Nginx反向代理
- 后端设置响应头
面试官:后端怎么设置响应头?
我:通过设置origin来允许那些请求源可以跨域,设置methods允许那些方法可以跨域。
JS中的new关键字做了什么事情
- 创建临时对象
- 绑定this
- 执行构造函数
- 绑定原型
- 返回(return)临时变量
刚才提到了this,你能说说JS中的this是什么嘛?
我:在JS中如果开启了严格模式,函数的默认调用this默认为undefined,如果用一个对象去调用这个函数,比如obj.a(),则这个函数的this为obj这个对象,如果没有开启严格模式,函数的默认调用中的this就是window。
追问,如果在React中,我给一个div绑定一个onClick事件,这个事件函数中console.log(this),这个this是什么
我:window(错)
这道题我当时没有多想,面试完才反应过来,在React中默认是开启严格模式的,所以应该是undefined。
但是当时面试官也没有说什么,只是接着下一题。
说一下JS的数据类型有哪些
Object类型和其他基础类型的区别
我:Ojbect类型存在堆内存,使用引用指向这段内存,这段内存如果没有强引用时会被GC垃圾回收,基础类型存在栈内存里,程序结束时销毁。
栈和堆的数据结构分别是什么
当时只答出来了栈,堆真忘了。。。。(这道题没答出来)。
React的diff算法
我从调和阶段入手,粗略的说了一下diff算法,当时也没有说的很详细。。。 面试官也没有接着问。。
能实习多久
方便来杭州实习吗?
让我反问
总结
总的来说,体验挺不错的,面试官也很和善。面试题也值得回味,对技术也有提升的帮助。