oldCode
2022/09/25阅读:41主题:雁栖湖
腾讯面试经历,附带真题和解析
1H5新特性
H5是移动网站的一个名称,手机上各种能够被浏览器打开的网页都可以被笼统的称作H5。
HTML5 是下一代的 HTML。
新特性:
-
新语义元素(新增标签和属性),有利于代码可读性和SEO;
-
sessionStorage、localStorage和indexedDB加强本地存储;
-
离线web应用;
-
表单新增功能;
-
CSS3;
-
地理定位。
2java和js的特性和区别
-
Java是强类型语言,而JavaScript是弱类型语言;
Java是强类型语言,使用变量前必须首先在程序中声明;在Java中,在编译时会检查变量的类型。而,JavaScript是弱类型语言,具有更宽松的语法和规则。
-
数据类型不同; -
执行环境不同;
Java应用程序可以在任何虚拟机(JVM)或Web浏览器中运行,执行时会使用更多内存。而JavaScript代码仅在浏览器上运行,因为JavaScript是仅针对浏览器开发的。它运行时只需要很少的内存,因此它可以在网页中被使用。
-
定位不同;
Java是一种完全面向对象的OOP编程语言,我们想要运用Java写东西就必须先设计好对象;而,JavaScript不同,它是基于对象的一种OOP脚本语言,它为开发者提供了自带的很多内部对象,要更为简易省时。
-
联编方式不同;
Java采用静态联编,是一种静态类型语言。Java的对象引用必须在编译时就进行,编译器需要实现强类型检查。而JavaScript不同,它采用动态联编,是一种动态类型语言,它的对象引用可以在运行时检查。
-
并发方法不同。
3怎么理解弱类型
在javascript中,弱类型是指数据类型可以被忽略,一个变量可以赋不同数据类型的值。javascript是一种弱类型语言,它允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。
4js怎么实现继承的
1、原型链继承
将父类的实例作为子类的原型
function Cat(){
}
Cat.prototype = new Animal();
Cat.prototype.name = 'cat';
// Test Code
var cat = new Cat();
console.log(cat.name);
console.log(cat.eat('fish'));
console.log(cat.sleep());
console.log(cat instanceof Animal); //true
console.log(cat instanceof Cat); //true
2、构造继承
使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)
function Cat(name){
Animal.call(this);
this.name = name || 'Tom';
}
// Test Code
var cat = new Cat();
console.log(cat.name);
console.log(cat.sleep());
console.log(cat instanceof Animal); // false
console.log(cat instanceof Cat); // true
5闭包,以及闭包用来解决什么样的问题
闭包是有权限访问其他函数作用域的局部变量的一个函数
闭包的作用:
-
一个是可以读取函数内部的变量; -
变量私有化,避免全局污染 -
延续局部变量的寿命 (也可能变成缺点)
闭包的缺点
-
导致变量不会被垃圾回收机制回收,造成内存消耗,解决需手动删除 -
不恰当的使用闭包可能会造成内存泄漏的问题
6事件循环
事件循环(eventLoop)是单线程的JavaScript在处理异步事件时进行的一种循环过程,具体来讲,对于异步事件它会先加入到事件队列中挂起,等主线程空闲时会去执行事件队列中的事件。
https://juejin.cn/post/7002037475874963493
7宏任务和微任务的区别
-
宏任务:当前调用栈中执行的代码成为宏任务。(主代码快,定时器等等) -
微任务: 当前(此次事件循环中)宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调事件。(promise.then,proness.nextTick等等)。 -
宏任务中的事件放在callback queue中,由事件触发线程维护;微任务的事件放在微任务队列中,由js引擎线程维护。
8对node.js有了解吗
Node.js 是一个开源与跨平台的 JavaScript 运行时环境
在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能
可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境
9es6有用过哪些
-
解构赋值 -
模板字符串 -
默认参数 -
箭头函数 -
Promises 解决异步问题
10let, const和var的区别
三者都是用来声明变量的,let,var常用来声明变量,const声明常量
-
var声明的变量会挂载在window上,而let和const声明的变量不会 -
var声明变量存在变量提升,let和const不存在变量提升 -
let和const声明形成块作用域 -
同一作用域下let和const不能声明同名变量,而var可以
11变量提升
JavaScript是单线程语言,所以执行肯定是按顺序执行。但是并不是逐行的分析和执行,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
js在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的语句都不会改变他们的顺序,因此,在编译阶段的时候,第一步就已经执行了,而第二部则是在执行阶段执行到该语句的时候才执行。
12暂时性死区
ES6 规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
13箭头函数和普通函数的区别
-
语法更加简洁、清晰 -
箭头函数没有 prototype (原型),所以箭头函数本身没有this -
call | apply | bind 无法改变箭头函数中this的指向 -
箭头函数不能作为构造函数使用
14如果调用箭头函数使用了call,apply会怎么样
call | apply | bind方法可以用来动态修改函数执行时this的指向,但由于箭头函数的this定义时就已经确定且永远不会改变。所以使用这些方法永远也改变不了箭头函数this的指向。
15介绍一下vue的优点
优点: 1、vue两大特点:响应式编程、组件化。
2、vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快。
3、vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom,这样大大加快了访问速度和提升用户体验。而且他的第三方ui库很多节省开发时间。
缺点: 1、vue两大特点:响应式编程、组件化。
2、vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快。
3、vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom,这样大大加快了访问速度和提升用户体验。而且他的第三方ui库很多节省开发时间。
Part1最后
欢迎关注公众号:oldCode
;回复:面试
获取面试资料


作者介绍
oldCode
分享面试经历和前端技术