yxfanxiao / yxfanxiao.github.io

My Blog Space
3 stars 0 forks source link

面试知识点 #11

Open yxfanxiao opened 8 years ago

yxfanxiao commented 8 years ago

一些问题

JS的prototype

见我的这篇博客

JS中的this

见我的这篇博客

前车之鉴

sap

Node中遇到的最大的问题?

  1. callback hell,用ES标准的Promise,ES7的async、await来解决,还有一些其他库如co、bluebird等。
  2. 由于js单线程的特性,node的异步非阻塞IO非常适合作为Web服务器。但是如果进行一些复杂的运算,会阻塞主线程,从而导致其他请求必须等待运算完成才能得到响应。

闭包的作用?

  1. 隔离作用域;
  2. 模拟私有属性;(暴露接口)
  3. 缓存变量值;(for循环,setTimeout的那个例子)
  4. 保持引用,为函数续命(生命周期)。

对React的理解

  • React只是View层,提供单向绑定的功能。Facebook的Flux架构倡导的是单向数据流,每一个动作会使数据从一个状态到另一个状态,从而触发页面的刷新;
  • React的Virtual DOM,O(n)的复杂度,性能优秀;
  • 配合React-Router,非常适合开发SPA。

前端组件化、模块化的理解

  • 模块化 主要是js模块化。ES6 Modules,import、export。按功能把js分成很多个文件(模块)。主要解决的是依赖关系,需要用到的时候就引用。(其他模块化方案有浏览器端的AMD、CMD,Node的CommonJS)
  • 组件化 比如一个轮播图组件、Footer组件。可以复用的组件。我的感觉是,模块化是组件化的前提。

React的组件和UI5的组件有什么差别?

  1. UI5有自己的组件库?而React全是自定义的。
  2. UI5的组件用的是metadata的property来单向绑定,而React用的是state。React自动render重新渲染,UI5自动调用property的set方法。

高并发情况怎么处理?

分为前后端2部分。

姓名,学校,兴趣爱好,做过什么项目,实习经历,以后的规划?

一二面:技术(重基础,原生js)

什么是闭包?

    闭包是指在JavaScript中,内部函数总是可以访问其所在的外部函数中声明的变量,即使在其外部函数已被返回(寿命终结)之后。

继承怎么写?

见我的这篇博客

实现ajax

  1. ajax的概念和原理
每刷新一次页面,浏览器就会向服务器发送请求,服务器返回一个HTML文件,浏览器在渲染页面的时候,不断的发出请求,比如js,css,图片等,直到渲染完毕。
有时候我们只需要改变网页中一部分的信息,页面完全刷新带来的开销太大(页面大部分是相同的,服务器会承受更多的请求,客户端也会有更多的下载、等待、渲染时间),而借助AJAX,可以只发送页面需要改动部分的请求,然后用js完成交互,页面不需要刷新。
  1. 实现
    var xmlHttpRequest = new XMLHttpRequest();
    var url = "https://api.github.com/users/octocat/gists",
        method = "GET";
    xmlHttpRequest.onreadystatechange = function() {
        if (xmlHttpRequest.readyState === XMLHttpRequest.DONE && xmlHttpRequest.status === 200) {
            // data: xmlHttpRequest.responseText
        }
    }
    xmlHttpRequest.send();
  1. jQuery ajax
    $.ajax({
        type: "GET",
        url: "https://api.github.com/users/octocat/gists"
    }).done(data => {})
    .fail(err => {})
    .always(() => {})

实现事件

一个简易版的:

function click(func) {
    if (typeof(func) === "function") {
        this.onclick = func
    }
}
$("#btn").click(() => {
})
function $(key) {
    var obj = document.querySelector(key)
    obj.click = click
    return obj
}

两边宽度固定,中间自适应布局

  • 双飞翼 把三栏布局看作一只大鸟,左右看作翅膀
<style>
    .a {
        background-color: #999;
        width: 200px;
        height: 300px;
        margin-left: -100%;
        float: left;
    }
    .b {
        width: 100%;
        float: left;
    }
    .bb {
        margin: 0 100px 0 200px;
        height: 400px;
        background-color: #666;
    }
    .c {
        float: left;
        background-color: #333;
        width: 100px;
        height: 100px;
        margin-left: -100px;
    }
</style>
<body>
    <div class="b">
        <div class="bb">b</div>
    </div>
    <div class="a">a</div>
    <div class="c">c</div>
</body>
<style>
body {
    padding: 0 200px 0 100px;
}
.b {
    float: left;
    background-color: #333;
    width: 100%;
    height: 600px;
    position: relative;

}
.a {
    float: left;
    width: 100px;
    height: 300px;
    background-color: #666;
    margin-left: -100%;
    position: relative;
    left: -100px;
}
.c {
    float: left;
    width: 200px;
    height: 500px;
    background-color: #999;
    margin-left: -200px;
    position: relative;
    left: 200px;
}
</style>
<body>
<div class="b">b
</div>
<div class="a">a</div>
<div class="c">c</div>
</body>

自己项目相关

在项目中学到了什么

团队有哪些缺点,优点

三面:hr面

个人目标

规划