美团一面就凉了,怒刷3000道面试题逆袭字节,含泪分享面经

梦想与她 提交于 2021-02-02 20:01:52

前言

本人二本大学科班出身,首次面试美团一面凉了。先分享一下美团的凉经,希望大家做好避坑准备:

一面:

1.http和https的区别,非对称加密和对称加密的原理,还有http2和http1的区别(多路复用、数据通过字节流传输)

2.tcp和udp的区别,TCP如何实现数据的可靠性传输(滑动窗口和拥塞控制)

3.说明一下tcp的三次握手和三次挥手,为什们一定要这样子

5.循环对象的方法有哪几种以及它们的区别(Object.keys() 、for of 、for in)

4.如何实现对象的深拷贝,考虑对象嵌套问题代码实现对象深拷贝(手撕失败,)

5.检测数据类型的方法有哪几种(typeOf 、instanceof、constructor、Object.prototype.toString.apply())

6.说明一下防抖和节流,代码实现他们

7.了解过css动画吗?说一下transition和animation的区别以及transition的触发条件

8.html文件中script标签引入标签的defer属性和async属性以及它们与在head标签内引入的区别

9.给你一个数组根据时间按顺序每秒钟输出一个元素以及其下标

10.对css3的剪切属性有了解吗

11.html页面中为何会出现浮动以及如何清楚浮动(该开始理解成了float浮动,后面知道是BFC)

12.如何实现垂直居中(尽量知道的垂直居中方法都说出来)

13.说明一下nodejs中的IO控制(表示只对http模块和fs模块熟悉)

14.说一下expres和koa的区别

因为这次面试前并没有做什么准备,在boss上联系了通知我面试我就去了,果不其然,凉了....

有了这次的教训,我开始猛刷面试题,准备了一个多月的样子,没日没夜的刷题,头发都掉了一大把,觉得差不多了再去投的字节跳动。下面是字节跳动的面经:

一面:

1.首先自我介绍,然后简单聊下项目。

2.http服务,接收方如何判断数据接受完毕?

3.浏览器输入 www.baidu.com的过程?

4.分别说说ARP、ICMP、TCP协议的理解?

5.路由器属哪一层?IP包经过路由器后发生了什么变化?

6.介绍select、epoll的区别?

7.介绍下泛洪?

8.介绍下C++三种智能指针,三种的区别分别是什么?

9.c语言中static的用法?

10.tcp连接、断开的详细过程?每个过程的标志都有什么?

11.平时如何调试程序?断点的原理是什么?

手撕代码:

1.链表对折,要求O(1)空间,例如:

将1->2->3->4....->n-1->n->null 对折成 1->n->2->n-1->3->n-2....->null

提问:有什么想问的?

面试感受:共四十多分钟,一面主要偏基础知识,网络考察的比较多。

二面:

1.直接介绍实验室的项目(研究生是电机控制)。

2.写一个电机控制相关算法的函数,然后详细讲解,为什么用这个?有没有其他的算法?

3.结构体的成员调用struct1->num的底层实现?宏定义MAX(a,b)的实现?

4.详细说下http请求的方法有哪些?讲下http的报文结构?

5.说几个http首部的字段?管线化是什么?怎么保证服务器按顺序返回?

6.说下tcp的特点有哪些?详细讲tcp的一些机制?为什么需要这些机制?详细讲tcp报文首部?

手撕代码:

1.已知结构体类型和指向某个成员的指针,求结构体起始地址,例如:

struct A {int a; int b;...;int c;...};指向结构体变量a中c成员的指针是int *p。求a的地址?

2.逆时针打印矩阵,例如:

1 2 3

4 5 6 => 147896325

7 8 9

提问:有什么想问的?

面试感受:差不多一个小时,由于晚上刚下班就回来面试,状态不好。二面面试官喜欢考察对问题本质的理解,很喜欢问为什么是这样,面完后长吸了口气。

三面:

1.自我介绍?介绍实习的情况?实习的项目?学到的技术?平时如何学习?

2.实验室的项目?

手撕代码:

1.已知f()函数以概率p输出1,以概率1-P输出0。然后实现g()等概率的输出1和0:

int g()

{

}

进一步通过刚实现的g(),实现等概率输出0-n的函数int h(int n):

int h(int n)

{

}

2.实现Linux命令tail -f filename的函数?(需要检查参数和文件类型是否合格)

int main(int argc, char* argv[])

{

}

提问:有什么想问的?

面试感受: 共一个小时,第一个算法题之前在某篇面经见过,但并没有看怎么实现的(面试时心情复杂),面试官提示后还是写出来了。不会tail的实现,心情十分复杂。自己经常看完面经,会侥幸认为我应该不会遇到这种问题。。。

三面面完后,过几天收到通知,说原本的三面面试官有事情,让其他面试官代替面我,现在真正的三面面试官想要重新面试。我当时就感觉,心累!不过既然三面面的不好,这又何尝不是一次机会呢!

第二次三面:

1.都是tcp、http和select、epoll相关的。

2.简历上的项目+实习的学习情况?

手撕代码:

1.二叉树的右视角,例如:

8

5 15 => 8,15,6,7

3 6

7

提问:后面应该没有面试的,有想了解的吗?

面试感受:二十多分钟,这一面感觉很nice,应该稳了吧。。。

能记住的一些问题就这些了。周五面完,第二周周三收到的意向书。

为了准备这次面试刷了很多面试题,并且做了一个整理,分了HTML、css、JavaScript、React、Vue、浏览器、服务端与网络、算法等等.....

