HTML
doctype
是什么
document type 文档类型定义(DTD),告诉浏览器以何种协议来解析,声明可以切换标准模式或兼容模式
meta viewport
针对移动端的控制大小缩放等
怎么样做多语言页面
来源用语言判断通过 ip 段 记录 cookie
使用框架有相对应的库,可进行静态或动态的文案翻译
构建工具如 webpack 的思路一般是维护 map 映射表,只能解决静态文案
通常解决是 构建工具 + 通用翻译函数
data-
属性是干什么的
自定义数据属性,可以用 dataset
访问
cookie
, sessionStorage
,localStorage
的区别
cookie 只能存 4kb 一般是由服务器创建的,他会被附加到每个 http 请求阿忠
sessionStorage 会话级别 5mb
localStorage 5mb
<script>
, <script async>
, <script defer>
的区别
script 渲染到这个标签就会立刻加载并执行并会阻塞解析完成后继续解析
async 加载脚本和解析文档同时进行,加载完成执行脚本并会阻塞解析,完成后继续解析
defer 所有元素解析完成才会执行脚本
什么是渐进渲染
为什么建议 link
放 head
而 script
放 body
,你有什么例外吗
浏览器渲染机制
Css
css 选择器都有哪些
类选择器,id 选择器,标签选择器,通配符选择器,属性选择器,后代选择器,同级选择器,派生选择器,多元素选择器,伪元素选择器
reset 你都重置哪些样式,为什么
margin, padding, font-size 每个浏览器默认的间距不一样
html5 的标签重置成 block
body 的 line-height 默认是 normal 大概 1.2 左右,重置成 1
a 的下划线
table border间距
ul list-type
BFC 是什么
Block Formatting Context
块状格式化上下文,属于普通流
创建条件: float 不为 none,postion 不为 static, overflow 不为 visible, flex, grid, inline-block, table-cell
css 常用布局
css 盒模型 和 怪异盒模型
标准: width = content
怪异 width = border + padding + content
标准模仿怪异
box-sizing: border-box
flex, grid
设置 flex 时,float,clear, vertical-align 会失效
flex 有主轴和交叉轴
px/em/rem
px 本身
em 相对父级
rem 相对根
css 预处理器
清除浮动
.clearfix::after {
content: "";
display: block;
clear: both;
}
JavaScript
js数据类型有哪些,怎么判断其类型
String、Number、Boolean、Symbol、Undefined、Null
typeof, instanceof, constructor, Object.prototype.toSting.call()
解释事件委托
把一个元素响应事件(click、keydown......)的函数委托到另一个元素;
通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数
解释 this
在 javascript 中
this指的是,调用函数的那个对象
解释原型链继承
每个函数有一个 _proto_
会一直向上找,直到找到原型链顶端的 null
AMD 和 CommonJS
CommonJS 有 module, export, require
AMD 有 依赖
解释为什么以下不能作为IIFE:function foo(){}();
需要改变什么才能使其成为一个IIFE?
括号包起的匿名函数
const foo = (function(){ })();
解释什么是闭包 ,怎么使用
闭包是在函数外部能取到函数内部的作用域的函数
function a () {
const b = 1;
return function() {
return b
}
}
const c = a()
c()
你能描述一下 forEach
和 map
的区别吗
遍历,map
匿名函数的典型用例是什么
items.forEach((item) => {})
你怎么组织你的代码?(模块化, 经典继承)
宿主对象和原生对象
有一个函数 function Person () {};
那 var person = Person()
和 var person = new Person()
有什么区别
call
和 apply
的区别
传参不一样,apply传数组
解释一下 Function.prototype.bind
什么场景下用 document.write()
功能检测,功能推断和使用UA字符串有什么区别?
Ajax 的实现, 越详细越好
使用Ajax有什么优点和缺点?
JSONP 原理, (以及他为什么不是 Ajax)
用过 js 模板吗,都用过什么库
解释一下作用域提升
解释一下事件冒泡
解释一下 attribute 和 property
为什么扩展内置 JavaScript 对象不是一个好主意
load
事件和 DOMContentLoaded
事件之间的区别?
加载资源和解析成功
==
和 ===
的区别
强制转换和非强制转换
解释与JavaScript有关的同源策略
实现 duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5]
三元表达式是什么
statement ? execute : execute
"use strict"
是什么, 使用它有什么优缺点?
写一个 0 到 100 的迭代器,当是 3 的倍数时 输出 'fizz' , 5 的 倍数 输出 'fuzz', 既能被 3 也能被 5 整除 出书 'fizzbuzz'
为什么最好不要动全局环境
你为什么用 load
事件,这个事件有没有缺点,你还知道可以替代的方法吗,如果有为什么要用这个
解释一下单页面应用,怎样做 SEO
怎样实现一个 Promise
Promise 比起 callback 有什么优缺点
解释可变对象和不可变对象的区别
解释同步和异步函数之间的区别
事件循环是什么, 它与 调用堆栈 和 任务队列 有什么区别
function foo() {}
和 var foo = function() {}
有什么区别
let
, var
const
有什么区别
ES6 的 Class 和 ES5 的 构造函数 有什么区别
es5如何实现super关键字
JavaScript的节流和防抖
function debonce(fn, delay) {
return function (args){
setTimeout(function (){
fn.apply(args)
}, delay)
}
}
function thorrtle (fn){
}
event loop,microtask,task queue
macro-task == task
mirco-task == JOB
generator
function * a (i) {
yield i;
yield i + 10;
}
const b = a(1);
console.log(b.next().value);
console.log(b.next().value);