热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

字节面经前端

作者:四季奶青大杯正常糖链接:https:www.nowcoder.comdiscuss613722?type2&order3&pos32&page1&

作者:四季奶青大杯正常糖
链接:https://www.nowcoder.com/discuss/613722?type=2&order=3&pos=32&page=1&source_id=discuss_tag_nctrack&channel=-1
来源:牛客网

楼主是三月初一个晚上偶然在牛客网上看到的该部门发的信息, 立马投简历。第二天下午HR小姐姐就打来电话约当天晚上的一面。
一面问题如下:
0、自我介绍,学习前端的动机,介绍项目, 问了我本科哪里的(因为我本科不是计算机专业, 所以简历没写, 接下来每个面试官都会问本科哪里的要登记, 所以这个必须要写, 不要怕掉面子 😓 )
计算机基础部分:
1、进程和线程有什么区别
2、TCP 和 UDP 各自的特点和区别
3、DNS 协议工作流程
4、CDN 是什么(讲一下内容分发网络的定义, 负载均衡, 提高响应速度)
5、https 的加密过程

js
1、js 为什么设计为单线程
2、js 数据类型有哪些,讲一讲 symbol 的作用,怎么能区分引用类型的对象
3、es5 实现一个继承有哪些策略
4、列举this指向, 看代码说结果(看代码说结果要注意的是, 引用一个函数和调用执行一个函数二者之间的区别要看清, 因为只差一个括号而已)
5、js 如何创建一个闭包
6、js 处理异步, 讲一下js的事件循环机制
7、【高频问题】window.onload和 DOM 中的 document.contentloaded 的区别

css
1: 选择器的优先级(补充一点 !important)
2、盒子模型有哪两种, IE 的盒子模型有什么特点
3、讲一下 position 的取值
4、 【高频问题】flex 实现一个圣杯布局

vue
data 为什么是函数
父子组件如何通信
双向绑定和响应式数据原理

下面代码输出的结果是什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var length = 10;
function fn() {
return this.length+1;
}

var obj = {
length: 5,
test1: function() {
return fn();
}
};

obj.test2 = fn;

console.log(obj.test1())
console.log(fn() === obj.test2())
代码题:
1、递归写多叉树的高度
2、【高频问题】
1
2
3
4
5
// 需要实现的函数
function repeat (func, times, wait) {},
// 使下面调用代码能正常工作
const repeatFunc = repeat(console.log, 4, 3000);
repeatFunc(“helloworld”);//会输出4次 helloworld, 每次间隔3秒
3、爬楼梯问题:爬楼梯时,每一步会有两个选择:爬一个台阶和爬两个台阶,问:楼梯总台阶数为n,则一共有多少种爬法,写一个函数f,使得:总的爬法= f(n)。举例:n=3时,则共有:(1,1,1)、(1,2) 、(2,1)三种爬法,则f(3)=3。
本题本质是一个斐波那契数列。
一面到此结束, 面试官最后问我说:“你是不是没怎么刷题就直接找面试了啊?” 说的真准, 这就是我第一次投简历。

二面难度直线上升, 一面问的主要还是基础方面内容, 二面问题的出发点就全都集中在项目实践了:
0、 自我介绍,学习前端动机
1、讲一件回调的原理, 浏览器捕获到事件并执行的原理(他本来想问事件捕获和事件冒泡, 但被我理解成让我讲 addEventListener 函数的原理了,瞬间把我问懵了)
2、如何设定一个常量对象?
3、讲一讲为什么要跨域, 跨域的同源策略是为了防止哪些攻击?
4、讲一讲 XSS 攻击可能有的攻击场景, 列举防范 XSS 攻击的方式
5、用 SDK 开发单页面 SPA 应用, 后端如何即时得知前端发生了页面跳转? 因为我不知道 SDK 是什么所以我说了一大堆 vue 的生命周期函数, watch 监听, 我又说 ajax,面试官直接怼我“我还能不知道 ajax?你怎么什么都答不到点上?同样都是汉语, 和你沟通为什么就这么难!?”直到他解释了 SDK 是什么,我才弄明白他想问的其实是路由原理,就是 hashchange 和 popstate
6、假如有一个电商应用,用户在下单的时候需要一个收货地址列表,这个组件你怎么设计?
7、讲一下keep-alive有哪些使用场景
8、讲一讲 Object.defineProperty
算法题:
1、【高频问题】存储10W个电话号码实现搜索时提醒, 用多叉树解决
2、【高频问题】剑指offer 62题

这里只谈到了冰山一角, 真相是二面的面试官把我怼得怀疑人生。直到最后我说我可以尽快过来面试, 他才说那我就再给你一次机会准备三面,最后是一句感叹: 你这基础还是差挺多啊…

