苏小研前端一面(比较基础)

自我介绍

第一位面试官:

盒子模型相关

答案:前端页面中所有元素都可以看成是一个盒子模型,从内到外分别为content、padding、border、margin,分为两种盒子模型,一般我们常见的是标准盒子模型,即模型的宽度与高度分别为content的宽度与高度,另一种是IE怪异盒子模型,区别是其宽度与高度包含了border、padding和content,两种模型可以相互转换,转换规则为box-sizing: content-box(标准)、border-box(怪异)

状态码(我说了200、304、400、401、403、404、405、500、502、503)

答案:

  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

这块内容太多了,大家可以自行查阅https://www.runoob.com/http/http-status-codes.html

http请求方法(get、post、put、delete)

答案:https://www.runoob.com/http/http-methods.html

http请求方法head(只请求首部)

答案:

  • Host:此头部字段指定请求的主机名和/或端口号;
  • Accept:此头部字段指定客户端接受哪些类型的数据;
  • Content-Type:此头部字段指定在POST或PUT请求中发送的数据的类型;
  • Content-Length:此头部字段指定POST或PUT请求中发送的数据的长度;
  • Cookie:此头部字段包含由服务器发送的cookie信息,这些信息将在后续的请求中自动包含,以便服务器识别用户或保存状态信息;
  • Authorization:此头部字段用于向服务器提供身份验证信息,例如Bearer token或Basic authentication;
  • Referer:此头部字段指定原始URL,即从哪个URL页面跳转到了当前页面(可以结合CSRF回答)。

get与post的区别

答案:

  • 安全性:与post相比,get的安全性较差,因为发送的参数是URL的一部分,post参数放在请求体中
  • 数据长度限制:get长度受限,因为参数放在URL里面,URL最大长度是2048,而post无限制
  • 缓存:get可以被缓存,post不行
  • 幂等性:get对数据库中的数据不会造成影响,所以是幂等的,post非幂等

宏任务与微任务看代码说输出(题目忘记了,记住一个优先级就行,同步>微任务(promise中的then和catch、async、await)>宏任务(定时器))

事件循环

答案:js是单线程的,同一时间只能做一件事,将任务分为同步任务和异步任务,同步任务会立即执行,异步任务会在时机成熟后放入到队列中排队,等执行栈中所有同步任务都执行完毕,会不断的读取任务队列中的任务,如果有待执行的任务,会送入到执行栈中去执行,这个不断扫描的过程称为事件循环

git命令

答案:add commit push pull fetch merge reset revert rebase

细说rebase

答案:rebase是merge一个很好的替换命令,将两条commit记录合并成一条,获得更加线性、更加直观的commit记录

一道git场景题,已经有了好几个commit,但是要回到某个commit,而且不要那么多的commit记录(我说了git reset,面试官说也可以,应该不是最佳答案)

答案:应该revert好一些,但是revert仍然会保留很多的commit记录

Linux命令(不会,就说了一个ls)

答案:有一些偏后端了,这题不值得去看

部署相关(我回答了nginx)

答案:我主要是回答nginx配置项这些,如何通过nginx解决跨域

docker(只知道概念,不会,我用的pm2)

答案:docker是容器,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。(复制的百度,建议大家可以自己研究一下,docker可以结合k8s,不过很偏后端了)

第二位面试官:

箭头函数的this

答案:箭头函数没有自己的this,在箭头函数内部访问的this则是上一层作用域的this。

call、apply、bind的区别

答案:

  • 三者都可以改变函数this对象指向
  • 三者第一个参数为this要指向的对象,如果没有这个参数或参数为null、undefined,则默认指向全局window或globalThis
  • 三者都可以传参,apply是数组,call是参数列表(fn.call(obj, x1, x2, x3, ...)),apply和call是一次性传入参数,bind分为多次传入
  • bind不会立即执行,而是返回绑定this后的函数,call和apply是立即执行

react、vue的区别

答案:

  • 核心思想不同:vue核心是双向绑定;react是单向数据流,也可以通过state实现双向绑定
  • 写法:vue无论是2还是3都是template语法,react18以来更加推崇函数式编程
  • diff算法不同

不过我感觉这俩会越来越像,比如react支持hooks写法,使用高阶组件实现自定义hooks、而vue3组合式api也是推崇hooks写法的

前端性能优化方法

答案:这个很多,可以从减少打包体积、减少白屏时间等方面来说

promise

答案:三个状态之间的转换(pendding、fulfilled、rejected)

块级作用域(我说只知道作用域的概念,不太了解)

答案:任何一对花括号 {} 中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。

变量提升

答案:我回答了var,函数及变量的声明都将被提升到函数的最顶部。

反问

#苏小妍面经##前端#
全部评论
放心吧很水 很多人一面不会 都三面完了 第一批都三面完等通知结果了 到现在都没出结果 估计第一批和你们第二批一起泡池子
点赞 回复 分享
发布于 2023-10-21 12:50 江苏
实习还是正式啊佬
点赞 回复 分享
发布于 2023-10-21 11:52 江西
大佬收到二面通知了吗
点赞 回复 分享
发布于 2023-10-20 22:57 广东

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结: 27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
7
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务