大厂前端面试题总结(百度、字节跳动、腾讯、小米.....),附上热乎面试经验!

先简单介绍下自己,我“平平无奇小天才”一枚,毕业于南方普通985普通学生,有幸去百度、字节面试,感觉大公司就是不一样,印象最深的是字节,所以有必要总结一下面试经验,以及面试中遇到的一些问题,以便大家参考:

本文目录

  • 投简历的过程
  • 面试前做出的准备
  • 快要面试时做出的准备
  • 面试前奏,其实很紧张
  • 面试题目
  • 大厂面试特点
  • 面试总结
  • 最后

投简历的过程

首先肯定是找一个简洁不浮夸却有很精美的简历模板,然后将自己的信息填上去,主要的就是:姓名、电话、照片、擅长的技术栈、教育经历、实习经历、项目经历、证书、社交网站。这里要强调的是:不太熟悉的东西别往上写,没用的东西别往上写。

然后就是投简历的渠道问题了,这里我要给个建议,最好找别人内推一下,因为这样更快让你的简历被看到,避免长时间没有音讯。不过要提的是,找的内推人一定要靠谱!一定要靠谱!要找那种能给你一些简历修改建议的,会帮你跟进后续流程的,部门hc真的充足的人,而不是找那种广撒网的,因为他们根本没时间管你,可能你投进去,反而卡了流程(真的感同身受)

面试前做出的准备

我在面试前准备以下几点东西,似乎都解决了面试的部分问题

面试前我查阅了其他大佬写的字节跳动的面经以及面试题目,寻找题目解答,把它们总结了下来,用了一天一夜的时间,把它们整理成了文档。

我做了一份详细的自我介绍,通过项目开发经历来总结出了我的一些优点和开发经验,用讲故事的形式说明情况,最后点明故事中表现了自己具有哪些素质,点明自己为什么可以做前端的工作。字节跳动的宗旨“和优秀的人一起做有挑战的事情”也被我用到了自我介绍中,“我认为我是优秀的人,也喜欢做有挑战的事情,更喜欢与优秀的人为伍”“我希望搭上字节跳动这架火箭”等等。

快要面试时做出的准备

快要面试了,第一次面试,有些紧张,但还是像平常考试一样,将总结下来的面试题目总结、前端遇到问题的总结又看了一遍,把自己做好的自我介绍熟悉的过几遍,给自己亲近的朋友发条消息获得她的祝福,又站在电脑桌前活动了一下身子,头脑顿时清醒利索了许多。

面试前奏,其实很紧张

由于紧张怕错过面试,早早的便坐在了电脑桌前。面试官迟到了一会,就给我发起了面试视频邀请,终于开始了。

迎面是一个挺帅气的哥哥,简单的打了一下招呼,就进入了自我介绍的环节。由于自我介绍我已经熟悉过几遍了,自我介绍的效果看起来效果还是不错的。

开始问我项目经历的细节以及自我介绍中的细节,由于项目经历确实是自己亲身经历过的事情,并且我一般项目完成时都会做一下总结,所以也能够答个头头是道。个人感觉是这样的,至于面试官怎么想的,我就不清楚了, 说不定是那种我就静静的看着你装逼的情况。

由于篇幅限制,下方面试题目仅展示了部分, 有需要的朋友可以 戳此传送门即可获取完整版的 PDF 哦

面试题目

来了来了,开始问技术的问题了。

1.你对Vue的理解有多少

因为我在简历的项目经历中写了一个Vue项目,于是他问的时候就把我在项目中对Vue的理解和面试前准备的Vue总结结合起来回答。

  • 用css2和css3分别写一下垂直居中和水平居中

这道题我不会,并不知道css2和css3有什么区别以及写法,只会css3,我脑袋里有面试前总结的垂直居中和水平居中其中的两种方式,我就给他讲了一讲,倒是他没有再问下去,可能看出来我不会了吧。这也体现出了面试前知识点总结复习的重要性,不然你不会的东西你连说都不会说。

2.使用Float进行布局容易产生什么问题?解决方式呢?

  • 子元素在设置 float 后会脱离文档流,造成父元素高度塌陷

解决方式:

父元素设置高度

清除浮动

