一些知识点的总结

最近开始找工作了,有些常见的题目分享一下:

HTML

  1. 如何理解HTML语义化
第一种举例,段落用 p,边栏用 aside,主要内容用 main 标签
第二种
最开始是 PHP 后端写 HTML,不会 CSS,于是就用 table 来布局。table 使用展示表格的。严重违反了 HTML 语义化。
后来有了专门的写 CSS 的前端,他们会使用 DIV + CSS 布局,主要是用 float 和绝对定位布局。稍微符合了 HTML 语义化。
再后来,前端专业化,知道 HTML 的各个标签的用法,于是会使用恰当的标签来展示内容,而不是傻傻的全用 div,会尽量使用 h1、ul、p、main、header 等标签
  1. meta viewport 是做什么用的,怎么写?
死背: 
控制页面在移动端不要缩小显示。
侃侃而谈
一开始,所有页面都是给PC准备的,乔布斯推出 iPhone 3GS,页面是不适应手机屏幕的,所以乔布斯的工程师想了一个办法,默认把手机模拟成 980px,页面缩小。
后来,智能手机普及,这个功能在部分网站不需要了,所以我们就用 meta:vp 让手机不要缩小我的网页。
  1. canvas元素是干什么的?
    mdn canvas

CSS

  1. 说说盒模型
content-box: width == 内容区宽度
border-box: width == 内容区宽度 + padding 宽度(不管 IE *{box-sizing: border-box;})
  1. css reset 和 normalize.css的区别
reset 重置,之前的样式我不要,a{color: red;},抛弃默认样式
normalize 让所有浏览器的标签都跟标准规定的默认样式一致,各浏览器上的标签默认样式基本统一。
  1. 如何居中
水平居中:
内联:爸爸身上写 text-align:center;
块级:margin-left: auto; margin-right: auto;


 垂直居中: [七种方式实现垂直居中](https://jscode.me/t/topic/1936)
  1. 选择器优先级如何确定
选择器越具体,优先级越高。 #xxx 大于 .yyy
同样优先级,写在后面的覆盖前面的。
color: red !important; 优先级最高。
  1. BFC是什么?
*   overflow:hidden 清除浮动。(用 .clearfix 清除浮动,坚决不用 overflow:hidden 清除浮动)
*   overflow:hidden 取消父子 margin 合并。[http://jsbin.com/conulod/1/edit?html,css,js,output](http://jsbin.com/conulod/1/edit?html,css,js,output) (也可以用 padding-top: 1px;)

  1. 如何清除浮动?
1.   overflow: hidden;( 即生成一个BFC,不推荐)
2.  .clearfix 清除浮动写在爸爸身上
.clearfix:after {
  content: '';
  display: block;
  clear: both;
}
.clearfix{
    zoom: 1; /* IE 兼容 */
}

JS

  1. JS有哪些数据类型?
string number bool undefined null object symbol
object 包括了数组、函数、正则、日期等对象
一旦出现(数组、函数、正则、日期、NaN)直接0分
  1. Promise怎么使用?
then 
  $.ajax(...).then(成功函数, 失败函数)
链式调用
  $.ajax(...).then(成功函数, 失败函数).then(成功函数2, 失败函数2)
如何自己生成 Promise 对象
  function xxx(){
    return new Promise(function(resolve, reject){
        setTimeout(()=>{
            resolve() 或者 reject()
        },3000)
    })
  }
  xxx().then(...)
  1. Ajax手写一下?
//    Ajax
    function ajax (method,url,resolve) {
        let xhr = new XMLHttpRequest()
        xhr.open(method,url)
        xhr.onreadystatechange = function () {
            if(xhr.readyState === 4) {
                if(xhr.status === 200 || xhr.status === 304) {
                    resolve(xhr.response)
                }
            }
        }
        xhr.send()
    }
    let resolve = (str) => {
        console.log(str)
    }
    ajax('GET','/api/xxx',resolve)
  1. 闭包是什么?
//    闭包
    let n = 0
    function wrapper () {
        let n = 0
        function inner () {
            n += 1
            console.log('inner n: ' + n)
        }
        return inner
    }
    let res = wrapper()
    res()
    res()
    console.log('outer n: ' + n) // 作用是,提供一种间接访问局部变量的方法,而不是直接访问
  1. 这段代码的this是什么?
fn() 里面的 this 就是 window
fn() 是 strict mode,this 就是 undefined
a.b.c.fn() 里面的 this 就是 a.b.c
new F() 里面的 this 就是新生成的实例
() => console.log(this) 里面 this 跟外面的 this 的值一模一样

    let obj = {
        fn1: {
            fn2: {
                fn3() {
                    console.log(this)
                }
            }
        }
    }
    obj.fn1.fn2.fn3()//obj.fn1.fn2           obj.fn1.fn2.fn3.call(obj.fn1.fn2)
  1. 什么是立即执行函数?
立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行
目的是:造出一个函数作用域,防止污染全局变量。(可以采用es6)
  1. async/await 语法了解程度?
    function returnPromise () {
        return new Promise ((resolve,reject) => {
            setTimeout(()=>{
                resolve('asdfhkj')
            },2000)
        })
    }
//    returnPromise().then( (msg) => {  then写法
//        console.log(msg)
//        return msg
//    })
    async function result () { // async 写法  将异步写成同步
        let res = await returnPromise()
        console.log(res)
    }
    result()
  1. 如何实现深拷贝?
1.  JSON.parse( JSON.stringify() )实现
var a = {...}
var b = JSON.parse( JSON.stringify(a) )
2. 递归
    var oldObj = {
        name: 'deejay',
        age: 20,
        friend: {
            name: 'dee',
            age: 20,
        }
    }
    function deepCopy (oldObj) {
        var newObj = {}; //创建一个地址不同的新对象
            for (var key in oldObj) { //遍历oldObj中的所有属性
                if (oldObj.hasOwnProperty(key)) {  // 针对自身拥有的定义的属性进行拷贝
                    if (typeof oldObj[key] === 'string' || typeof oldObj[key] === 'number' || typeof oldObj[key] === 'boolean'
                            || oldObj[key] === null || oldObj[key] === undefined) { //完整的判断是否嵌套的条件
                        newObj[key] = oldObj[key];
                    }
                    else {  // 不是上面判断的条件,即为嵌套的属性,通过递归进行拷贝
                        newObj[key] = deepCopy(oldObj[key]);
                    }
                }
            }
        return newObj;
    }
    var newObj = deepCopy(oldObj);
    console.log(newObj);
    newObj.age++;
    console.log(oldObj.age);  //20  newobj的age增加,oldobj的age仍然不变
    newObj.friend.age++;
    console.log(oldObj.friend.age); // 20  newobj中的friend中的age增加,oldObj仍然不变,newObj和oldObj是相互独立的
//    不管有多少层嵌套的属性,都是相互独立的,即为深拷贝
  1. 如何实现数组去重?
1. Set
let newArr = Array.from(new Set(arr));
2. indexOf
function unique1 (arr) {
    // indexOf
    var newArr = []
    for (var i = 0; i < arr.length; i ++ ) {
        if (newArr.indexOf(arr[i]) == -1) {
            newArr.push(arr[i])
        }
    }
    return newArr
}
var newArr1 = unique1(arr)
console.log(newArr1)
  1. 如何使用正则实现String.trim()
function trim(string){
    return string.replace(/^\s+|\s+$/g, '')
}
  1. JS原型是什么?
  2. ES6 class了解么?
  3. JS如何实现继承?
  4. ==题目

DOM

  1. DOM事件模型是什么?
  2. 移动端touch事件了解一下?
  3. 事件委托是什么?有什么好处?

HTTP

  1. HTTP状态码知道哪些?
  2. 301和302的区别是什么?
  3. HTTP缓存怎么做?
  4. Cache-Control和Etag的区别?
  5. Cookie是什么?Session是什么?
  6. LocalStorage和Cookie的区别?
  7. GET和POIST的区别?
  8. 怎么跨域?JSONP是什么?CORS是什么?postMessage是什么?

Vue

  1. Vue的生命周期钩子函数?
  2. Vue如何实现组件通信?
  3. Vuex的作用是什么?
  4. VueRouter路由是什么?
  5. Vue的双向绑定怎么实现的?

算法

  1. 排序(冒泡,快排,选择,技术,插入,归并)
  2. 二分查找法
  3. 反转二叉树

安全方面

  1. XSS是什么?如何预防?
  2. 什么是CSRF攻击,如何预防?

webpack

  1. 转译出的文件过大怎么办?
  2. 转移速度慢怎么办?
  3. 写个webpack loader?

奇葩面试题

  1. [1,2,3].map(parseInt)
a.x = a = {}
var a = {n: 1}
var b = a
a.x = a = {n:2}

问a.x是多少?

  1. (a == 1 && a== 2 && a ==3 )可能为true么?
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 响应式布局的理解 响应式开发目的是一套代码可以在多种终端运行,适应不同屏幕的大小,其原理是运用媒体查询,在不同屏幕...
    懒猫_6500阅读 777评论 0 0
  • 最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容...
    忘川慕白阅读 5,905评论 7 113
  • 2015年的雨水下的断断续续、没日没夜,整个县城也笼罩在阴沉的夜色中,我坐在街角的露天咖啡厅,仰望,一头雾水...
    朱颜改阅读 296评论 0 2
  • 同步:轮询异步:通知阻塞:不做其他事情,等待非阻塞:继续做其他事情
    寻亦追忆阅读 109评论 0 0