暑期实习面经
2021-09-28|
#
蚂蚁阿里暑期提前批会有免录入系统的机会,要好好把握。我春招的第一次面试就给了阿里,忘了是什么部门了,第一次面试表现比较差,挂掉了,蚂蚁是我在阿里的第二个面试部门。
#
阿里自建平台的笔试给定一个排序数组和 target,使用二分查找 target 在数组中出现的起始索引和终止索引位置(target 可能会重复出现),若没有,返回空数组(力扣第 34 题)
实现一个 BigInt 类(大数的范围会超过
Number.MAX_VALUE
)function BigInt(str) {}BigInt.prototype.add = function(bigint) { // code return this.toString(result);}Bigint.prototype.toString = function() {}
实现一个单链表,链表有添加操作
insert(value)
、移除操作remove(value)
和使用console
打印链表function LinkList() {}LinkList.prototype.insert = function(val) {}LinkList.prototype.remove = function(val) {}LinkList.prototype.print = function() {}
有一个
div
元素,使用原生 JS 实现它的拖拽操作写出使下面
div
垂直居中布局的方法,能写几个写几个<div class="container"> <div class="item"></div></div>
#
一面- 复盘之前的笔试题,然后根据笔试题问
- css position 属性
- css 弹性布局 flex 属性设置
- 两个 div ,一个设置了绝对定位导致覆盖了另一个,那么怎么样让另一个显示在原先的水平上方
- z-index 属性原理
- css position 属性
- 使用弹性布局 header和footer大小固定,然后中间是弹性缩放
- react组件中批更新
- react的生命周期函数
- react中purecomponent作用
- redux工作流程
- redux异步请求怎么处理
- hook优点,解决了什么问题
- hook为什么不能放在 if语句里
- 箭头函数和普通函数的区别
- 箭头函数中augument怎么获得
- JS继承
- JS闭包
- JS的object create
- 冒泡和捕获
- e.preventDefault
- 如何在捕获阶段触发事件
- 有一个100行100列的表格,当点击其中一个单元格时如何让它能够显示下拉菜单
#
二面二面是部门 Leader 御术大佬面的,遇到大佬有点紧张表现也不太好...面试偏唠嗑,从本科问起,成绩怎么样,学了哪些课,有做过什么项目等等等,觉得学的比较好的课程,我说数据结构,然后就问到了项目中哪些地方使用了数据结构的知识等等
看过哪些书,怎么学习的
怎么对对象进行序列化,优化存储空间
怎么自己实现这个序列化和反序列化
对象遍历方法,for in 是有顺序的遍历吗
介绍一下项目
项目中使用的一些技术是现学的还是之前有学过的
学习过程中有看过源码吗
反问
前前后后大概 40 分钟
#
莉莉丝#
一面(现场面)一面去了现场面试,感觉莉莉丝工作环境很不错~
- 浏览器从输入 url 到页面显示的过程,提到了 html 的解析过程,然后问什么情况下会发生回流
- html 页面解析是顺序进行的吗
- git 操作,怎么从另一个分支中取得一个文件到当前分支
- redux 介绍,redux 流程
- hooks 中什么 hook 和 redux 很像
- flex 布局,两个元素都在左边排列,如何将其分到两边,不使用 space-between 呢
- vw、vh
- promise 中的 all,如何让 all 中的 promise 在 reject 后,还能输出其他的已完成的 promise 状态(Promise.allSettled)
- js 的原型链
- webpack,有用 webpack 做过什么
- threejs 和 cesium 的使用心得
- position 属性中的 sticky ,可以用来做什么
#
二面- 简单了解情况
- React 的优缺点
- 对一个小白讲解什么是前端,以及前端工作流程
- React 中有什么需要注意的
- React 中的一些试错经历
#
美团#
一面- webgl 问题,顶点着色器和片元着色器
- dom 解析流程,script 标签问题,async 和 defer
- 浏览器缓存问题,HTTP 头部缓存相关字段,cookie 和 storage,indexDB 等存储了解多少
- webpack 原理
- React Fiber 原理
- git 操作,分支的冲突问题 git revert,rebase
- React 生命周期,为什么一些生命周期方法要被废弃
- 业务偏好,一个是产品经理需求任务,一个是底层需求(他们部门平常的活)
- 平常怎么学习的
- 项目介绍,项目中遇到的困难,怎么解决的
- 后端有没有接触, NodeJS 呢
#
二面- 项目介绍,在项目中的定位,做了些什么
- 介绍一下 ThreeJS
- Webpack 的执行过程
- React 和 ThreeJS 如何共同使用
- 浏览器输入 url 的过程
- 回流和重绘
- React 运行流程
- 做过的一些项目
- 有没有了解一些设计模式,React 中的设计模型
#
拼多多#
一面- mate属性可选值
- link 标签相关
- webpack 如何配置提升效率
- link 标签下载会阻塞 dom 吗,会有什么现象
- html 页面解析过程
- async 和 defer
- defer 是在 dom ready 前还是后
- 移动端适配
- rem 怎么做移动端适配
- 常见的 inline 和 block 元素
- inline 盒子哪些属性是无效的
- js 闭包
- xss 和 csrf 及如何防御
- fetch 请求如何设置定时效果
- 浏览器缓存相关
- cache-control 中的 no-cache 和 no-store 的区别
- BFS 触发条件
- 跨域
- 水平垂直居中
- 箭头函数
- 如何改变 this 指向
- react 的 错误边界
- hook 中的 useEffect 和 useCallback 有什么相同点和异同点
- react 状态提示
- react ref
- react context
- ajax 中的 options 请求
- promise 常用方法
- 有做过服务端渲染吗
- JS 垃圾回收机制
- 如何判断一个对象是数组
- React diff
#
三面二面忘了..
找到页面中的所有 tagName,去除重复的标签
let node = document.documentElement; const getTags = (node) => { if (node.children.length === 0) { return [node.tagName]; } let arr = [node.tagName]; for (let n of node.children) { arr.push(...getTags(n)); } return arr;} ans = getTags(node);ans = Array.from(new Set(ans)); console.log(ans)
传入一组 url,尽可能快的按照数组顺序输出请求结果