作业帮前端面经

一面:

const a = {}; a.b = 1

  • 对象是引用类型的,栈中保存的是对象的指针,const保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的,也就是说const定义的引用类型只要指针不发生改变,其他的改变都是允许的

weakSet

  • weakSet的成员只能是对象

  • weakSet中的对象是弱引用不计入垃圾回收机制

  • weakSet没有size属性

  • weakSet不能遍历成员

weakMap

  • weakMap只接受对象作为键名

  • weakMap键名指向的对象不计入垃圾回收机制

  • weakMap没有size属性

  • weakMap不能遍历成员

history

  • History对象是window对象的一部分,可通过window.history属性对其进行访问

  • History对象属性:length

  • History对象方法:back()、forward()、go()

arr.includes()

  • includes()方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true

  • 对象数组不能使用includes方法来检测

简历面

对前端工程化的理解

概念如下:前端工程化是使用软件工程的技术和方法来进行前端项目的开发、维护和管理(曾经的前端开发可不是这样的,不然为什么要说工程"化"呢?)。
这里顺带说下软件工程的概念:应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科
前端工程化包含如下:
1.代码规范: 保证团队所有成员以同样的规范开发代码。
2.分支管理: 不同的开发人员开发不同的功能或组件,按照统一的流程合并到主干。
3.模块管理: 一方面,团队引用的模块应该是规范的;另一方面,必须保证这些模块可以正确的加入到最终编译好的包文件中。(以上两点可以总结为模块化或者组件化开发。)
4.自动化测试:为了保证和并进主干的代码达到质量标准,必须有测试,而且测试应该是自动化的,可以回归的。
5.构建:主干更新以后,自动将代码编译为最终的目标格式,并且准备好各种静态资源,
6.部署。 将构建好的代码部署到生产环境。

找出数组中相加等于给定和的所有元素组

var twoSum = function(nums, target) {
   let res = {}
   
   for(let i = 0; i < nums.length; i++) {
       if(res[nums[i]] !== undefined)
           return [res[nums[i]], i]
       else
           res[target - nums[i]] = i
  }
}
原文地址:https://www.cnblogs.com/smalldy/p/13215133.html