GitHub标星13(1),三面蚂蚁核心金融部

46 阅读10分钟

Vue 面试题

1.Vue 双向绑定原理 2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程? 3.你是如何理解 Vue 的响应式系统的? 4.虚拟 DOM 实现原理 5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异? 6.Vue 中 key 值的作用? 7.Vue 的生命周期 8.Vue 组件间通信有哪些方式? 9.watch、methods 和 computed 的区别? 10.vue 中怎么重置 data? 11.组件中写 name 选项有什么作用? 12.vue-router 有哪些钩子函数? 13.route 和 router 的区别是什么? 14.说一下 Vue 和 React 的认识,做一个简单的对比 15.Vue 的 nextTick 的原理是什么? 16.Vuex 有哪几种属性? 17.vue 首屏加载优化 18.Vue 3.0 有没有过了解? 19.vue-cli 替我们做了哪些工作? …

算法

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数 ...

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

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

  • DOM:Document Object Model(文档对象模型),操作页面上的元素的API。比如让盒子移动、变色、改变大小、轮播图等等。

  • BOM:Browser Object Model(浏览器对象模型),操作浏览器部分功能的API。通过BOM可以操作浏览器窗口,比如弹框、控制浏览器跳转、获取浏览器分辨率等等。

通俗理解就是:ECMAScript 是 JS 的语法;DOM 和 BOM 浏览器运行环境为 JS提供的API。

JavaScript 的特点


特点1:解释型语言

JavaScript 是解释型语言,不需要事先被翻译为机器码;而是边翻译边执行(翻译一行,执行一行)。

什么是「解释型语言」?详见下一段。

由于少了实现编译这一步骤,所以解释型语言开发起来尤为方便,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。

特点2:单线程

特点3:ECMAScript标准

ECMAScript是一种由 ECMA 国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)制定和发布的脚本语言规范。

JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。

简单来说,ECMAScript不是一门语言,而是一个标准。ECMAScript 规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。

ECMAScript在2015年6月,发布了ECMAScript 6版本(ES6),语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不会那么快去追上这个标准,需要时间。

编程语言的分类


翻译器

计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所编写的语言翻译成机器语言,计算机才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器

由此可见,所谓的“翻译”,指的是翻译成计算机能够执行的指令。

翻译器翻译的方式有两种:一种是编译,另一种是解释。两种方式之间的区别在于翻译的时机不同。

  • 编译器:在代码执行之前,事前把所有的代码一次性翻译好,生成中间代码文件,然后整体执行。

  • 解释器:边翻译,边执行(在代码执行时进行及时翻译,并立即执行)。当编译器以解释的方式运行时,也称之为解释器。

对应的语言,称之为“编译型语言”、“解释型语言”。

编译型语言

  • 定义:事先把所有的代码一次性翻译好,然后整体执行。

  • 优点:运行更快。

  • 不足:移植性不好,不跨平台。

  • 编译型语言举例:c、c++

比如说,c语言的代码文件是.c后缀,翻译之后文件是.obj后缀,系统执行的是 obj 文件;再比如, java 语言的代码文件是.java后缀,翻译之后的文件是.class后缀。(注意,Java 语言不是严格的 编译型语言,这个一会儿会讲)

解释型语言

  • 定义:边翻译边执行(翻译一行,执行一行),不需要事先一次性翻译。

  • 优点:移植性好,跨平台。

  • 缺点:运行更慢。

  • 解释型语言举例:JavaScript、php、Python。

Java语言

Java 语言既不是编译型语言,也不是解释型语言。翻译过程:

(1)编译:.java代码文件先通过 javac 命令编译成.class文件。

(2)执行:.class文件再通过 jvm 虚拟机,解释执行。有了 jvm 的存在,让 java 跨平台了。

开始写第一行JavaScript代码


JavaScript 代码的书写位置在哪里呢?这个问题,也可以理解成:引入 js 代码,有哪几种方式。

方式1:行内式

代码举例

<input type="button" value="点我点我" οnclick="alert('千古壹号')" />

