牛客网面试题总结(试券)

Posted усил

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网面试题总结(试券)相关的知识,希望对你有一定的参考价值。

【2021】小米秋招前端方向第二场笔试

1、使用浏览器访问http://miui.com/时,以下哪些过程发生在浏览器端?

  • 构建 HTTP 请求 ✔
  • 解析HTTP 请求
  • 发送HTTP 响应
  • 渲染页面 ✔

浏览器端构建HTTP请求,并发送 -> 服务器端接收到HTTP请求,并进行解析 -> 服务器端发送HTTP响应 -> 浏览器端接收到响应,并进行页面渲染。

2、下列哪些关于HTTP/2 的描述是正确的?

  • 解决了TCP 队头阻塞的问题
  • 解决了浏览器线头阻塞的问题 ✔
  • 使用了头部压缩 ✔
  • 使用二进制分帧封装HTTP 消息 ✔
  • HTTP/0.9:功能捡漏,只支持GET方法,只能发送html格式字符串。

  • HTTP/1.0:支持多种数据格式,增加POST、HEAD等方法,增加头信息,每次只能发送一个请求(无持久连接)

  • HTTP/1.1:默认持久连接、请求管道化、增加缓存处理、增加Host字段、支持断点传输分块传输等。

  • HTTP/2.0:二进制分帧、多路复用、头部压缩、服务器推送

3、下面对于服务端渲染和客户端渲染描述正确的是

  • 通过vue-cli,create-react-app 等工具创建的项目是服务端渲染的
  • 服务端渲染的用户体验一定优于客户端渲染
  • 服务端渲染对SEO更加友好,而且首屏渲染通常更快一些 ✔
  • SPA是客户端渲染的 ✔

客户端渲染:浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。

服务器端渲染: 将组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将这些静态标记"激活"为客户端上完全可交互的应用程序。

服务器端渲染优点:

1.更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。
2.更快的内容到达时间,特别是对于缓慢的网络情况或运行缓慢的设备。无需等待所有的 javascript 都完成下载并执行,才显示服务器渲染的标记,所以你的用户将会更快速地看到完整渲染的页面。
缺点:
1.开发条件所限。浏览器特定的代码,只能在某些生命周期钩子函数中使用;一些外部扩展库可能需要特殊处理,才能在服务器渲染应用程序中运行。
2.涉及构建设置和部署的更多要求。与可以部署在任何静态文件服务器上的完全静态单页面应用程序 (SPA) 不同,服务器渲染应用程序,需要处于 Node.js server 运行环境。
3.更多的服务器端负载。在 Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用 CPU 资源,因此如果你预料在高流量环境下使用,请准备相应的服务器负载,并明智地采用缓存策略。

4、有效防止XSS 的手段有哪些?

  • 过滤用户请求中的非法字符 ✔

  • 对请求中的特殊字符进行转译 ✔

  • 配置CSP(Content Security Policy) ✔

  • 通过预编译来防止

