可线上办公的公司,反馈相当快,感觉前端实习生要掌握的知识范围都问了一遍,前端三件套包括框架,计算机三大件等的。
有哪些块级标签和行内标签
块级标签:
p,ul,li,h1-h6,div,table,header,section,footer
行内标签:
a,i,span,img,label,input
如何实现本地存储
答了localStorage
-
cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密) -
cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递
-
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存 -
存储大小:
cookie数据大小不能超过4ksessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大
-
有期时间:
localStorage存储持久数据,浏览器关闭后数据不丢失除非主动删除数据sessionStorage数据在当前浏览器窗口关闭后自动删除cookie设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
CSS的布局方式
float布局,postion布局,flex布局,grid布局
flex布局
css有哪些选择器
元素选择器:div
id选择器:#id
类选择器:.class
并集选择器:选择器1,选择器2
复合选择器:选择器1选择器2
通配选择器:*
后代元素选择器:祖先元素 后代元素
子元素选择器:父元素>子元素
伪类选择器::hover,:visited
属性选择器:根据元素中的属性或属性值来选取元素
兄弟选择器:选择器1+选择器2
选择器的权重
!important规则最重要,大于其它规则- 行内样式规则,加
1000 - 对于选择器中给定的各个
ID属性值,加100 - 对于选择器中给定的各个类属性、属性选择器或者伪类选择器,加
10 - 对于选择其中给定的各个元素标签选择器,加1
- 如果权值一样,则按照样式规则的先后顺序来应用,顺序靠后的覆盖靠前的规则
闭包
-
闭包就是能够读取其他函数内部变量的函数
-
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域
-
闭包的特性:
- 函数内再嵌套函数
- 内部函数可以引用外层的参数和变量
- 参数和变量不会被垃圾回收机制回收
var , const , let的区别
-
var 声明的范围是函数作用域,let 和 const 声明的范围是块作用域
-
var 声明的变量会被提升到函数作用域的顶部,let 和 const 声明的变量不存在提升,且具有暂时性死区特征
-
var 允许在同一个作用域中重复声明同一个变量,let 和 const 不允许
-
在全局作用域中使用 var 声明的变量会成为 window 对象的属性,let 和 const 声明的变量则不会
-
const 的行为与 let 基本相同,唯一 一个重要的区别是,使用 const 声明的变量必须进行初始化,且不能被修改
Vue中的key到底有什么用?
- key是为Vue中的vnode标记的唯一id,通过这个key,我们的diff操作可以更准确、更快速
- diff算法的过程中,先会进行新旧节点的首尾交叉对比,当无法匹配的时候会用新节点的key与旧节点进行比对,然后超出差异
computed和watch
- computed:默认
computed也是一个watcher具备缓存,只有当依赖的数据变化时才会计算, 当数据没有变化时, 它会读取缓存数据。如果一个数据依赖于其他数据,使用computed - watch:每次都需要执行函数。
watch更适用于数据变化时的异步操作。如果需要在某个数据变化时做一些事情,使用watch。
vue的虚拟dom
所谓的 Virtual DOM 算法。包括几个步骤:
1.用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中;
2.当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异;
3.把2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了。
Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存。
既然 DOM 这么慢,我们就在它们 JS 和 DOM 之间加个缓存。CPU(JS)只操作内存(Virtual DOM),最后的时候再把变更写入硬盘(DOM)。
所谓的virtual dom,也就是虚拟节点。它通过js的Object对象模拟DOM中的节点,然后再通过特定的render方法将其渲染成真实的DOM节点 dom。diff 则是通过JS层面的计算,返回一个patch对象,即补丁对象,在通过特定的操作解析patch对象,完成页面的重新渲染。
TCP和UDP的区别
UDP协议是面向无连接的,不需要在正式传递数据之前先连接起双方,具有不可靠性:不保证有序且不丢失的将数据传递到对端,并且没有任何控制流量的算法。优点是:相比TCP更轻便高效
http和https的区别
- http使用明文传输,https则是具有安全性的ssl加密传输协议
- http不会验证通信放的身份,https会通过数字证书来验证身份
- https可以保证数据的完整性,防止传输内容被中间人冒充或篡改
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所共12 个包。
- 除以上外,http和https使用的端口也不同,前者使用80端口,后者使用443端口
进程和线程的区别
进程是操作系统资源分配的最小单元。一个进程拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是⼀个类或一个 PCB
(Process Control Block)进程控制块的结构体。
进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序运行的一次运行过程。
线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。
虽然多进程也能实现并发编程,但是线程比进程**更轻量**。
诸如此类....