十六、常见面试题
1.post、get的区别
get和post都是http协议中的两种请求方式 get一般用于获取数据,post一般用于传输数据
get 获取一个用户,用户列表…
post 新建资源注册,登录,上传头像
(1)GET比POST不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息,get方式比post方式更快
(2)get是传输数据大小有限制(最大8k),post没有
http://127.0.0.1:8080/search?keyword=笔记本
上传附件/上传头像/上传视频 post传递
(3)GET在浏览器回退时是无害的(不会再向服务器发请求),而POST会再次提交请求
(4)GET请求只能进行url编码(urlencode),而POST支持多种编码方式。
传参的过程编码用户名,密码
app.use(express.urlencoded())
{a:1, b:1}
2.var,let,const有什么区别
var是ES5提出的,let和const是ES6提出的。
const声明的是常量,必须赋值
1)一旦声明必须赋值
2)声明后不能再修改
3)如果声明的是引用类型数据,可以修改其属性
let和var声明的是变量,声明之后可以更改,声明时可以不赋值
var允许重复声明变量,后一个变量会覆盖前一个变量。let和const在同一作用域不允许重复声明变量,会报错。
var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。
let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。
var不存在块级作用域。let和const存在块级作用域。
ES5中作用域有:全局作用域、函数作用域。没有块作用域的概念。
ES6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。
3.http状态码
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
302 -资源(网页等)临时转移到其它URL
304 - 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
4.编写函数,获取斐波那契数列中任意一项的值
使用递归完成
第1,2项的值都是1,从第3项开始,每项的值是前两项相加的和
function f(n){
if(n==1 || n==2){
return 1
}else{
return f(n-1)+f(n-2)
}
}
console.log(f(4))
5.统计一个字符串中出现次数最多的字符是? 共出现多少次
答案:
var str = 'javascript';
var dict={};
var c="", max=1;
for(var i=0;i<str.length;i++){
var char=str[i];
if(dict[char]===undefined)
dict[char]=1;
else{
dict[char]+=1;
if(dict[char]>max){
max=dict[char];
c=char;
}
}
}
console.log(c,max);
6.以下代码输入的值
console.log(1);
setTimeout(function(){
console.log(2);
},10);
setTimeout(function(){
console.log(3);
},0);
console.log(4);
答案:1 4 3 2
7.请说出以下代码执行结果
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 0);
console.log(i);
}
执行过程
var i=0;
setTimeout(function() {
console.log(i);
}, 0);
console.log(i);//0
i=1;
setTimeout(function() {
console.log(i);
}, 0);
console.log(i);//1
i=2;
setTimeout(function() {
console.log(i);
}, 0);
console.log(i);//2
i=3
function() {
console.log(i);//3
}
function() {
console.log(i);//3
}
function() {
console.log(i);//3
}
答案:0 1 2 3 3 3
8.常用的git命令有哪些
本地仓库 <