完整的可执行代码如下:

Document

<input type="button" value="点我点我" οnclick="alert('千古壹号的方式1')" />

分析

  • 可以将单行或少量 JS 代码写在HTML标签的事件属性中(以 on 开头的属性),比如放在上面的 onclick点击事件中。

  • 这种书写方式,不推荐使用,原因是:可读性差,尤其是需要编写大量 JS代码时,容易出错;引号多层嵌套时,也容易出错。

  • 关于代码中的「引号」,在HTML标签中,我们推荐使用双引号, JS 中我们推荐使用单引号。

方式2、内嵌式

我们可以在html 页面的 <body> 标签里放入<script type=”text/javascript”></script>标签对儿,并在<script>里书写JavaScript 代码:

Document

分析

  • text表示纯文本,因为JavaScript也是一个纯文本的语言。

  • 可以将多行JS代码写到 <script> 标签中。

  • 内嵌式 JS 是学习时常用的方式。

方式3:引入外部的 JS 文件

Document

上面这段代码,依然是放到body标签里,可以和内嵌的js代码并列。

另外,引用外部 JS文件的 script 标签中间不可以再写代码。

总结

我们在实战开发中,基本都是采用方式3,因为这种方式,可以确保 html 文件和 js 文件是分开的,有利于代码的结构化和复用。很少会有人把一大堆 js 代码塞到 html 文件里。

JS一些简单的语法规则


学习程序,是有规律可循的,程序会有有相同的部分,这些部分就是一种规定,不能更改,我们成为:语法。

(1)JavaScript对换行、缩进、空格不敏感。每一条语句以分号结尾。

代码一:

等价于代码二:

备注:每一条语句末尾要加上分号,虽然分号不是必须加的,如果不写分号,浏览器会自动添加,但是会消耗一些系统资源。

(2)所有的符号,都是英语的。比如括号、引号、分号。

如果你用的是搜狗拼音,建议不要用shift切换中英文(可以在搜狗软件里进行设置),不然很容易输入中文的分号;建议用ctrl+space切换中英文输入法。

(3)严格区分大小写。

注释


我们不要把 HTML、CSS、JavaScript三者的注释格式搞混淆了。

HTML 的注释

CSS的注释

/* 我是注释 */ p{ font-weight: bold; font-style: italic; color: red; }

注意:CSS只有/* */这种注释,没有//这种注释。而且注释要写在<style>标签里面才算生效哦。

JavaScript 的注释

单行注释:

// 我是注释

多行注释:

/*

多行注释1

多行注释2

*/

补充:VS Code中,单行注释的快捷键是「Ctrl + /」,多行注释的默认快捷键是「Alt + Shift + A」。

当然,如果你觉得多行注释的默认快捷键不方便,我们还可以修改默认快捷键。操作如下:

VS Code --> 首选项 --> 键盘快捷方式 --> 查找“注释”这两个字 --> 将原来的快捷键修改为「Ctrl + Shift + /」。

Javascript 输入输出语句


弹出警告框:alert语句

我们要学习的第一个语句,就是alert语句。

代码举例如下:

Document

alert(英文翻译为“警报”)的用途:弹出“警告框”

alert("")警告框的效果如下:

这个警告框,在IE浏览器中长这样:

上面的代码中,如果写了两个alert()语句的话,网页的效果是:弹出第一个警告框,点击确定后,继续弹出第二个警告框。

控制台输出:console.log("")

console.log("")表示在控制台中输出。console表示“控制台”,log表示“输出”。

在Chrome浏览器中,按F12即可打开控制台,选择「console」栏,即可看到打印的内容。

console.log("")效果如下:

控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。

普通人是不会在意控制台的,但是有些网站另藏玄机。有个很有意思的地方是,百度首页的控制台,悄悄地放了一段招聘信息:

毕竟做前端的人是经常使用控制台的。

总结:alert() 主要用来显示消息给用户,console.log() 用来给程序员自己调试用的。

弹出输入框:prompt()语句

最后

在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理