阿里一面 — 面试总结

907 阅读3分钟

阿里(飞猪)一面面试经历

这也是我的第二次大厂面试经历(电话面试),这次总体感觉还是不错的(虽然答错了一两道题。。。hhh,但是面试官人很好。)

面试题

问项目(为什么选用 Ruby Rails框架,Ruby和Java开发有什么区别)

前端优化方式有哪些,你在自己的项目中做了哪些优化

  1. 路由动态导入
  2. 分包
  3. SSR
  4. 自制Vite插件优化SVG图片的加载
  5. React中的useTransition

(只答了这些)

面试官:SSR为什么可以做性能优化呢?

我:emm,因为客户端向服务器请求数据的时候,只用请求HTML文件和JS文件,不用请求加载CSS文件,只用将HTML文件和JS文件加载完之后,将JS代码水合。

面试官:可以再具体点嘛?

我:服务端渲染的话,在服务器中就可以实现HTML和CSS预渲染,不用在客户端解析布局等。只需要用JS代码为HTML添加交互方式。从而达到性能优化。

为什么使用Dcoker

Cookie和localStorage的大小

我:4kb和5MB。

面试官:那Cookie是存在浏览器里的还是存在电脑内存里的,如果我换一个浏览器Cookie会存在吗。

我:不会。

如果现在打开两个同域名的页面,一个是登陆了,一个没有登陆,那他们共享Cookie嘛?

我:共享

子域名之间如何可以共享Cookie吗?

我:可以,在后端可以设置让子域名共享Cookie,具体设置什么我忘记了。

如何实现跨域

我:

  1. JSONP
  2. Nginx反向代理
  3. 后端设置响应头

面试官:后端怎么设置响应头?

我:通过设置origin来允许那些请求源可以跨域,设置methods允许那些方法可以跨域。

JS中的new关键字做了什么事情

  1. 创建临时对象
  2. 绑定this
  3. 执行构造函数
  4. 绑定原型
  5. 返回(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算法,当时也没有说的很详细。。。 面试官也没有接着问。。

能实习多久

方便来杭州实习吗?

让我反问

总结

总的来说,体验挺不错的,面试官也很和善。面试题也值得回味,对技术也有提升的帮助。