部分内容为网上搜索总结,并非自己的,感谢各位
- 水平垂直居中的方法(我只回答出了盒子模型的三种情况,当时脑子空白没想到要分类型走,所以建议思路要清晰,先大体分类,然后每个类别几种方法)
(1)对于单行文本:text-align+line-height
text-align:center;
line-height:200px
(2)text-align+vertical-align,父元素设置为table-cell,子元素设置为inline-block,
.parent{
display:table-cell;
text-align:center;
vertical-align:middle;}
.child{
display:inline-block;}
(3) img图像为子元素,父元素用行高line-height代替高度,字体大小font-size为0,子元素设置vertacal-align:middle
.parent{
text-align:center;
font-size:0;
line-height:200px;}
.child{
vertical-align:middle}
(4)margin+vertical-align
.parent{
display:table-cell;
vertical-align:middle;}
.child{
display:table;
margin:0 auto;}
(5) 绝对定位和模型和margin:0 auto
.parent{
position:relative;}
.child{
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
margin:0 auto;
width:100px;
height:200px;}
(6)子元素宽高已知,可以用margin top/left=-50%的宽高
.parent{
position:relative;}
.child{
position:absolute;
width:100px;
height:200px;
top:50%;
left:50%;
margin:-100px 0 0 -50px;}
(7)子元素宽高未知,可以用transform属性
.parent{
position:relative;}
.child{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);]
(8)使用flex布局
.parent{
display:flex;
justify-content:center;//主轴对齐
align-items:center;//侧轴对齐}
- 跨域有哪些方法
我回答的是jsonp,document.domain,iframe,window.name这些,然而,面试官小哥说那你解释一下window.name 怎么实现的,gg。看来不能光看题,要深入挖掘。所以搜了一下网上的资料,总结了一下(还是好多并不是很理解)
什么是跨域?当协议、子域名、主域名或者端口号有一个不一样,就是不同的域,它们之间要相互请求资源就要“跨域”。因为用ajax请求其他域名下的请求,会拒绝访问,基于安全考虑。ajax只能访问本地资源。
域名地址组成:http:// www . google : 8080 / script/jquery.js
http:// (协议号)
www (子域名)
google (主域名)
8080 (端口号)
script/jquery.js (请求的地址)
处理方法:
(1)JSONP
通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。
(2)修改document.domain跨子域+iframe
主域必须设置相同,
(3)window.name+iframe
在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。注意,window.name的值只能是字符串的形式,这个字符串的大小最大能允许2M左右甚至更大的一个容量,具体取决于不同的浏览器,但一般是够用了。
(4)window.postMessage
- http错误类型
当时就回答了4开头和5开头的代表什么,具体说不上来。从网上查找了一下,总结的比较好的。常见http错误代码大全
- 现在http的版本
http/0.9:只接受get请求
http/1.0:第一个在通信中制定的版本号,至今被广泛应用,特别是在代理服务器中。
http/1.1:当前版本
http/2.0:最新版本
- http有长度限制么?
(1)url长度限制:
在Http1.1协议中并没有提出针对URL的长度进行限制,但是Web服务器和浏览器对URI都有自己的长度限制。
浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)
IE : 2083
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000
(2)post数据长度限制
Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。
(3)Cookie的长度限制
每个cookie大概4kb,个数限制根据浏览器不同
IE :原先为20个,后来升级为50个
Firefox: 50个
Opera:30个
Chrome:180个
Safari:无限制
(4)localStorage:长度限制大概5MB
6. 物理地址和逻辑地址(操作系统相关知识,并不会)
物理地址是内存中存储单元的绝对地址,逻辑地址(虚拟地址)是相对地址。
7. sql语句查询一个星期五的员工数据
select * from where 日期条件
8. 共20阶台阶,一次可以走一步或者两步,总共多少种办法
我想到可能要用递归方法,但是具体怎么算答案是多少还没得出。后面再补。
- ip知道不(百度百科)
IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
(多的不再写了,我觉得这些记着总记不住,知道大概然后再查找)
- http都有哪些请求,除了get和post还知道哪些
options:可使服务器传回该资源所支持的所有http请求方法,向web服务器发送options请求,可以测试服务器功能是否正常运作。
head:与get一样,向服务器发出指定资源的请求。只不过服务器不传回资源的本文部分。好处在于不必传输全部内容的情况下,九可以获取该资源的信息。
get:向指定资源发出显示请求。只能读取数据。
post:向指定资源提交数据。
put:向指定资源未知上传最新内容。
delete:请求服务器删除request-uri所标识的资源。
trace:回显服务器受到的请求,主要用于测试或诊断。
connect:通常用于ssl加密服务器的链接。
- 手撸代码:数组去重(其实简单思路有了,无奈手笨,写不出来,口头更难表述,基础太差,上网搜了一下,我大概就是那样想的gg)
/**
* 数组去重,题目
* @param {any[]} arr
* @return {any[]}
*
* @example
* [1,'1',1] -> [1,'1']
* [{a: 1}, {b: 1}, {a: 1}] -> [{a: 1}, {b: 1}]
* [[1], [2], [3], [1]] -> [[1], [2], [3]]
*/
(1)简单数组
function only(arr){
var arr1=[];
for(var i=0;i<array.length;i++){
if(arr1.indexOf(array[i]==-1){
arr1.push(arr[i]);
}
}
return arr1;
}
(2)用键值对,速度快,但占空间多
function only(arr){
var tup={},arr1=[],len=arr.length,val,type;
for(var i=0;ival=array[I];
type=typeof val;
if(!tup[val]){
tup[val]=[type];
arr1.push(val);
}else if(tup[val].indexOf(type)==-1){
tup[val].push(type);
arr1.push(val);
}
}
return arr1;
}
(3)排序去除相邻相同值
function only(arr){
arr.sort();
var arr1=[arr[0]];
for(var i=0;i<arr.length;i++){
if(arr[i]!==arr1[arr1.length-1]){
arr1.push(arr[i]);
}
}
return arr1;
}
(4)数组下标法
依旧利用indexOf,第I个元素的下标第一次出现的位置不是i,就可以不用加入新数组
function only(arr){
var arr1=[];
for(var I=0;i<arr.length;i++){
if(arr.indexOf(arr[i]==i){
arr1.push(arr[i]);
}
}
return arr1;
}
(5)优化遍历数组法
获取没重复的最右一个值放入新数组
function only(arr){
var arr1=[];
var index=[];
var len=arr.length;
for(var i=0;ifor(var j=i+1;jif(arr[i]===arr[j]){
i++;
j=i;
}
}
arr1.push(arr[i]);
index.push(i);
}
return arr1;
}