常见业务题总结

Table of Contents

常见业务题总结


BOM

了解


CSS

  • link和@import引入CSS的区别
  • less和sass掌握程度

ES6

  • ES6里头的箭头函数的this对象与其他的有啥区别

    promise

    新特性

  • 参考链接


  • 介绍一下cookie,localstorage,sessionstorage,session
  • cookie和session有什么区别
  • Cookie 是否会被覆盖,localStorage是否会被覆盖
  • 如果页面初始载入的时候把ajax请求返回的数据存在localStorage里面,然后每次调用的时候去localStorage里面取数,是否可行
  • Cookie跨域请求能不能带上

三者共同点:都是保存在浏览器端,且同源的。

区别:
1、cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存

2、存储大小限制也不同,cookie数据不能超过4k,sessionStorage和localStorage 但比cookie大得多,可以达到5M

3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面(即数据不共享);localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的( 即数据共享 )。


盒子模型


http的头部

HTTP请求头

cookie在哪个里面,url在哪里面

HTTP响应头

HTTP Response的Header里面都有些啥

HTTP状态码


面向对象

继承

new操作符做了什么

对象属性的属性

原型链

  • 对象中key-value的value怎么再放一个对象
  • 静态属性怎么继承

跨域

  • 你知道有哪些跨域方式,分别说说
  • 你所了解的跨域的方法都说说看你了解的?

类数组


linux中常用的命令行


模块化编程

AMD

CMD

CommonJs

区别

requireJS的原理

  • requirejs怎么防止重复加载
  • requirejs如何避免循环依赖?

nodejs

在项目中的具体使用

架构

优缺点

回调

  • nodejs中的文件怎么读写?

前后端分离

  • 意义

前端安全

xss和csrf


前端工程化

  • 理解

前端兼容

低版本浏览器支持HTML5标签

  • 使用js底层是怎么实现的

    列举不兼容import的浏览器


前端路由

理解

前后端路由的区别


前端学习方法和途径


前端优化

SEO

优化网站的原则


设计模式

  • 了解哪些设计模式说说看
  • 说下你所了解的设计模式的优点
  • 平常在项目中用到过哪些设计模式,说说看

数据类型

基本数据类型

复杂数据类型

Array

自带的方法

网络分层模型

OSI七层模型

TCP/IP五层模型


HTML5

  • h5有个api能定位你知道是哪个吗?

个人相关

  • 抗压能力强?
  • 说明
  • 自我规划
  • 遇到最难的问题
  • 期望的项目角色
  • 你的不足是什么
  • 你觉得你什么技术最擅长
  • 你平时有没有什么技术的沉淀
  • 前端发展趋势
  • 你的职业规划是怎么样的
  • 为什么选择前端,如何学习的,看了哪些书,《js高级程序设计》和《你不知道的js》有什么区别,看书,看博客,看公众号三者的时间是如何分配的?
  • 手里有什么offer
  • 你对于第一份工作最看重的三个方面是什么?
  • 如何评价现在的前端?
  • 为什么选择前端


HTTP2


输入URL后发生了什么


事件流

事件代理

  • w3c事件与IE事件的区别
  • IE与W3C怎么阻止事件的冒泡

    事件

  • 一来给了张纸要求写js自定义事件


项目管理

  • 工程怎么进行文件管理

登录验证

  • 如何保持登录状态

Html语义化


HTTP状态码

  • 304是什么意思?有没有方法不请求不经过服务器直接使用缓存
  • 说下你知道的响应状态码
  • 304与200读取缓存的区别
  • http状态码。。。401和403区别

HTTP方法

  • Get和post的区别
  • Post一个file的时候file放在哪的

框架

Vue

  • 说说你对组件的理解
  • 组件的html怎么进行管理
  • vuex是用来做什么的
  • vue源码结构
  • vue的特点

    其他

  • 要是让你自己写一个js框架你会用到哪些设计模式

  • MVVM

  • 对mvc的理解


尺寸

  • rem是什么?em是什么?如果上一层就是根root了,em和rem等价么

数据库

  • mysql与 MongoDB的区别

ajax

  • ajax的过程以及 readyState几个状态的含义

数据结构

  • 你学过数据结构没,说说你都了解些什么
  • 数组和链表区别,分别适合什么数据结构

操作系统

  • 你学过计算机操作系统没,说说你都了解些什么
  • 用户态和内核态的理解和区别?
  • 线程和进程的区别?

计算机组成原理

  • 你学过计算机组成原理没,说说你都了解些什么

算法

  • 你学过算法没,说说你都了解些什么

HTTP缓存

  • 浏览器缓存的区别

作用域

  • js中this的作用
  • js中上下文是什么
  • js有哪些函数能改变上下文
  • call,apply作用,以及用法
  • call与apply的区别

前端布局

  • position有哪些值,说下各自的作用

前端性能优化

  • lazyload如何实现
  • 浏览器如何实现图片缓存

