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

前言

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

一面:

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、浏览器、服务端与网络、算法等等.....

有需要的朋友可以戳此传送门即可获取完整版的 PDF 哦

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解决浏览器缓存问题
  • ......

由于篇幅限制,展示了部分内容截图,有需要的朋友可以戳此传送门即可获取完整版的 PDF 哦

  • 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个数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266381.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日志门面slf4j和各日志框架

简介 简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架, 其主要意义在于提供接口,具体的实现可以交由其他日志框架,如log4j、logback、log4j2。 对于一般的Java项目而言&#xff…

31、卷积 - 参数 dilation 以及空洞卷积

在卷积算法中,还有一个不常见的参数叫做dilation(中文:膨胀)。 很多同学可能没听说过这个参数,下面看看这个参数有什么作用,用来控制什么的。 我们还是放这个经典的卷积运算图,图中是看不出 dilation 这个参数的存在的。 如果再换一张图呢,发现两图的区别了吗? 没错…

用微元思想求解三重积分——基于Matlab

仅作自己学习使用 1. 题目 求解下列三重积分,其中A,μ,r都是常数。 求解的准确性可以用下式进行评估: 听过考研数一张宇课程的朋友应该指导,求解三重积分就是就一个面包,我们将面包无限细分为一个小块&a…

【JAVA基础】----第一天

【JAVA基础】----第一天 命名规则注释方式对HelloWorld代码进行解释常量,进制转换和机器码展现计算过程常量类型1.字符串常量2.整数常量 提供了四种表现形式2.1 二进制2.2 八进制2.3 十进制2.4 十六进制2.5 进制之间的转化2.5.1 其他进制转化为十进制2.5.2 十进制转…

天津大数据培训机构品牌 数据分析师的发展方向

大数据专业还是有一定难度的,毕竟大数据开发技术所包含的编程技术知识是比较杂且多的如果是计算机专业的学生或者自身有一定基础的人学,相对来说会比较容易,但对于零基础小伙伴学习来说,想要学习大数据,难度还是很高的…

基于SpringBoot+Vue前后端分离的商城管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

RT-Thread 工程创建(1)

方式一, 利用已经有的bsp进行创建 距离BearPi IOT Std 板 1. 下载 RT-Thread 官方 Env工具a. 下载 [Env 工具下载](https://www.rt-thread.org/download.html#download-rt-thread-env-tool) , 并解压缩b. 将env注册到系统中, 这样就在右键菜单中出现&am…

【C++】POCO学习总结(十二):流(文本编解码、数据压缩、文件读写流等)

【C】郭老二博文之:C目录 1、说明 POCO提供了多种流类,与标准c IOStreams兼容。 大多数POCO流类被实现为过滤器,这意味着它们不写入或读取设备,而是从它们连接的另一个流。 2、文本编解码 2.1 说明 POCO提供了用于编码和解码…

Javaweb之前端工程打包部署的详细解析

6 打包部署 我们的前端工程开发好了,但是我们需要发布,那么如何发布呢?主要分为2步: 前端工程打包 通过nginx服务器发布前端工程 6.1 前端工程打包 接下来我们先来对前端工程进行打包 我们直接通过VS Code的NPM脚本中提供的…

Javascript 数组array赋值与取值

Javascript 数组array赋值与取值 目录 Javascript 数组array赋值与取值 一、数组元素的赋值 1、在创建Array对象时直接赋值 2、利用Array对象的元素下标对数组进行赋值 二、数组元素的获取 一、数组元素的赋值 对数组元素赋值共有2种方法: (1&am…

Viewport Meta 标记:让网页适应各种设备的魔法符号

在我们用手机或平板电脑浏览网页时,你是否曾发现有些网页能够很好地适应屏幕,而有些却需要左右滑动才能完整显示内容?这就涉及到一个神奇的东西——Viewport Meta 标记。 最近本人在研究自适应的各自实现方法,比如media媒体查询、…

【jitterbuffer】2:OnCompleteFrameCallback 送去FrameBuffer 处理的流程

【jitterbuffer】2:OnCompleteFrameCallback 送去FrameBuffer 处理的流程 基于m98版本。 WebRtc Video Receiver(六)-FrameBuffer原理 大神有个详细的论述。 Finder的FID设计 H.264 没有FID,使用RtpSeqNumOnlyRefFinder ,比较复杂,要做出决定 RtpSeqNumOnlyRefFinder cla…