前端基础知识与常见面试题(二)

本文详细介绍了前端开发中常见的面试题目,涵盖了HTTP方法GET与POST的区别、变量声明的区别(var、let、const)、HTTP状态码、斐波那契数列的递归实现、字符串字符统计、数组排序方法、Git常用命令、Express传参方式、JavaScript的null与undefined差异、数据库多表查询、CSS布局与动画、JSON理解、SEO优化、以及JavaScript的异步处理等知识点,旨在帮助开发者准备面试并深入理解前端开发的核心概念。
摘要由CSDN通过智能技术生成

十六、常见面试题
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命令有哪些
本地仓库 <

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值