5、下列排序算法中,哪些时间复杂度不会超过nlogn?

  • 快速排序
  • 堆排序 ✔
  • 归并排序 ✔
  • 冒泡排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A4fGVDsk-1638101213020)(https://i.loli.net/2021/10/10/xudCAnBlKswGTW2.png)]

6、下面关于transform说法正确的是

  • 只对受控于盒模型的元素生效 ✔
  • 变形的原点默认是元素的左上角
  • 变形后元素在页面上的占位也随之变化
  • 可以通过matrix函数整合多种变形效果 ✔

transform对行内元素不生效

transform变形默认圆点为中心 可以通过 transform-origin 设置

transform变形后占位不会变化,它会创建一个新的图层来显示

7、下面对于Webpack 描述正确的是

  • Webpack 是一个模块打包工具 ✔
  • Webpack 可以运行在服务端和浏览器中
  • Webpack 适合复杂的大型项目,小型项目可以使用 vue-cli 等简单的打包工具进行开发
  • Webpack 可以实现热更新,开发更加高效 ✔

8、下面哪些方法会中断js执行

  • alert ✔
  • sync ajax请求 ✔
  • setTimeout
  • fetch
  • 异步,不会阻碍代码的执行,它会等待所有的同步代码执行完毕后,再执行输出自己的同步结果。(原生js中,只有定时器,DOM,ajax三个东西是异步的。)

  • setTimeout fetch async (参考链接https://www.ruanyifeng.com/blog/2020/12/fetch-tutorial.html)

  • 同步,代码只会从上到下依次执行,只要一步出错,接下来的代码就会无法执行**。**alert sync

9、下列哪些协议是应用层协议?

  • HTTP ✔
  • SSL/TLS
  • TCP
  • SSH ✔
  • FTP ✔
  • IP

SSL/TLS协议工作在应用层和传输层之间

SSH(安全外壳协议)为建立在应用层基础上的安全协议。

10、关于进程,下列说法错误的是?

  • 进程有独立的地址空间
  • 进程间可以通过网络通信
  • 内存不能在不同进程间共享 ✔
  • 进程是系统进行资源分配和调度的基本单位

进程是系统进行资源分配和调度的基本单位

线程是任务调度和执行的基本单位

11、下面哪个关于TCP 与 UDP 的描述是错误的?

  • TCP 提供可靠度的字节流服务
  • 建立TCP 连接需要三次握手
  • 使用UDP 传输数据,源端和终端不建立连接
  • HTTP 建立在 UDP 之上 ✔

HTTP3 用了 UDP

12、关于浏览器缓存,下列说法正确的是?

  • Service Worker cache 的优先级没有 disk cache 高
  • 服务端没法控制浏览器缓存的过期时间
  • 浏览器不会将缓存存在内存中
  • 浏览器会先在浏览器缓存中查询是否有要请求的文件满足需求,再决定是否发送请求 ✔

浏览器缓存是性能优化中简单高效的一种方式,按照缓存位置划分为以下几种类型:. service Worker. Memory Cache. Disk Cache. Push Cache. 浏览器请求时,会按照如上的优先级顺序,进行查找缓存,都没有命中时,才会去请求网络

13、下列关于GBK和UTF8编码描述错误的是?

  • GBK编码汉字占用2个字节

  • UTF8编码占用3个字节 ✔

  • GBK编码有包含中文简体和繁体字符

  • UTF8编码有包含中文和繁体字符

  • GBK:中文、英文、数字均使用双字节来表示
  • UTF-8:汉字占3个字节、数字占1个字节、英文字母占1个字节

14、下列哪个选项不是JavaScript 的模块规范?

  • CJS
  • UMD
  • ESM
  • AOD ✔

AMD、CMD、CommonJS、UMD、ESM( JS模块化规范)

15、下列哪个CSS 属性可能会触发 GPU 硬件加速?

  • visibility
  • transform ✔
  • color
  • box-sizing

CSS 中的以下几个属性能触发硬件加速:

  1. transform
  2. opacity
  3. filter
  4. will-change

16、下列哪个算法是可逆的?

  • MD5
  • SHA1
  • Base64 ✔
  • DSA

【2021】小米秋招前端方向第一场笔试

1、下面关于Promise说法正确的是(注意“返回结果”的意思包含成功或者失败)

  • Promise.all在所有给定的promise都fulfilled后才返回结果
  • Promise.race在给定的promise中,某个fulfilled后才返回结果
  • promise.then的回调函数中,可以返回一个新的promise ✔
  • 对于一个向后台获取数据已经产生结果的promise:p1,再次调用p1.then,不会去重新发起请求获取数据 ✔

2、在Linux 系统中,下列哪些操作可以把一个普通用户变为管理员?

  • su ✔
  • passwd
  • usrchmod
  • 修改/etc/passwd 文件 ✔

3、下面对于Vue 与 React 的描述正确的是

  • Vue 采用双向数据流,React 采用单向数据流
  • JSX 是由 React 推出的,所以在 Vue 中不能使用
  • Vue 和 React 不需要配合 NPM 也能使用 ✔
  • 在Vue 中可以自定义指令 ✔
  • Vue和React都是单向数据流,即只支持父组件向子组件传参但不支持子组件修改props

  • 在Vue中使用JSX语法可具体参考Vue文档-可复用性&组合-渲染函数&JSX一章

4、关于HTTPS 协议,描述正确的是?

  • HTTPS 协议同时用到了对称加密和非对称加密 ✔
  • HTTPS 实现内容完整性的手段主要是摘要算法 ✔
  • 数字签名是私钥对内容摘要的加密 ✔
  • 建立HTTPS 连接的过程,不会有明文传输
  • HTTPS 采用共享密钥加密(对称加密)和公开密钥加密(非对称加密)两者并用的混合加密机制
  • **HTTPS加密请求(一次握手)过程:**客户端发起握手请求,以明文传输请求信息,包含版本信息,加密-套件候选列表,压缩算法候选列表,随机数,扩展字段等信息。

5、关于cookie和session描述错误的是

  • 通常下cookie比session安全 ✔
  • cookie数据存放在客户的浏览器上,session数据放在服务器
  • session是有有效期的,而cookie则没有有效期 ✔
  • session可以在多个服务器之间共享 ✔
  • cookie 可以被盗用,所以不安全

  • cookie 可以设置过期时间

  • cookie 可以多个服务器共享

6、下列哪些HTTP 响应码表示发生了错误?

  • 202
  • 304
  • 401 ✔
  • 500 ✔

1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。

代码 说明
100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

2xx (成功)
表示成功处理了请求的状态代码。
代码 说明
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容) 服务器成功处理了部分 GET 请求。

3xx (重定向)
表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

代码 说明
300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。

代码 说明
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
405 (方法禁用) 禁用请求中指定的方法。
406 (不接受) 无法使用请求的内容特性响应请求的网页。
407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408 (请求超时) 服务器等候请求时发生超时。
409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求。

5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

代码 说明
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

7、以下属于CPU 内部结构的是哪些?

  • 存储器
  • 寄存器 ✔
  • 运算器 ✔
  • 控制器 ✔

cpu :寄存器 控制器 运算器 时钟

8、在使用mkdir 命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 ?

  • -m
  • -d
  • -f
  • -p ✔

mkdir [选项] 文件夹名

选项:

-m:设置权限。

-p:如果路径中不存在相关目录,自动创建文件夹。

-v:每创建一个目录就打印一次消息。

-Z:将SELinux 安全上下文 设置为所创建文件夹的默认类型。


小米2019秋招前端开发笔试题(A)

1、以下哪几个标签 margin 的默认值是 0

  • body ✔
  • div
  • form ✔
  • img ✔
  • h1~h6标签:有默认margin(top,bottom且相同)值,没有默认padding值
  • dl标签:有默认margin
  • ol,ul标签:有默认margin
  • table标签没有默认的margin,padding值;th,td标签没有默认的margin值,有默认的padding值。
  • p标签有默认margin(top,bottom)值,没有默认padding值。
  • select标签在Chrome,Safari,Maxthon中有默认的margin:2px;在Opera,Firefox,IE6.0,7.0,8.0没有默认的margin值

2、以下哪些可以作为media queries的条件

  • 设备型号
  • 设备像素比 ✔
  • 设备类型 ✔
  • 设备高度 ✔

@media tv and (min-width: 700px) and (orientation: landscape) …

tv设备类型,(min-width: 700px) 设备像素比,(orientation: landscape)设备高度

详见MDN:https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Media_queries

3、下列哪些功能默认支持跨域?

  • LocalStorage
  • Image ✔
  • canvas
  • iframe ✔

常见有指向资源的部件:<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax

localstorage不支持跨域,跨域可以利用postmessage和iframe来实现

https://www.jianshu.com/p/f880878c1398

4、下列哪些事件不支持冒泡?

  • resize ✔
  • click
  • blur ✔
  • mouseleave ✔

不支持冒泡:妈(mouseenter)妈(mouseleave)不(blur)放(focus)心你(load,unload,resize)

​ ①focus

​ ②blur

​ ③mouseenter

​ ④mouseleave

​ ⑤load

​ ⑥unload

​ ⑦resize

妈(mouseenter)妈(mouseleave)不(blur)(unload)让(resize)浪(load)费(focus) 牛

以上是关于牛客网面试题总结(试券)的主要内容,如果未能解决你的问题,请参考以下文章

牛客网面试题总结

牛客网真实面经总结—JVM篇

牛客网面试——常见编程题

牛客网嵌入式软件工程师面试题

牛客网嵌入式软件工程师面试题

牛客网面试——HR常问问题