<div class="outter"><div class="inner"></div><div style="clear: both;"></div>
</div>// test.css
.outter { width:200px; background:#3FF; border:1px solid #000;}
.inner { float:left; width:120px; height:80px; background:#FF3; }

3.你对计算机网络的认识怎么样

又是一道探底的题,判断能否从这里给你出题考察你

4.讲述一下计算机网络的七层

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

5.HTTPS是什么

HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

6.介绍几种常见的状态码

2XX系列:代表请求已成功被服务器接收、理解、并接受。

200状态码:表示请求已成功,请求所希望的响应头或数据体将随此响应返回

201状态码:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。

3XX系列:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

301状态码:被请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302状态码:请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。

304状态码:自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

401状态码:请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

403状态码:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。

404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。

5xx系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

500状态码:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

503状态码:由于临时的服务器维护或者过载,服务器当前无法处理请求。

7.闭包是什么

闭包就是能够读取其他函数内部变量的函数。

闭包的用途:可以读取函数内部的变量,并且让这些变量的值始终保持在内存中。

// 输出全为10
for(var i=0;i<10;i++){setTimeout(function(){console.log(i);},50);
}
// 输出相应的输出
for(var i=0;i<10;i++){(function(i){setTimeout(function(){console.log(i);},50);})(i);
}

8.NaN是什么,用typeof会输出什么

Not a Number
会输出 Number

9.谈谈你对webpack的理解

是一个对资源进行模块化和打包的工具,处理每个模块的 import 和 export

追问:资源是指什么?

回答:Js,css,png图片等

追问:如果有个二进制文件,它是资源么?webpack怎么使它模块化?

回答:是。需要有一个对应的loader来处理(我是想到了vue-loader等)

10.说一下深拷贝和浅拷贝及常用实现方式

  • 浅拷贝: 以赋值的形式拷贝引用对象,仍指向同一个地址,修改时原对象也会受到影响

赋值表达式 =Object.assign展开运算符(…)

  • 深拷贝: 完全拷贝一个新对象,修改时原对象不再受到任何影响

JSON.parse(JSON.stringify(obj))

递归进行逐一赋值

11.使用JSON自带函数进行深拷贝有什么问题

  • 具有循环引用的对象时,报错
  • 当值为函数或 undefined 时,无法拷贝

12.跨域问题如何解决

同源策略:浏览器安全策略,同协议、ip、端口的脚本才会执行。

只要协议、域名、端口有任何一个不同,都被当作是不同的域

js跨域是指通过js在不同的域之间进行数据传输或通信通过jsonp跨域

(1) jsonp在页面上引入不同域上的js脚本文件实现请求不同域上的数据

(2)通过script标签引入一个js文件

(3) js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入

注:需要服务器端的页面进行相应的配合

(4) 通过修改document.domain来跨子域

(5) 使用window.name来进行跨域

(6) window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

13.知道babel么

可以实现将ES6编译为ES5代码

14.用js实现判断一个变量是否为整数的函数

实现思路:先判断该变量是否为Number类型,以此来缩小范围,再判断该变量除以1后是否与原值全等,若全等则返回true,若不全等则返回false

15.进程和线程是什么

线程是最小的执行单元,而进程由至少一个线程组成。如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。

进程指计算机中已运行的程序。

线程指操作系统能够进行运算调度的最小单位。

16.死锁是什么

当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。

17.Left Join、Right Join、Inner Join 指的是什么

LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行

RIGHT JOIN 关键字会右表那里返回所有的行,即使在左表中没有匹配的行

在表中存在至少一个匹配时,INNER JOIN 关键字返回行

18.快速排序用js怎么写

function quickSort(arr) {if(arr.length<=1) {return arr;}var s = Math.floor(arr.length/2);var temp = arr.splice(s,1);var left=[];var right=[];for(var i=0;i<arr.length;i++) {if(arr[i]<temp) {left.push(arr[i]);}if(arr[i]>=temp) {right.push(arr[i]);}}return quickSort(left).concat(temp,quickSort(right));  
}

19.玩过哪些游戏?

玩过LOL,但更喜欢炉石之类的纸牌策略类游戏。

追问:炉石你觉得用什么协议来通信?

回答:UDP吧。

20.未来三年的职业规划?

第一年学习,第二年负责小部分,第三年独当一面,后来发现面试官问的不是这个,说我说的太笼统,是想问我想做什么方向....(蜜汁尴尬)

大厂面试特点

百度

百度的技术面总共有4轮,基础面(同级别员工)+基础面(级别应该比你要一点)+leader面(整个研发部门的技术负责人)+boss面(整个研发部门的总负责人)

百度一面是需要你当场完成一套笔试题,难度的话也一般,基本上面的知识点你都过一遍问题不大,也有一题算法题,是百度的原创题目,但是题型是一样的,问题也不大。前两面都是前端开发面的,没啥难度,涉及到的知识点不局限于前端吧,还包括网络以及开发模式等等问题。

leader面还挺有意思的,当时他们强烈要求我到现场去参与面试,leader 是一个很年轻的小伙,因为不是专职前端,所以问的问题涉及到了整个计算机的所有知识点:数据结构、算法(原创题,一个很简单的递归)、操作系统,以及问你除了 js 以外还掌握什么语言等等,整个过程非常轻松,也非常愉快,大家都有说有笑。

boss 面气氛就比较严肃了,也可能是因为那个会议室空调有点冷的原因。基本上整个面试都是在让我吹水,讲自己的项目经历,以及解决的办法,答题模版也基本可以按照上面的来说,最后也通过了。

字节跳动

字节跳动的问题问的非常细,在我参与的两轮面试中,都是在问一些非常基础的知识,面试的过程也不会很长,大概 45 分钟左右。

一面的时候再做了一番自我介绍之后,给了 5 道笔试题,做完之后再聊一聊别的就过了。

二面的时候简单介绍了一下自己做过的项目,然后主要是围绕着你做的项目中用到的技术进行讨论。他给了我一道场景题,然后让我按照场景中的内容进行实现,最后给了一道应该是原创的算法题。

其实面字节之前我是非常紧张的,我个人对能通过字节的面试一点也不抱希望,但是面完之后,觉得很多时候大家都神话了字节的面试,难度也没有想象中的高。

不过有一说一,我觉得面试我的两位面试官态度都非常好,有一些我答不出来的问题,也会给我提示给我鼓励。

面试总结

1.明确自己的技术方向,然后深入研究。原以为在技术领域多处开花是一件很酷很厉害的事,现在发现这很容易导致我成为一名api使用者。一定要熟记基础,深入原理,了解源码。

2.一定要有技术博客,本次面试过程中能答上的知识点全是平时博客有记录的知识。

3.请务必在每一次面试结束后记录下面试过程中,你不会或者没回答好的问题。因为这些问题很可能你在下次面试过程中会被问到。

4.针对自己做过的项目,要有意识地进行分析总结,面试过程中就可以把总结的这些问题抛出来,总有一两个会被面试官作为考核点。

5.如果你是面试前填期望薪资,你就按着自己的期望填,比如你的期望是12k,那你就填13-15k,后面hr如果套路你说你的期望给不了,你就说12k,那你的薪资就是12k了。如果技术面后谈薪资,那可以看面试发挥情况填,如果发挥超水平,期望范围+2-3k,如果低于水平,那你可能需要保持期望或者再降一点。

6.关于笔试&面试,个人非常推荐刷足够多的笔试题和面经,就像高考前的模拟题一样有效!

最后

此文纯个人想法,希望读者保持自己的判断。

我这边分享一份自己整理的前端核心知识点、面试专题和2021最新面试题资料『面试经典算法题』、字节跳动、阿里、腾讯、头条等大厂面试真题合集,帮助大家搞定大厂面试的必考点、高频点、加薪点。

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

如果觉得不错,素质三连点赞、收藏、评论"666"都是对博主莫大的支持,谢谢各位大佬啦~

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

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

相关文章

腾讯云服务器和轻量服务器选哪个好(各自的优势区别)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

Rust安装(Windows)

安装Rust 进入Rust官网&#xff0c;下载Rustup&#xff08;Rust安装器和版本管理工具&#xff09; 下载rustup-init.exe后双击运行&#xff0c;进入以下界面&#xff1a; 1&#xff09;通过 visual studio community 安装程序快速安装 2&#xff09;手动安装必备组件 3&#x…

系统和应用的分布式实时性能和健康监控,对系统中实时发生的所有事情的全面检测,开箱即用、零配置、零依赖,高度互动的 Web 仪表板中查看结果

系统和应用的分布式实时性能和健康监控,对系统中实时发生的所有事情的全面检测,开箱即用、零配置、零依赖,高度互动的 Web 仪表板中查看结果。 NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互…

AWS SSM中切换AWS不同的profile

问题 在自己的开发笔记本上面&#xff0c;通过AWS SSM方式访问EC2服务&#xff0c;只需要通过简单的命令就可以访问EC2了&#xff0c;如下&#xff1a; aws ssm start-session --target i-xxxx12350这个命令就是利用aws命令行工具中ssm提供的会话管理能力访问ec2服务&#xf…

YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…

HTML使用JavaScript的三种方式

要使用 JavaScript&#xff0c;你可以在 HTML 文件中的 <script> 标签中编写代码&#xff0c;或者将代码保存到一个单独的 .js 文件中并在 HTML 文件中引入。以下是一些常用的 JavaScript 使用方式&#xff1a; 内联 JavaScript&#xff1a;在 HTML 文件的 <script&g…

Erlang、RabbitMQ下载与安装教程(windows超详细)

目录 安装Erlang 1.首先安装RabbitMQ需要安装Erlang环境 2.点击下载好的.exe文件进行傻瓜式安装,一直next即可 3.配置Erlang环境变量 安装RabbitMQ 1.给出RabbitMQ官网下载址&#xff1a;Installing on Windows — RabbitMQ&#xff0c;找到 2.配置RabbitMQ环境变量&#xff0…

SparkStreaming与Kafka整合

1.3 SparkStreaming与Kafka整合 1.3.1 整合简述 kafka是做消息的缓存&#xff0c;数据和业务隔离操作的消息队列&#xff0c;而sparkstreaming是一款准实时流式计算框架&#xff0c;所以二者的整合&#xff0c;是大势所趋。 ​ 二者的整合&#xff0c;有主要的两大版本。 kaf…

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…

前端子项目共用node_modules

项目目录结构如下 首先按上面的结构新建三个项目&#xff0c;有一定前端经验的都知道怎么处理&#xff0c;我就不多介绍了。 1&#xff0c;子项目1 package.json如下&#xff0c;我只安装了vue index.js如下 2&#xff0c;子项目2 package.json如下&#xff0c;我安装了…

uniapp 底部导航栏 tabBar

在 static 文件夹中新建文件夹 tabBar&#xff0c;放入标签图片 源素材如下&#xff1a; 在 pages.json 中添加 // 底部导航"tabBar": {// tab默认文字颜色"color": "#bfbfbf",// tab选中后的文字颜色"selectedColor": "#153c65&…

华为鸿蒙应用--登录页:网络请求、自定义Loading、MD5密码加密、emitter订阅状态变化、持久化登录状态、隐藏软键盘-ArkTs

HarmonyOS系列 华为鸿蒙应用--底部导航栏Tabs&#xff08;自适应手机和平板&#xff09;-ArkTs_华为鸿蒙应用 csdn 底部导航栏-CSDN博客 华为鸿蒙应用--欢迎页SplashPage倒计时跳过&#xff08;自适应手机和平板&#xff09;-ArkTs_app.media.ic_splash_page_background-CSDN…

语言模型:从n-gram到神经网络的演进

目录 1 前言2 语言模型的两个任务2.1 自然语言理解2.2 自然语言生成 3 n-gram模型4 神经网络语言模型5 结语 1 前言 语言模型是自然语言处理领域中的关键技术之一&#xff0c;它致力于理解和生成人类语言。从最初的n-gram模型到如今基于神经网络的深度学习模型&#xff0c;语言…

Apache OFBiz RCE漏洞复现(CVE-2023-51467)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。 0x02 漏洞概述 漏洞成因 该系统的身份验证机制存在缺陷,可能允许未授权用户通过绕过标准登录流程来获取后台访问权限。此外,在…

Zabbix“专家坐诊”第221期问答汇总

问题一 Q&#xff1a;使用官方docker模板Template App Docker&#xff0c;监控docker镜像&#xff0c;有一项监控项docker.data_usage有报错&#xff0c;不知道哪里问题&#xff1a;Cannot fetch data: Get “http://1.28/system/df”: context deadline exceeded (Client.Time…

【MATLAB】交叉验证求光滑因子的广义神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 交叉验证求光滑因子的广义神经网络时序预测算法的基本原理如下&#xff1a; 首先&#xff0c;我们需要了解什么是交叉验证和光滑因子。交叉验证是一种评估模型性能的常用方法&#xff0c…

RK3568平台开发系列讲解(Linux系统篇)PWM系统编程

🚀返回专栏总目录 文章目录 一、什么是PWM二、PWM相关节点三、PWM应用编程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 PWM 的系统编程。 一、什么是PWM PWM,即脉冲宽度调制(Pulse Width Modulation)

服务器Ubuntu系统安装

Ubuntu系统安装 系统下载制作系统盘1、下载系统盘制作软件2、制作启动盘 系统安装1、选择U盘启动2、安装系统 安装向日葵1、下载地址2、配置wayland 系统下载 https://mirrors.ustc.edu.cn/ubuntu-releases/22.04/ 推荐使用&#xff1a; 制作系统盘 1、下载系统盘制作软件 …

边缘智能网关在智慧大棚上的应用突破物联网大关

边缘智能网关在智慧大棚上的应用&#xff0c;是现代农业技术的一大突破。通过与农作物生长模型的结合&#xff0c;边缘智能网关可以根据实时的环境数据和历史数据&#xff0c;预测农作物的生长趋势和产量&#xff0c;提供决策支持和优化方案。这对于农民来说&#xff0c;不仅可…

使用 Django 的异步特性提升 I/O 类操作的性能

目录 一、引言 二、Django 的异步特性 三、提升 I/O 类操作的性能 四、示例代码 五、总结 一、引言 Django 是一个高级的 Python Web 框架&#xff0c;它以快速开发和简洁的代码而闻名。然而&#xff0c;对于一些 I/O 密集型的应用程序&#xff0c;Django 的同步特性可能…