shein面试
1. http2和http1.1对比? http1.1中,增加了connection:keep-alive,一次TCP连接可以发送多次请求,但服务端只能顺序处理请求, 如果要实现并发请求,需要开启多个TCP连接,但浏览器的TCP连接数有最大限制,Chrome是6个。 http2的特性:多路复用(一次TCP连接中可以实现多个并发请求);首部压缩;服务端推送(一次请求多次响应,减少了请求数); http协议最大的问题在于时延(而非带宽),多路复用技术极大降低了时延 2. 进程和线程的关系? 线程是进程的子集;进程是线程的容器;一个程序就是一个进程;一个进程至少一个线程。 原理: 1)进程是OS分配的一个环境容器,线程是OS分配CUP时间片去执行的一项任务,从这个意义来看线程是动态的。 2)程序是指令、数据和组织形式等的描述,进程是程序的实体,是资源分配的最小单位; 线程是OS运算调度的最小单位,一个进程可以并发进行多个线程,每个线程执行自己的任务; 区别: 多个线程共享同一进程的地址空间和资源,不同进程之间的地址空间和资源时相互独立的。 1个线程崩溃会导致所在进程崩溃,但1个进程崩溃并不会导致其他进程崩溃 多线程的优点: 1)提高程序执行效率 2)充分利用CPU和内存资源(1个CPU本质上只能处理1个线程) 3)线程在执行完之后会自动销毁 3. vue-router的两种路由模式区别和如何实现? history模式: 调用了H5的window.history API实现的, API包括pushState() popState() forward() back() go()等 在创建VueRouter的时候,会监听地址栏的变化并作出相应的操作,比如下载文件或改变dom hash模式: 在主地址后面加上#具体地址,这是通过改变window.location.hash来实现的, 通过window监听hashChange事件, 如果发生改变,可以修改location.hash来改变路由并执行相应处理。每次hash的改变都会放到历史栈里面。 共同点:为什么能实现局部刷新? 通过pushState或者赋值location.hash的方式不会重新发送请求给服务器,这为页面视图局部刷新提供了基础。 同时,会将URL存入历史记录栈中。 history的优点: 1)美观好看; 2)pushState设置的新URL可以是与当前URL同源的任意URL;而hash只可修改#后面的部分,故只可设置与当前同文档的URL 3)pushState设置的新URL可以与当前URL一模一样,这样也会把记录添加到栈中;而hash设置的新值必须与原来不一样才会触发记录添加到栈中 history的问题: 用户输入一个地址首次进入,如果地址不是index.html那么就会存在服务器找不到/404的错误。 而在hash模式下则不会出现这种问题,因为#以及后面的地址不会发送给服务器,只会匹配前面的主地址。 解决方法:在服务端的路由配置上,最后统一匹配到index.html路径上。
JS笔试编程题
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。