wordpress写网站教程,wordpress+去掉阅读,中企动力科技股份有限公司贵阳分公司,wordpress主页幻灯片面试系列文章
万字总结我在寒冬里的面试准备经历前端铜九铁十面试必备八股文——【HTMLCSS】前端铜九铁十面试必备八股文——【JavaScript】前端铜九铁十面试必备八股文——【Vue】前端铜九铁十面试必备八股文——【浏览器】前端铜九铁十面试必备八股文——【网络相关】前…面试系列文章
万字总结我在寒冬里的面试准备经历前端铜九铁十面试必备八股文——【HTMLCSS】前端铜九铁十面试必备八股文——【JavaScript】前端铜九铁十面试必备八股文——【Vue】前端铜九铁十面试必备八股文——【浏览器】前端铜九铁十面试必备八股文——【网络相关】前端铜九铁十面试必备八股文——【性能优化】前端铜九铁十面试必备八股文——【工程化】前端铜九铁十面试必备八股文——【手写代码】
XSS跨站脚本攻击
XSS 攻击指的是跨站脚本攻击是一种 代码注入攻击。攻击者通过在网站注入恶意脚本使之在用户的浏览器上运行从而盗取用户的信息如 cookie 等。
避免方式
不用服务器端拼接后返回不使用服务端渲染。对一些敏感信息进行保护比如 cookie 使用 http-only使得脚本无法获取。对用户输入的地方和变量都需要仔细检查长度和对 #x201D;,#x201D;,#x201D;;#x201D;,#x201D;#x2019;#x201D; /,等字符做过滤
CSRF跨站请求伪造
CSRF 攻击的本质是利用 cookie 会在同源请求中携带发送给服务器的特点以此来实现用户的冒充。
避免方式
添加验证码验证使用 token验证限制 cookie 不能作为被第三方使用进行同源检测
什么进程和线程有什么区别
进程Process
进程是计算机中正在运行的程序的实例 一个进程就是一个程序运行实例。它拥有独立的内存空间、代码和数据并且由操作系统负责调度和管理。 每个进程在执行时都会分配独立的内存空间不同进程之间的内存是隔离的一个进程的错误不会直接影响其他进程。 进程之间通过进程间通信IPC机制来交换数据和进行通信常见的 IPC方式包括管道、消息队列、共享内存等。进程的切换开销较大因为需要保存和恢复进程的完整状态涉及到内存保护和虚拟内存的切换。
线程Thread
线程是进程的子任务一个进程可以包含多个线程。它们共享相同的代码和数据但拥有独立的执行栈和寄存器集合。 多个线程可以在同一进程内并发执行共享进程的资源如内存空间、打开的文件等。线程间的通信和数据交换比进程间的通信更加方便因为它们共享相同的地址空间。线程的切换开销较小因为线程共享进程的地址空间切换时不需要切换内存页表速度较快。
区别
进程和线程都可以实现并发执行但进程是独立的执行实体而 线程是依赖于进程的。进程之间资源相互隔离 线程共享所属进程的资源。创建和销毁线程的开销较小而创建和销毁进程的开销较大。多线程程序的编程复杂度通常比单线程程序高但多线程可以更好地利用多核处理器来提高程序的执行效率。
浏览器有哪些进程
主进程负责处理用户输入、渲染页面等主要任务。渲染进程渲染进程负责解析 HTML、 CSS和 JavaScript并将网页渲染成可视化内容。GPU进程负责处理浏览器中的 GPU加速任务。网络线程网络进程负责处理浏览器中的网络请求和响应包括下载网页和资源等。插件进程负责浏览器插件运行。
协商缓存和强缓存的区别
强缓存
使用强缓存策略时如果缓存资源有效浏览器会 从本地读取缓存资源并返回200不必再向服务器发起请求。强缓存策略可以通过两种方式来设置分别是 http 头信息中的 Expires 属性和 Cache-Control 属性。
Expires指定资源的过期时间。在过期时间以内改资源可以被缓存使用不需要向浏览器发送请求。这个时间依赖于服务器时间会存在服务器时间和客户端时间不一致。
Cache-Control属性
private 仅浏览器可以缓存public浏览器和代理服务器都可以缓存max-agexxx 过期时间单位为秒no-cache 不进行强缓存但会有协商缓存no-store 不强缓存也不协商缓存
当两种方式一起使用时 Cache-Control 的优先级要高于 Expires。
协商缓存
如果设置强缓存无需发起请求直接使用缓存内容。如果没有命中强缓存设置了协商缓存也不需要发起请求使用缓存。
命中协商缓存条件
Cache-Control: no-cachemax-age时间过期
在使用协商缓存时 会先向服务器发送一个请求如果资源没有发生修改则请求返回304状态让浏览器使用本地缓存。如果资源发生修改则返回修改后的内容
在 request headers中的 Etag属性和 Last-Modified属性来进行设置。其中 ETage优先于Last-Modified。
Etag文件改动 服务器在返回资源的时候在头信息中添加 Etag属性这个属性是资源的唯一标识符。当资源改变这个值也会改变。下次请求资源时会在请求头中添加 If-None-Match属性为上一次请求的资源的 Etag值。服务端会通过这个属性和资源最后一次修改时间进行对比以此来判断资源是否修改。这种方式比 Last-Modified更加准确。
Last-Modified 上次修改时间 服务器通过在响应头上添加 Last-Modified属性来指出资源 最后一次修改时间。当浏览器发起请求时会在请求头上添加一个 IF-Modified-Since属性值为上一次资源请求的 Last-Modified的值。服务区会通过这个属性和最后修改时间来进行比较以此来判断资源是否修改。如果没有资源修改返回 304状态使用本地缓存。如果资源修改就返回最新资源 200状态。
这种方式有个缺点 Last-Modified标记的时间只能精确到1秒如果文件在1秒内修改但是 Last-Modified 却没有改变这样会造成缓存命中的不准确。
区别
强缓存优先级高于协商缓存协商缓存不论命中与否都会发送一次请求强缓存返回 200协商缓存命中返回 304CtrlF5 会强制刷新会跳过所有缓存而F5刷新跳过强缓存但是会检查协商缓存。
为什么需要浏览器缓存
使用浏览器缓存有以下优点
减少了服务器的负担提高了网站的性能加快了客户端网页的加载速度减少了多余网络数据传输
常见浏览器所用内核
IE浏览器内核 Trident 内核也是俗称的 IE内核Chrome 浏览器内核以前是 Webkit 内核现在是 Blink内核Firefox 浏览器内核 Gecko 内核俗称 Firefox 内核Safari 浏览器内核 Webkit 内核360浏览器、猎豹浏览器内核 IE Chrome 双内核
浏览器的渲染过程
解析文档生成 DOM树解析 CSS根据 CSS规则生成 CSSOM规则树在 CSSOM树和 DOM树生成完后合并 DOM、 CSSOM树构建渲染树渲染树构建完成后开始计算元素大小和位置【回流发生在这个阶段】根据计算好的位置信息将内容渲染到屏幕上【重绘发生在这个阶段】
浏览器渲染优化
优化 javaScript JavaScript会阻塞HTML的解析改变 JavaScrip加载方式。 将 JavaScript放到 body最后面尽量使用异步加载 JS资源这样不会阻塞 DOM解析如defer、async 优化CSS加载 CSS样式少使用内嵌样式导入外部样式使用 link而不是 import因为它会阻塞渲染。 减少回流重绘 避免频繁操作样式避免频繁操作DOM复杂动画使用定位脱离文当流使用 transform替代动画
Cookie、LocalStorage、SessionStorage区别
Cookie
大小只有4kb跨域不能共享不安全容易被劫持只存在请求头中
SessionStorage
存储在内存中体积相对较大页面关闭数据会消失相对Cookie安全
LocalStorage
体积大可以存储更多内容。生命周期长除非手动删除不然会一直存在存储在硬盘中不会像Cookie一样被请求携带
什么是同源策略
跨域问题其实就是浏览器的同源策略造成的。 同源指的是 协议、 端口号、 域名必须一致。
如何解决跨越问题
CORS服务器开启跨域资源共享JSONP利用 Node和浏览器事件循环机制的区别
浏览器事件循环会在宏任务结束后检查微任务。而Node的微任务是在两个阶段之间执行。浏览器的process.nextTick和其他微任务优先级一样而node中要高于其他优先级。