移动开发

  • 点透问题

页面渲染

  • 原生js模板引擎
  • repaint和reflow区别
  • window.onload和$(document).ready()的区别,浏览器加载转圈结束时哪个时间点
  • 页面加载过程

行内元素

  • 参考链接
  • b,i,small,tt
  • abbr,code,em,
  • a,br,img,q,span,sub,sup
  • button,input,label,select,textarea

    特征

  • 块级元素内嵌块级元素和行内元素

  • 默认情况下,块级元素会新起一行

  • 默认情况下,块级元素占满父级元素的width

  • 块级元素的width、height、padding、margin、line-height正常设置(可以达到想要的结果)


块级元素

  • 参考链接
  • <div> 文档分区
  • <form> 表单
  • <address> 联系方式信息
  • <article> 文章内容
  • <audio> 音频播放
  • <aside> 伴随内容
  • <canvas> 绘制图形
  • <dl> 定义列表
  • <footer> 区段尾或页尾
  • <h1>,<h2>,<h3>,<h4>,<h5>,<h6> 标题级别 1-6
  • <header> 区段头或页头
  • <ol> 有序列表, ul, li
  • <p> 行
  • <section> 一个页面区段
  • <table>表格
  • <ul> 无序列表
  • <video> 视频

    特征

  • 行内元素只能包含数据和其它行内元素

  • 默认情况下,行内元素不会以新行开始

  • 默认情况下行内元素width默认为元素内容的宽度

  • 不能设置width、height、padding-top、padding-bottom、margin-top、margin-bttom、line-height(就算设置了也达不到想要的效果)


linux

进程间6大通信方式

  • 管道(pipe),流管道(s_pipe)和有名管道(FIFO)
  • 信号(signal)
  • 消息队列
  • 共享内存
  • 信号量
  • 套接字(socket) 参考链接

浏览器事件循环

参考链接

event loop介绍

javascript 在浏览器端运行是单线程的,这是由浏览器决定的,这是为了避免多线程执行不同任务会发生冲突的情况。也就是说我们写的javascript 代码只在一个线程上运行,称之为主线程(HTML5提供了web worker API可以让浏览器开一个线程运行比较复杂耗时的 javascript任务,但是这个线程仍受主线程的控制)。单线程的话,如果我们做一些“sleep”的操作。

事件循环的主要机制

  • 一个事件循环有一个或者多个任务队列(task queues)。任务队列是task的有序列表,task是调度Events,Parsing,Callbacks,Using a resource,Reacting to DOM manipulation这些任务的算法;
  • 每个任务都来自一个特定的任务源(task source)(比如鼠标键盘事件)。来自同一个特定任务源且属于特定事件循环的任务必须被加入到同一个任务队列中,来自不同任务源的任务可以放在不同的任务队列中;
  • 浏览器调用这些队列中的任务时采取这样的做法: 相同队列中的任务按照先进先出的顺序, 不同的队列按照提前设置的队列优先级来调用. 例如,用户代理可以有一个用于鼠标和键盘事件的任务队列(用户交互任务源),另一个用于其他任务。然后,用户代理75%概率调用键盘和鼠标事件任务队列,25%调用其他队列, 这样的话就保持界面响应而且不会饿死其他任务队列. 但是相同队列中的任务要按照先进先出的顺序。也就是说单独的任务队列中的任务总是按先进先出的顺序执行,但是不保证多个任务队列中的任务优先级,具体实现可能会交叉执行; 在调用任务的过程中, 会产生新的任务, 浏览器就会不断执行任务, 因此称为事件循环。

    microtask queue 微任务队列

    还有一些特殊任务, 它们不会被放在task queues中, 会放在一个叫做microtask(微任务) queue中,
    任务队列可以有多个, 但是微任务队列只有一个。
    那么哪些任务是放在task queue, 哪些放在microtask queue呢? 通常对浏览器和Node.js来说:

  • macrotask(宏任务): script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering等;

  • microtask(微任务): process.nextTick, Promises(这里指浏览器实现的原生 Promise), Object.observe, MutationObserver等;

请尤其注意macrotask中执行整体代码也是一个宏任务

事件循环处理过程

总体来说, 浏览器端事件循环的一个回合(go-around或者叫cycle)就是:

  • 从macrotask队列中(task queue)取一个宏任务执行, 执行完后, 取出所有的microtask执行.
  • 重复回合

无论在执行macrotask还是microtask, 都有可能产生新的macrotask或者microtask, 就这样继续执行.


文档流

参考链接 + 替换元素、非替换元素、行内替换元素、行内非替换元素


javascript基础

ipv6的结构

  • 不省略表示,ipv6地址必须分为8段
  • 中间出现若干0,可以压缩,但是只可以省略一次
  • 前导0可以省略

流量控制和拥塞控制

HTTPS流程

判断闰年的条件

  • 1、能被4整除,但不能被100整除;
  • 2、能被400整除;