百得思维、小马智行前端工程师社招面试经历

百得思维

一面

1、跨域以及解决办法

1)跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。

2)我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。

3)同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSSCSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

4)跨域解决方案:

①通过jsonp跨域

document.domain + iframe跨域

location.hash + iframe

window.name + iframe跨域

postMessage跨域

⑥跨域资源共享(CORS

nginx代理跨域

nodejs中间件代理跨域

WebSocket协议跨域


2、手写一段小算法

3、JavaScript sort 方法内部使用的什么排序?


二面

主要问了我的职业规划等等问题。


小马智行

一面

1、讲项目里面干了啥

2、vue-lazyloader 怎么实现的

3、vue 的响应式系统、虚拟 dom

4、函数式编程

5、手写了一道算法题


二面

1、讲讲项目里面做了什么

2、VueReact的区别

1)监听数据变化的实现原理不同:Vue通过 getter/setter以及一些函数的劫持,能精确知道数据变化;React默认是通过比较引用的方式(diff)进行的,如果不优化可能导致大量不必要的VDOM的重新渲染。React不精确监听数据变化。

2)数据流的不同:Vue1.0中可以实现两种双向绑定;React一直不支持双向绑定,提倡的是单向数据流。

3)组件通信的区别:React 本身并不支持自定义事件,而Vue中子组件向父组件传递消息有两种方式:事件和回调函数,但Vue更倾向于使用事件。在React中我们都是使用回调函数的。

4)模板渲染方式的不同:在表层上,模板的语法不同,React是通过JSX渲染模板。而Vue是通过一种拓展的HTML语法进行渲染,但其实这只是表面现象,毕竟React并不必须依赖JSX;在深层上,模板的原理不同。React是在组件JS代码中,通过原生JS实现模板中的常见语法,比如插值,条件,循环等,都是通过JS语法实现的,更加纯粹更加原生。而Vue是在和组件JS代码分离的单独的模板中,通过指令来实现的,比如条件语句就需要 v-if 来实现对这一点,这样的做法显得有些独特,会把HTML弄得很乱。


3、JavaScript 异步的处理方式,现场出了一个问题,使用 promise 实现


三面

1、讲项目模块规划、项目如何部署、如何优化等等

2、手写函数的防抖

3、手写算法题,这道在牛客题霸上有原题,大家可以去看看:NC102 在二叉树中找到两个节点的最近公共祖先


四面

讲讲项目

#面经##社招##百得思维##前端工程师##小马智行#
全部评论

相关推荐

11-15 01:36
已编辑
管理培训生
珠海国企 项目管理 12.5w
点赞 评论 收藏
分享
评论
1
17
分享
牛客网
牛客企业服务