面试问题整理

面试问题整理

1 overflow 实现省略号

首先overflow的常用属性:visible/hidden/scroll/auto/inherit
white-space:pre/pre-wrap/nowrap/pre-line/inherit;

1
2
3
4
5
6
7
8
 <style type="text/css">
.ellipsis{
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
</style>
<p class="ellipsis" style="width: 100px;">111111111111111111111111111111111111111</p>

注意上面的代码最重要的是text-overflow:ellipsis;

2 如何水平垂直居中

1 flex
2

1
2
3
4
5
6
7
8
9
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

注意外部是relative
3 table布局
4 margin :0;注外部必须是块级元素

3 简述position每个项

1、static(静态定位):默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

2、relative(相对定位):生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常(原先本身)位置进行定位。可通过z-index进行层次分级。

无论父级存在不存在,无论有没有TRBL,均是以父级的左上角进行定位,但是父级的Padding属性会对其影响。  

3、absolute(绝对定位):生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。可通过z-index进行层次分级。

4、fixed(固定定位):生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。可通过z-index进行层次分级。

static与fixed的定位方式较好理解,在此不做分析。下面对应用的较多的relative和absolute进行分析:

4 事件执行模型

程序里面所有的任务,可以分成两类:同步任务(synchronous)和异步任务(asynchronous)。

同步任务是那些没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。

异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。只有引擎认为某个异步任务可以执行了(比如 Ajax 操作从服务器得到了结果),该任务(采用回调函数的形式)才会进入主线程执行。排在异步任务后面的代码,不用等待异步任务结束会马上运行,也就是说,异步任务不具有”堵塞“效应。

举例来说,Ajax 操作可以当作同步任务处理,也可以当作异步任务处理,由开发者决定。如果是同步任务,主线程就等着 Ajax 操作返回结果,再往下执行;如果是异步任务,主线程在发出 Ajax 请求以后,就直接往下执行,等到 Ajax 操作有了结果,主线程再执行对应的回调函数。

注意主线程和任务队列,

5 settimeout setinterval

https://m.jb51.net/article/99174.htm

5 a.bind(b).bind(c)为什么后面绑定的是c 还没完全解决

6 promise的实现理解 这个要搞

7 函数会返回一个默认的promise

8 位运算

http://cn.mikecrm.com/httqqWJ

位运算即在比特级别进行操作的技术。使用位运算技术可以带来更快的运行速度与更小的内存使用。
测试第 k 位:s & (1 << k);
设置第k位:s |= (1 << k);
关闭第k位:s &= ~(1 << k);
切换第k位:s ^= (1 << k);
乘以2的n方:s << n;
除以2的n方:s >> n;
交集:s & t;
并集:s | t;
减法:s & ~t;
提取最小非0位:s & (-s);
提取最小0位:~s & (s + 1);
交换值:x ^= y; y ^= x; x ^= y;

9 HTTP协议详解

http://blog.jobbole.com/108188/

10 基本类型和引用类型的区别

编程

二叉树序列化

http://web.jobbole.com/94195/

11 高并发处理

1、避免静态页面,与服务器交互,缓存
2、增加服务器资源

12 权限设计

13 跨域

1 CORS

14 null和undefined的区别

null和undefined意思相近,null主要表示值为空,undefined表示变量未定义。

1
2
3
4
typeof null == 'object'
typeof undefined == 'undefined'
null==undefined // true
null===undefined // false