HTML

  • 浏览器页面有哪三层构成,分别是什么,作用是什么?
  • HTML5的优点与缺点?
  • Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
  • HTML5有哪些新特性、移除了哪些元素?
  • 你做的网页在哪些浏览器测试过,这些浏览器的内核分别是什么?
  • 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗?
  • 说说你对HTML5认识?(是什么,为什么)
  • 对WEB标准以及W3C的理解与认识?
  • HTML全局属性(global attribute)有哪些?
  • 说说超链接target属性的取值和作用?
  • iframe有那些缺点?
  • Label的作用是什么,是怎么用的?
  • 如何实现浏览器内多个标签页之间的通信?
  • 谈谈你对canvas的理解?
  • ......

CSS

  • 解释一下CSS的盒子模型?
  • 请你说说CSS选择器的类型有哪些,并举几个例子说明其用法?
  • 请你说说CSS有什么特殊性?(优先级、计算特殊值)
  • 常见浏览器兼容性问题与解决方案?
  • 列出display的值并说明他们的作用?
  • 如何居中div, 如何居中一个浮动元素?
  • 请列举几种清除浮动的方法(至少两种)?
  • block,inline和inlinke-block细节对比?
  • 什么叫优雅降级和渐进增强?
  • 说说浮动元素会引起的问题和你的解决办法
  • 你有哪些性能优化的方法?
  • 为什么要初始化CSS样式?
  • CSS样式表根据所在网页的位置,可分为哪几种样式表?
  • 请你说说em与rem的区别?
  • ......

JavaScript

  • js的各种位置,比如clientHeight,scrollHeight,offsetHeight ,以及scrollTop, offsetTop,clientTop的区别?
  • js拖拽功能的实现
  • 异步加载js的方法
  • js的防抖与节流
  • 说一下闭包
  • 说说你对作用域链的理解
  • JavaScript原型,原型链 ? 有什么特点?
  • 请解释什么是事件委托/事件代理
  • Javascript如何实现继承?
  • 函数执行改变this
  • babel编译原理
  • 函数柯里化
  • 说一下类的创建和继承
  • 说说前端中的事件流
  • 如何让事件先冒泡后捕获
  • 说一下图片的懒加载和预加载
  • js的new操作符做了哪些事情
  • 改变函数内部this指针的指向函数(bind,apply,call的区别)
  • Ajax解决浏览器缓存问题
  • ......

由于篇幅有限,只能分享部分面试题,完整版面试题及答案可以【点击我】阅读下载哦~无偿分享给大家

Vue

  • Vue中 key 值的作用
  • Vue 组件中 data 为什么必须是函数?
  • vuex的State特性是?
  • 介绍一下Vue的响应式系统
  • computed与watch的区别
  • 介绍一下Vue的生命周期
  • 为什么组件的data必须是一个函数
  • 组件之间是怎么通信的
  • Vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗?
  • Vue如何实现按需加载配合webpack设置
  • 简单描述每个周期具体适合哪些场景
  • scss是什么?在Vue.cli中的安装使用步骤是?有哪几大特性?
  • 聊聊你对Vue.js的template编译的理解?
  • Vue 路由跳转的几种方式
  • Vue如何实现按需加载配合webpack设置?
  • Vue的路由实现:hash模式和history模式
  • Vue与Angular以及React的区别?
  • Vue路由的钩子函数
  • 什么是Vue的计算属性?
  • ......

React

  • 介绍一下react
  • React单项数据流
  • react生命周期函数和react组件的生命周期
  • react和Vue的原理,区别,亮点,作用
  • reactJs的组件交流
  • 有了解过react的虚拟DOM吗,虚拟DOM是怎么对比的呢
  • 项目里用到了react,为什么要选择react,react有哪些好处
  • 怎么获取真正的dom
  • 选择react的原因
  • react的生命周期函数
  • setState之后的流程
  • react高阶组件知道吗?
  • React的jsx,函数式编程
  • react的组件是通过什么去判断是否刷新的
  • 如何配置React-Router
  • 路由的动态加载模块
  • Redux中间件是什么东西,接受几个参数
  • redux请求中间件如何处理并发

浏览器

  • 跨标签页通讯
  • 浏览器架构
  • 浏览器下事件循环(Event Loop)
  • 从输入 url 到展示的过程
  • 重绘与回流
  • 存储
  • Web Worker
  • V8垃圾回收机制
  • 内存泄露
  • reflow(回流)和repaint(重绘)优化
  • 如何减少重绘和回流?
  • 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
  • localStorage 与 sessionStorage 与cookie的区别总结
  • http多路复用
  • cookie可设置哪些属性?
  • 正向代理和反向代理
  • ......

服务端与网络

  • HTTPS和HTTP的区别
  • HTTP版本
  • 从输入URL到页面呈现发生了什么?
  • HTTP缓存
  • 缓存位置
  • 强缓存
  • 协商缓存
  • 缓存的资源在那里
  • 用户行为对浏览器缓存的影响
  • 缓存的优点
  • 不同刷新的请求执行过程
  • 为什么会有跨域问题
  • 如何解决跨域
  • 访问控制场景(简单请求与非简单请求)
  • withCredentials 属性
  • 服务器如何设置CORS
  • URL类中的常用方法

算法与数据结构

  • 二叉树层序遍历
  • B树的特性,B树和B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 说一下冒泡快排的原理
  • Heap排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前10个数

由于篇幅有限,只能分享部分面试题,完整版面试题及答案可以【点击我】阅读下载哦~无偿分享给大家

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!