腾讯前端面试题、面经

第一场电话面试:

  1. 先自我介绍了一下
  2. 介绍一下自己做过的项目用到哪些技术和栈
  3. 讲下js数据基本类型
  4. 介绍下ES6有哪些新方法
  5. 讲下let const的区别
  6. 问到Hubuilder可以一转三的原理是什么?
  7. watched和computed的区别
  8. 问道小程序和Hbuilder区别
  9. vue的生命周期
  10. 什么时候用到bedforeDestory?
  11. 在beforeCreated中发出请求合适吗?会出现什么问题?
  12. 问到JOSNP原理,后台返回什么?什么时候出现跨域?
  13. vue父组件和子组件怎么通信

我自己整理的答案:

1. JavaScript 数据基本类型

JavaScript 有七种基本数据类型:

  1. Undefined:变量声明但未初始化时的默认值。

  2. Null:表示空对象引用。

  3. Boolean:用于表示 true 和 false。

  4. Number:用于表示整数和浮点数。

  5. String:用于表示文本。

  6. Symbol:ES6 新增,用于创建唯一值。

  7. BigInt:用于表示大整数。

此外,还有 Object 作为引用类型。理解这些数据类型的区别以及如何转换对于编写可靠的 JavaScript 代码非常重要。

2. ES6 新特性介绍

ES6(ECMAScript 2015)带来了许多新特性,以下是其中一些最常用的:

  • let 和 const:用于声明变量,let 有块级作用域,而 const 用于声明常量。

  • 箭头函数:简化了函数的定义,具有词法作用域的 this

  • 模板字符串:使用反引号 ```` 和 ${} 插值,简化字符串拼接。

  • 解构赋值:可以从数组和对象中提取值并赋给变量。

  • 展开运算符:用 ... 来展开数组或对象的属性。

  • Promise:用于处理异步操作,提供更清晰的链式调用。

  • 类 (Class):引入面向对象编程的类语法糖。

  • 模块化:使用 importexport 实现模块之间的引入和导出。

3. let 和 const 的区别

  • let:用于声明变量,有块级作用域,允许后续重新赋值。

  • const:用于声明常量,值不能被重新赋值,且具有块级作用域。

letconst 都避免了 var 带来的变量提升问题,并限制了变量在块级作用域中的访问。

4. HBuilder 一转三的原理是什么?

HBuilder 的 "一转三" 指的是使用一次代码编写,可以输出多端应用,包括 H5、Android、iOS。这是通过 HBuilder 对代码进行跨平台编译,实现原生应用的能力来做到的。其背后利用了跨平台技术栈,如基于 HTML、CSS、JavaScript 的原生渲染引擎,类似于 React Native 或 Flutter,通过中间层将前端代码翻译成原生代码。

5. watch 和 computed 的区别

在 Vue.js 中:

  • watch:用于监听某个数据的变化并执行回调。适合需要在数据变化时执行异步或复杂逻辑的场景。

  • computed:用于计算属性,是基于依赖的响应式数据,只有当依赖的属性变化时才会重新计算。适合对多个数据进行依赖性处理的场景,且具有缓存功能。

6. 小程序和 HBuilder 的区别

  • 小程序:一种轻量级的应用形式,运行在微信等超级 App 内部,使用特定框架如微信小程序框架开发,使用 WXML、WXSS 等技术。

  • HBuilder:是一个用于开发多端应用的 IDE,结合 uni-app 可以输出小程序、H5、Android、iOS 应用。

7. Vue 的生命周期

Vue 实例的生命周期分为多个阶段,主要包括:

  1. beforeCreate:实例初始化之前,数据观察和事件都没有配置。

  2. created:实例创建后,数据观察已经完成,无法访问 DOM。

  3. beforeMount:模板编译结束,挂载之前。

  4. mounted:实例挂载完成,可以访问 DOM。

  5. beforeUpdate:数据变化,进入重新渲染前。

  6. updated:更新完成。

  7. beforeDestroy:实例销毁前。

  8. destroyed:实例销毁后。

8. beforeDestroy 的使用场景

beforeDestroy 适合在组件即将销毁时执行一些清理操作,比如清除定时器、解绑事件监听等,以避免内存泄漏。

9. beforeCreated 中请求数据的合适性

beforeCreated 阶段,由于实例尚未完全创建,数据观察和事件系统还未初始化,因此在此阶段进行请求操作可能会导致一些问题,无法绑定请求结果到响应式数据,通常不建议这样做。

10. JSONP 原理,后台返回什么,何时出现跨域?

JSONP 是一种解决跨域请求的方法。其原理是利用 <script> 标签不受跨域限制的特性,通过传递一个回调函数的名字,后台返回 JavaScript 格式的数据并调用该回调函数。跨域问题通常在浏览器进行 AJAX 请求 时出现,因为浏览器安全策略(同源策略)限制了不同域之间的数据请求。

11. Vue 父子组件通信

Vue 中父子组件之间的通信方式有:

  • 父组件通过 props 向子组件传递数据。

  • 子组件通过 $emit 向父组件发送事件,以传递数据。

  • 使用 Vuex 或一个事件总线(EventBus)进行跨层级的通信。

第二场腾讯会议视频面试(顺序可能打乱了,记不住)

  1. 自我介绍
  2. 介绍自己影响比较深的项目
  3. 地址栏输入地址回车直到渲染的整个过程(详细讲下页面渲染过程
    • HTML parser --> DOM Tree
      • 标记化算法,进行元素状态的标记
      • dom 树构建
    • CSS parser --> Style Tree
      • 解析 css 代码,生成样式树
    • attachment --> Render Tree
      • 结合 dom树 与 style树,生成渲染树
    • layout: 布局
    • GPU painting: 像素绘制页)
  4. 服务器怎么解析这个地址和ip地址怎么查找的
  5. 三次握手是怎么过程,服务器怎么识别握手是同一个客户端的
  6. 进程和多线程讲一下,有什么关系
  7. js的类和c++、java的类有什么区别?
  8. 浏览器单线程怎么优化的?
  9. vue项目怎么优化的,提到gzip被虐
  10. 跨域怎么解决的?cors后台是怎么写的?讲了一下xss
  11. 对于小程序里面的权限是怎么做安全校验的
  12. 事件流,事件委托讲了下
  13. 原型和原型链讲了下
  14. let const var区别,怎么手写一个函数实现const的功能
  15. 单线程和异步怎么使用到和体现的
  16. 解释一下settimeout的原理
  17. promise的认识
  18. promise和async 和区别
  19. 浏览器的安全问题有哪些详细介绍一下
  20. http和Https去区别,为什么https比http安全?ssl优点
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那就可爱多一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值