第二篇主要记录面试题和自己准备的知识点。不区分公司。
“==”判断规则:先把两侧的值转换为基本数据类型Number/Boolean/String,若基本数据类型不同,则转化为数字进行比较。先valueOf(),再toString()
[]==[] ; false 两个对象,类型相同不会转化,但是不同实例对象
[]==![] ;true []->”“->0 ; ![]->false->0
null==undefined;true null是对象,没有任何valueOf和toString方法,所以转化为undefined。undefined转化为数字是NaN
“abc1”==1 ;false 因为NaN!=1DOM 通常对应一个文本、标签、属性、Element,增删改查。特别注意 查:querySelector
innerHTML/outerHTML/innerText
水平/垂直居中的方法
水平:定宽:左右margin:auto
不定宽:display:inline;text-align:center /或者加入table标签,左右margin:0
垂直:设置父元素height与line-height一致
水平垂直居中:父元素:relative;子元素:absolute;top:50%;left:50%;transform:translate(-50%,-50%);new做了什么?
创建一个新对象->将构造函数作用域赋给对象->执行构造函数代码->返回新对象1xx:指示信息
2xx:成功
3xx:重定向
4xx:客户端
5xx:服务器H5语义化理解
- 渐进增强/优雅降级
- 内存泄漏:闭包/循环/控制台日志/setTimeout第一个参数为字符串
- 进程/线程区别
- box-sizing:
content-box:宽高分别应用到元素内容框,在宽高之外绘制元素内边距、外边距
border-box:从已设宽高减去内边距、边框才能得到内容宽高 - 浏览器内核:渲染引起/js引擎
- H5新样式/如何解决兼容性问题:兼容性IE6/7/8可以document.creatreElemen;或框架html5shim
- 手撕代码:获取url后参数并存为对象
- GET,POST:GET从指定资源请求数据;POST向指定资源传输数据
区别:GET能被缓存;POST不能。因此GET安全性较差,其所发送数据是url一部分。POST更安全,参数不会被保存在浏览器历史中 - MVC/MVVM/MVP模式
- 手撕代码:手写
- meta标签里有什么
- HTTP请求报文里有什么:请求行(请求方法,请求URL,HTTP协议版本);请求头(cookies,Referrer,缓存);请求体
- 手撕代码:写cookies
- csrf:跨站请求伪造,基于web隐式验证机制
防御手段:尽量post,少get;加验证码;Anti csrf Token
xss:跨站脚本攻击,在目标网站上插入非该网站脚本
防御手段:前端在显示服务器数据时,不仅标签内容需要转义,属性值也需要;后端接受数据时验证是否为攻击请求 - 为什么要清除浮动?bfc是什么? 答案在我的另一篇文章
- 输入网址到显示网页过程分析
- 页面优化/性能提升方法
- 后台认证机制:HTTP Basic Auth/Cookies Auth/Token Auth
- 基本算法时间/空间复杂度
- Ajax支持返回类型:xml,html,script,json,jsonp,text
- 常用浏览器存储技术:浏览器端:cookies,Webstorage,UserData,indexDB
服务器端:session - px,em,rem区别:px值固定,em不固定,会继承父元素字体大小,按值进行倍率运算。rem会从htm节点继承,rem-> root em
- cookies/localStorage/sessionStorage区别
- map()方法返回一个由原数组中每一个元素调用一个指定方法后返回值组成的新组。map在调用callback函数时会传递三个参数:当前正在遍历元素,元素索引,,原数组本身
- 对IE的hack: 星号:ie6,7 ; _:ie6;*+:ie7;\o:ie8;\9:ie6以上
eg:ie6:10px;ie8:30px –> .root{width:30px/o;_width:30px;} - 手撕代码:数组去重
- 算法不稳定:快选堆希;稳定:插冒归基
- 置换元素:浏览器根据元素标签,属性,来决定具体显示内容
不可置换元素:内容直接表现给客户端 - 盒子模型