1.linux中 vim有几种模式?如何进行这几种模式的切换
vim有三种模式:输入模式,命令模式,底行模式
1.输入模式
①输入模式进入命令模式:esc
②输入模式进入底行模式:esc进入命令模式后,使用:进入底行模式
2.命令模式
①命令模式进入输入模式:i,a,o,I,A,O
②命令模式进入底行模式:使用 :/ ?
3.底行模式
①底行模式进入命令模式:两次esc
②底行模式进入输入模式:先使用两次esc进入命令模式,再使用i,a,o,I,A,O进入输入模式
2.css3中的animation与transition表示什么意思?
1.animation设置动画属性,有八个属性分别是
animation-name动画名字
animation-duration动画持续时间
animation-iteration-count动画迭代次数
animation-delay动画延迟执行时间
animation-direction动画方向
animation-play-state暂停/恢复
animation-fill-mode填充模式
animation-timing-function动画的速度曲线
2.transition设置过渡属性,有四个属性分别是
transition-property过渡属性
transition-duration持续时间
transition-timing-function时间曲线
transition-delay过渡延迟
3.css中vertical-align规则有什么作用
vertical-align 属性设置一个元素的垂直对齐方式。
该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
属性值
值 | 描述 |
baseline | 默认。元素放置在父元素的基线上。 |
sub | 垂直对齐文本的下标。 |
super | 垂直对齐文本的上标 |
top | 把元素的顶端与行中最高元素的顶端对齐 |
text-top | 把元素的顶端与父元素字体的顶端对齐 |
middle | 把此元素放置在父元素的中部。 |
bottom | 使元素及其后代元素的底部与整行的底部对齐。 |
text-bottom | 把元素的底端与父元素字体的底端对齐。 |
length | 将元素升高或降低指定的高度,可以是负数。 |
% | 使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。 |
inherit | 规定应该从父元素继承 vertical-align 属性的值。 |
4.相对定位,绝对定位,固定定位,粘滞定位,静态定位有什么区别
1)相对定位 position:relative 不脱离文档流 相对于当前元素所在的位置进行移动
2)绝对定位 position:absolute 脱离文档流 没有定位祖先的相对于浏览器视口左上角定位;有定位祖先的相对于定位祖先进行定位
3)固定定位 position:fixed 脱离文档流 相对于浏览器视口定位
4)粘性定位 position:sticky 不脱离文档流 没有定位祖先的相对于浏览器视口左上角定位;有定位祖先的相对于定位祖先进行定位
5)静态定位 position:static 不脱离文档流
5.什么是响应式网页?如何实现一个响应式网页
响应式网页:集中创建页面的图片的布局和排版的大小,可以智能的根据用户的行为和设备环境进行相应的布局,即一个页面可兼容各种终端,无需编写不同版本。
1)如果是通过css原生代码,可以通过@media来进行媒体查询,当网页显示在不同的网页中加载执行不同的css代码
2)如果是通过框架,例如bootstrap,可以使用bootstrap提供的响应式框架完成页面布局。
6.linux中远程登录命令,远程文件传输命令,查看Java进程命令分别是什么?举例说明
1)远程登陆命令:ssh briup@39.103.220.191
2)远程文件传输命令:scp 文件路径 用户名@ip:路径
获取远程服务器的文件:scp 用户名@ip:路径 文件路径
3)查看Java进程命令:ps -ef | grep java
7.什么是块元素?块元素有哪些特点?
块元素在页面中以区域块的形式出现,常用于网页布局和网页结构的搭建。主要有<p>,<div>,<h1>-<h6>等等
1)块级独占一行
2)块级元素可以直接设置宽高
3)块级元素可以嵌套块级与行内元素
8.em与rem的区别?
1)em为相对长度单位,表示当前元素上的字体大小
2)rem为相对长度单位,表示根(html)元素上声明的字体大小
9.如何使用css绘制一个三角形
transparent 关键字表示一个完全透明的颜色,即该颜色看上去将是背景色。
<style>
#app {
width: 0;
height: 0;
border: 100px solid transparent;
border-top: 100px solid #666;
border-left: 100px solid yellow;
border-right: 100px solid pink;
border-bottom: 100px solid #999;
}
</style>
</head>
<body>
<div id="app">
</div>
</body>
10.简述flex布局
flex布局是一种当页面需要适应不同的屏幕大 小以及设备类型时确保元素拥有恰当的行为的布局方式。提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。
1.父元素设置display:flex;默认列布局
可以设置flex-direction布局方向;justify-content开始位置;flex-wrap自动换行
以上可以简写成flex-flow:row flex-start wrap;
2.等比例划分flex:1 2 200px;第一个元素是flex-grow拉伸比例,第二个元素是flex-shrink压缩比例,第三个元素是flex-basis最小宽度
3.在主轴上的对齐方式:justify-content:flex-start;默认在开始显示,还可以设置为center在主轴的中心显示,space-around填充空白自适应在主轴中心显示等等
在交叉轴上的对齐方式:align-items:stretch;默认拉伸,还可以设置为center 在交叉轴中心显示,baseline基线对齐等等
11.数组中哪些方法是在原值上进行的修改?哪些方法没有对原值进行修改?
1)修改的:push(),pop(),shift(),unshift(),splice(),sort(),reverse()
2)没有修改的:concat(),slice(),filter(),mao(),forEach()
12.请写出让元素垂直居中的多种布局方法
1)margin:0 auto;
2)浮动布局,float:left; margin-left=calc(50%-子元素的宽度/2);
3)定位布局,父相子绝,绝对定位top为50%,margin-top=-子元素的宽度/2;
父相子绝,绝对定位right,left为0,margin:auto
4)弹性布局:父元素设置display:flex,且align-items:center;
文本在盒子中垂直居中的方法
1)单行文本:①固定高度:line-height等于盒子height
(如果要水平居中text-align:center;)
②未知高度:设置上下的padding值一样
2)多行文本:①伸缩盒布局display:flex align-items:center
②定位布局,父相子绝,绝对定位top为50%,margin-top=-子元素的高度/2;
13.简述css3选择器的优先级机制?
1)权重优先级:id选择器>类名选择器>标签选择器 1000 100 10 1
2)代码顺序:采取就近原则
3)特权:!important
14.伪元素选择器::after有哪些常见用法?
1.清除浮动,给需要清除浮动的子元素的父元素设置
父元素::after{
content:"";
display:block;
clear:both;
}
2.::after 选中之后的不存在的节点,可配合content属性进行内容填充
h2::after {
content: "**";
color: tomato;
}
15.写出几个你熟悉的git命令?
git init
git add *
git commit -m “提交”
git remote add origin https://gitee.com/AdminRDC/web2103code.git
git push -u origin master
git clone
git pull
16.在js中如何判断一个数据类型?
基本数据类型:null,undefined,string,boolean,number
引用数据类型:Object,Function,Array等等
判断基本数据类型
1)typeof
typeof “hello”
2)isNaN判断参数是否“不是数值”
isNaN(NaN);
3)isFinite()函数可以判断参数是否在最大值和最小值之间,如果在,返回true
isFinite(9/0);
判断引用数据类型
1)typeof
typeof arr
2)instanceof
//小-->大 当前变量是某个构造函数对应的原型链上吗
arr instanceof Array
3)isPrototypeOf
//大-->小 当前变量是否是我的子孙后代吗?
Object.prototype.isPrototypeOf(obj)
4)isArray
Array.isArray(arr)
17.在js的面向对象中继承方式有哪几种,分别进行描述?
1)原型链继承
//将子构造函数的原型指向父类的实例
Dog.prototype=new Animal();
注意:console.log(dog);不打印Animal中的属性name,color等等
谨慎定义:要把给原型(Dog)添加方法放在继承后面
2)经典继承
//继承Animal
Animal.call(this,name,age);
缺点:不能继承父类原型中的方法
3)组合继承
原型链继承实现原型属性和方法的继承
经典继承实现实例属性的继承
Dog.prototype=new Animal();
Animal.call(this,name,age);
18.简述js函数的this指向问题?
谁调用指向谁
1)单独使用this,全局
浏览器中 window对象
node global对象
2)函数中使用this
在函数中,函数的所属者默认绑定到 this 上
3)事件中的 this
在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素
19.如何实现一个对象的深拷贝?
1)浅拷贝:对于字符串类型,浅拷贝是对值的复制,对于对象来说,浅拷贝是对象地址的复制,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会改变
2)深拷贝:深拷贝则是开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
JSON.parse()
let obj1 = {
name: "11",
age: "22"
}
let obj2 = JSON.parse(JSON.stringify(obj1));
obj2.name = "2222220"
console.log("obj1", obj1);// {name: "11", age: "22"}
console.log("obj2", obj2);// {name: "2222220", age: "22"}
20.什么是闭包?如何解决闭包带来的内存泄露问题?
闭包:函数内部包裹函数,作用域链得不到释放,造成内存消耗
解决了在一个函数内部也有权限访问另一个函数内部的变量
解决方法:①置空null
②立即执行函数,创建函数后就立即执行,只执行一次(function(){}){}
21.盒子模型种类及主要区别?
1)W3C盒子:
内容区的宽 width u
内容区的高 height u
盒子的宽width+paddingLeft+paddingRight+borderLeft+borderRight u
盒子的高height+paddingTop+paddingBottom+borderTop+borderBottom u
所占屏幕空间的宽 width+paddingLeft+paddingRight+borderLeft+borderRight +marginLeft+marginRight u
所占屏幕空间的高 height+paddingTop+paddingBottom+borderTop+borderBottom
+marginTop+marginBottom
2)边框盒子
内容区的宽width-paddingLeft-paddingRight-borderLeft-borderRight u
内容区的高height-paddingTop-paddingBottom-borderTop-borderBottom u
盒子的宽 width u
盒子的高 height u
所占屏幕空间的宽 width+marginLeft+marginRight u
所占屏幕空间的高 height+marginTop+marginBottom
22.简述http协议的报文格式
HTTP是超文本传输协议的缩写,它用于传送WWW方式的数据。HTTP协议采用了 请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议 版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务 器信息、实体元信息以及可能的实体内容。
(HTTP协议是超文本传输协议,服务器传输超文本到本地浏览器的传送协议。
HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议工作于客户端-服务端架构(C/S架构)之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。)
1)请求:客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
2)响应:一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
3)①GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接。
② POST提交:把提交的数据放置在是HTTP包的包体中。
23.用递归的方法实现1到100求和?
var result = 1;
for (var i = 1; i <= 100; i++) {
result += i;
}
console.log(result);
24.统计一个字符串中某个字符出现的次数,例如:输入hello,l 输出2
//方法1
function count(str, char) {
var res = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] == char) res++;
}
return res;
}
console.log(this.count("hello", "l"));
//方法2:正则表达式
function count(str, char) {
var p = new RegExp(char, "gm");
var res = str.match(p);
return res.length;
}
console.log(this.count("hello", "l"));
25.编写代码实现数组扁平化输出,例如:输入[[1,2,3,[4,5,6,[7,8]]],[9,10],[11,12,[13]],5] 输出为[1,2,3,4,5,6,7,8,9,10,11,12,13,5]
function mout(arr) {
//数组类型检测
if (!Array.isArray(arr)) return arr;
var brr = [];
for (var i in arr) {
var item = arr[i];
brr = brr.concat(mout(item));
}
return brr;
}
var arr = [
[1, 2, 3, [4, 5, 6, [7, 8]]],
[9, 10],
[11, 12, [13]], 5
];
console.log(mout(arr));
26.使用任意一种排序算法对数组进行排序,例如:输入[3,2,1,6,12,8,9] 输出:[1,2,3,6,8,9,12]
//冒泡排序
var arr = [3,2,1,6,12,8,9];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr)