用css2和css3分别写一下垂直居中和水平居中
css3新增了一些属性,像flex,这是css3中很重要的改变,所以除了flex以外的垂直水平居中的技巧都是属于css2的。
- css2的水平居中技巧 将元素display为行内元素,再text-align:center;即可 或者 将块级元素定义一个宽度,再margin: 0 auto;即可
- css3的水平居中技巧 将元素display设为flex,再通过justify-content: center; 实现居中。
- css2的垂直居中技巧 单行内容的垂直居中可以通过设置相同height值和line-height值来实现。 多行内容的垂直居中且高度可变可以通过设置上下相同的padding值来实现。 行级盒子:小图标和标题对齐设置vertical-align: middle。 绝对定位:top:50%; left:50%;的方法,需要已知块级的宽高
- css3的垂直居中技巧 将元素display设为flex,再通过align-items:center;来实现。
计算机网络的七层
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP和UDP的区别是什么
- TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)
- UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快
- TCP和UDP协议的一些应用例子:TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。
TCP和UDP属于计算机网络的哪一层
- 网络层协议:IP协议、ICMP协议、ARP协议、RARP协议
- 传输层协议:TCP协议、UDP协议
- 应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS
HTTPS
HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
状态码
- 2XX系列:代表请求已成功被服务器接收、理解、并接受。
- 200状态码:表示请求已成功,请求所希望的响应头或数据体将随此响应返回
- 201状态码:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。
- 3XX系列:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
- 301状态码:被请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302状态码:请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 304状态码:自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
- 4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
- 401状态码:请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
- 403状态码:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
- 404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。
- 5xx系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
- 500状态码:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
- 503状态码:由于临时的服务器维护或者过载,服务器当前无法处理请求。
闭包是什么
闭包就是能够读取其他函数内部变量的函数。闭包的用途:可以读取函数内部的变量,并且让这些变量的值始终保持在内存中。
NaN是什么,用typeof会输出什么
Not a Number,Number。
js的隐性转换和显性转换
- 隐性转换: 1 + '1' = '11', 1 - '1' = 0
- 显性转换: Number("24 cccc");//结果:NaN ParseInt("24 cccc");//结果:24
注:Number的显性转换比较严格,若无法强转则直接报错
- 1 + -'1' + 1 等于 0 ,'1'前面的负号把其数字化,变为-1,则后值为1
- 'A' - 'B' 等于 NaN
跨域问题如何解决
同源策略:浏览器安全策略,同协议、ip、端口的脚本才会执行。只要协议、域名、端口有任何一个不同,都被当作是不同的域,js跨域是指通过js在不同的域之间进行数据传输或通信。
- 通过jsonp跨域:jsonp在页面上引入不同域上的js脚本文件实现请求不同域上的数据 (1) 通过script标签引入一个js文件 (2) js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入
注:需要服务器端的页面进行相应的配合
- 通过修改document.domain来跨子域
- 使用window.name来进行跨域: window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。
babel是什么
可以实现将ES6编译为ES5代码。
用js实现判断一个变量是否为整数的函数
实现思路:先判断该变量是否为Number类型,以此来缩小范围,再判断该变量除以1后是否与原值全等,若全等则返回true,若不全等则返回false。
进程和线程是什么
- 线程是最小的执行单元,是操作系统能够进行运算调度的最小单位,而进程由至少一个线程组成。如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。
- 进程指计算机中已运行的程序。
死锁是什么
当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。
Left Join、Right Join、Inner Join 指的是什么
- Left Join关键字会从左表那里返回所有的行,即使在右表中没有匹配的行
- Right Join关键字会右表那里返回所有的行,即使在左表中没有匹配的行
- 在表中存在至少一个匹配时,Inner Join关键字返回行
js快速排序
function quickSort(arr) {
if(arr.length<=1) {
return arr;
}
var s = Math.floor(arr.length/2);
var temp = arr.splice(s,1);
var left=[];
var right=[];
for(var i=0;i<arr.length;i++) {
if(arr[i]<temp) {
left.push(arr[i]);
}
if(arr[i]>=temp) {
right.push(arr[i]);
}
}
return quickSort(left).concat(temp,quickSort(right));
}