2024前端社招面试题总结,腾讯后台开发

149 阅读6分钟

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。

开源分享:docs.qq.com/doc/DSmRnRG…

  1. 挂载$mount方法,通过自定义Render方法、template、el等生成Render函数

  2. 通过Watcher监听数据的变化

  3. 当数据发生变化时,Render函数执行生成VNode对象

  4. 通过patch方法,对比新旧VNode对象,通过DOM Diff算法,添加、修改、删除真正的DOM元素

Vue-router如何实现无刷新跳转


前端路由分为两种模式,分别是hash模式和history模式

hash模式

原理实现是通过监听hashchange的改变进行无刷新渲染

history模式

原理通过调用history.pushState(无刷新插入历史状态,更新url)更新url,并且监听popstate回退键事件进行渲染

vue dom diff算法:


先比较dom树,如果有组件不存在了直接销毁;然后比较组件,最后比较element节点,返回一个patch节点包含两个虚拟dom的差异进行渲染

箭头函数与普通函数区别


1.写法不一样

2.箭头函数都没有名字

3.this指向不一样,普通 函数作用域为调用它的对象,箭头函数为当前上下文(如声明在全局那么this的作用域即为上下文)

4.箭头函数不能使用New 实例化

算法时间复杂度:


1.没有循环等复杂结构的都是O(1)

2.有一层循环,算法的性能会随着输入数据的大小变化而线性变化的是O(n)

3.有多层循环,算法性能随着数据呈现数次增长,算法性能为O(n2)、O(n3)、O(n^4)

call、apply、bind含义与区别


http 状态码


204 无内容,服务器成功处理但未返回内容

205 重置内容,提醒用户刷新

301 页面永久重定向

302页面临时重定向

303 查看其他地址,使用 get post

304该资源未更新

400客户端请求语法错误

404找不到服务器

500服务器内部错误

前端缓存


分为强制缓存和协商缓存,浏览器读取缓存过程为内存-硬盘-服务器缓存

1.强制缓存:Cache-control和expries

Expries 是对比客户端和服务器时间差异,比较缓存是否过期,值为一个时间绝对值

Cache-control相对时间,如300S

2.协商缓存

强制缓存失效后,浏览器携带缓存标识请求服务器,由服务器缓存标识决定是否使用缓存

Last-modified/If-modified-since上次请求返回的最后被修改时间,检查服务器资源是否被更新

Etag/If-node-since返回校验码,etag 保证每个资源都是唯一的

react 生命周期


vue keep-alive


vue event-bus


Nuxt 是如何运行、渲染的


react、vue 如何选型


React 适用于大型工程、多人协作工作,和 ts 配合更好

node、vue、webpack 是什么关系


Vue 本身不依赖webpack,但 vue-cli 里边的webpack环境 依赖 node 开发出来的,webpack 是依赖 node 的

移动端跨平台使用 react native

javascript 常见设计模式


单例模式

工厂模式

发布订阅模式

node+express


script 标签属性


Diff 异步加载

页面防抖、节流


1.Lodash debounce throttle 限制函数在一定时间内的调用次数

2.想要页面在第一次加载时请求,之后使用节流,点击按钮的时候获取当前时间戳,距离当前时间戳 XX 秒后调用节流函数

防抖函数:
节流函数:

前端性能优化


1.Css 文件、js 文件 与html 文件的顺序,将 css 写入行内样式,script 文件放在上边,能保证其与 html 一起渲染,提高渲染速度

2.页面图片资源限制大小、使用 cdn

3.按钮、接口做防止二次点击处理

4.分页加载

事件冒泡


从元素到父元素一直到 window 称为冒泡

从 window 一直到子元素称为捕获

阻止冒泡:1.return false 2.e.sstopPropagation()

ts


算法:


找出两个左边相交面积的左上角与右下角左边

合并两个有序数组,用on1

限制函数并发

Vue父子组件生命周期执行顺序


渲染过程:

父beforeCreate-父create-父beforeMount-子beforeCreate-子created-子beforeMount-子mounted-父mounted

计算机网络

  • HTTP 缓存

  • 你知道 302 状态码是什么嘛?你平时浏览网页的过程中遇到过哪些 302 的场景?

  • HTTP 常用的请求方式,区别和用途?

  • HTTPS 是什么?具体流程

  • 三次握手和四次挥手

  • 你对 TCP 滑动窗口有了解嘛?

  • WebSocket与Ajax的区别

  • 了解 WebSocket 嘛?

  • HTTP 如何实现长连接?在什么时候会超时?

  • TCP 如何保证有效传输及拥塞控制原理。

  • TCP 协议怎么保证可靠的,UDP 为什么不可靠?

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

算法

  • 链表

  • 字符串

  • 数组问题

  • 二叉树

  • 排序算法

  • 二分查找

  • 动态规划

  • BFS

  • DFS

  • 回溯算法