三面:
0、自我介绍, 学习前端动机
(三面我实在记不清太多问题了,见谅…)
1、【经典问题】讲讲浏览器输入 url 后敲回车,发生了什么
2、GET 和 POST 的区别
3、讲一讲你的项目, 什么场合下使用 GET 什么场合下使用 POST
4、讲一讲 COOKIE 和 JWT
5、让你做一个在线聊天室, 你怎么做
算法题:
1、leetcode 56题
2、多个降序链表, 求前K大的数的算法的时间复杂度
3、【经典问题】多个有序数组合并
4、讲讲红黑树是什么
最后反问环节, 面试官评价我说 :“还是要在基础方面提升自己吧”

总结:
1、字节的面试难度还是挺大的, 当然也是因为我太菜…
2、字节很看重算法题, 事先看面经找到高频算法题很重要,其次刷 leetcode 和剑指offer
3、如果应试者的项目比较low, 面试官就不会问项目
4、最重要的一点, 自学的过程中千万不能看了看面经, 然后 百度一下不知道的名词,去 CSDN 之类的地方,看看帖子就以为自己会了。对于一个知识点的掌握与否, 熟知其应用场景和可替代性是非常重要的。否则结果就是,面试小厂轻松, 面试各种大厂就统统一轮游。除非遇到质量非常高的帖子,版主如亲妈一般,把任何知识点都讲到极致透彻。因为面试官不会像考名词解释一样, 直接把知识点的名词丢出来问你这是什么。


推荐阅读
  • 浏览器中 W3School JavaScript 的 Location 对象详解
    Location对象是浏览器Window对象的一部分,通过`window.location`属性可访问。它包含了当前页面URL的相关信息,如协议、主机名、路径和查询参数等,对于页面导航和URL操作非常有用。 ... [详细]
  • 在2020年8月19日的深度分析中,我们探讨了HTML标签中同时存在`a`标签的`href`和`onclick`属性时的触发顺序问题。此外,还讨论了如何在一个自适应高度的父级`div`中,使两个子`div`中的一个固定高度为300px,另一个自动填充剩余空间的方法。最后,文章详细介绍了JavaScript异步加载的多种实现方式,包括但不限于`async`、`defer`属性以及动态脚本插入技术,为开发者提供了丰富的技术参考。 ... [详细]
  • 这篇文章将揭示 Vue 和 React 组件库中五个鲜为人知的强大工具。这些工具均以纯 JavaScript 实现,功能卓越。其中,async-validator 是一个数据验证插件,不仅预置了 URL 和电子邮件的验证规则,还支持异步验证功能。 ... [详细]
  • 使用 Vue 集成 iScroll 实现移动端表格横向滚动与固定列功能 ... [详细]
  • 在Vite项目优化过程中,通过使用rollup-plugin-visualizer插件,可以有效地对Rollup打包结果进行可视化分析,帮助开发者清晰地了解各个模块的占用情况,从而进行更有针对性的优化。此外,结合其他常用插件,如vite-plugin-compression和vite-plugin-inspect,可以进一步提升项目的性能和可维护性。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 在本文中,我们将探讨如何使用 UniApp 封装小程序 API 请求接口的最佳实践。通过创建 `request.js` 文件,定义基础 URL 并传入后端提供的 URL 作为请求参数。同时,配置请求方法(如 GET、POST)和请求头(例如包含 token 的认证信息),以实现高效、安全的 API 调用。此外,我们还将介绍如何处理请求和响应的错误,以及如何优化请求性能,确保应用在不同平台上的兼容性和稳定性。 ... [详细]
  • 如何判断一个度序列能否构成简单图——哈维尔-哈基米算法的应用与解析 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 搜索引擎提示“服务不稳定可能导致访问异常”的原因分析与解决策略 ... [详细]
  • 微信小程序的核心功能与优势在于其独特的运行环境,区别于传统网页应用,它不依赖于浏览器的BOM和DOM对象,因此无法通过常规的`console.log(window)`或`console.log(document)`获取相关信息。此外,小程序还具备一系列专有特性,如高效的数据绑定、丰富的API接口以及良好的用户交互体验,这些都为开发者提供了更为灵活和强大的开发工具,使得小程序能够更好地适应移动互联网时代的需求。 ... [详细]
  • AngularJS uirouter模块下的状态管理机制深入解析
    本文深入探讨了 AngularJS 中 ui-router 模块的状态管理机制。通过详细分析状态配置、状态转换和嵌套状态等核心概念,结合实际案例,帮助开发者更好地理解和应用这一强大工具,提升单页面应用的开发效率和用户体验。 ... [详细]
  • 随着各类门户网站、短视频平台、剧集播放和在线教育等互联网内容生态的迅猛发展,网络流量呈现爆炸性增长。为提升用户体验,边缘云计算与CDN(内容分发网络)技术应运而生。这些技术通过在靠近用户的位置部署节点,有效降低了数据传输延迟,提高了内容加载速度,确保用户能够通过手机或电脑流畅访问互联网资源。此外,边缘计算还能够在本地处理部分数据,进一步减轻核心网络的压力,优化整体网络性能。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有