前端第一次面试

第一次面试

第一次面试,而且是电话面试,面得很惨,主要是自己基础太不牢固了,面试过程中手机也出现了一些问题给面试官的印象很不好o(╥﹏╥)o,下面是一些面试题:

js基本类型,引用类型有哪些,区别

  • 基本类型:null undefined string boolean number symbol
  • 引用类型:object array function等
  • 区别:
    • 基本类型是按值访问,可以操作保存在变量中的实际值;
    • 引用类型的值是保存在内存中的对象,js不能直接操作对象的内存空间。操作对象时,实际上操作对象的引用而不是实际的对象。因此,引用类型的值是按引用访问的。

内置对象有了解吗

  • 内置对象 :Math String Number Date Array Object等等
Math一般在什么情况用到
  • 使用Math完成计算功能,与js直接编写计算功能相比,Math对象提供的计算功能执行起来要快得多
Date 获取当前的时间,格式化日期(时间轴???)
  • var date = new Date();
    date.toLocalString();
String千位符分割
function fromat(num){
    var reg = / \d{1,3}(?=(\d{3})+$)/g;
    return (num+' ').replace(reg,'$&,');
}
/*
\d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾。

?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。

 $& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法

(num+ ' ')表示将数字转换为字符串

*/

var a = 1234567;
var b = 1234567.1234;

//javaScript原生方法
 console.log(a.toLocaleString());
 console.log(b.toLocaleString());//保留三位小数
倒置字符串

var reverse = function( str ){
   var stack = [];//生成一个栈
   for(var len = str.length,i=len;i>=0;i-- ){
    stack.push(str[i]);
}
return stack.join('');
};
var reverse = function( str ){
  var newStr = '', i = str.length;
   for(; i >= 0; i--) {
        newStr += str.charAt(i);
   }
   return newStr;
};

reverse('abcde')
var reverse = function( str ){
return str.split('').reverse().join('');
};
九九乘法表
 function f1(num){ 
    var str = '';
    for(var i=1;i<= num; i++){ 
      for(var j=1;j<=i;j++){ 
         document.write(`${i}*${j}=${i*j} `); 
      } 
      // 换行
      document.write('<br>');
    } 
  }
f1(9);
Ajax请求过程
//创建XMLHttpRequest对象
var xhr = '';
if(XMLHttpRequest){
  xhr = new XMLHttpRequest();
}else if{
  xhr = activeXobjec();
}
//准备发送,
//参数(method,url,async)
xhr.open('get','xxx.php?params',true);//参数 encodeURI()
//xhr.open('post','xxx.php',true); post方法
//执行发送
xhr.send(null);
//xhr.setRequestHeader('content-Type','application/x-www-form-urlencoded');//post
//xhr.send(params);//post
//添加回调函数
 xhr.onreadystatechange = function(){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    //if((xhr.status>=200 && xhr.status<300) || xhr.status === 304){ 
     alert(xhr.responseText);
    }
     }
  }
var let const的区别
  • var在函数作用域,存在变量声明提升,

  • let在块级作用域, 不存在变量声明提升,不可以重复命名

  • const 定义常量,不存在变量声明提升,不可以重复命名

== 和===的区别,平常用哪一种,为什么
  • " === " 叫做严格运算符," == "叫做相等运算符。

  • " == " 表示只要值相等即可为真,而" === "则要求不仅值相等,而且也要求类型相同。

http请求报400是什么原因
  • Bad Request

  • 在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;

原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致 或 前端提交的参数跟后台需要的参数个数不一致,导致无法封装;
2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

http请求报405错误的原因
  • method not allowed方法
  • 如果一个 Web 服务器是 ’ 只读 ’ (客户端不能修改 Web 服务器上的网址资源) ,那么它可以被设置为不允许 PUT 和 DELETE 方法。
    同样,如果没有用户输入(所有的网页都是静态的) , 那么 POST 方法可设置为不允许。
    所以, 405 错误可能会因 Web 服务器没有被设置为从客户端接受输入数据而出现。
    另外, 如果客户端对请求中指明的具体网址资源没有足够的权力, 该错误也会出现。
    https://blog.csdn.net/qq_35804654/article/details/77272304
git远程提交代码
本地提交
 git init
 git add.
 git cmmmit -m '注释'
 git remote add origin git
远程提交
 git remote add origin gitgit@xx.xx.xx.xx:repos/xxx/xxx/xxx.git
 git push -u origin 分支名(master)
作用域
  • 执行环境:定义了变量或函数有权访问的其他数据,每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
    某个执行环境中所有的代码执行完毕后,该环境被销毁,保存在其中的变量和函数的定义也随之销毁。全局执行环境(window对象)直到应用程序退出(关闭网页或浏览器)才会被销毁。
  • 每个函数都有自己的执行环境,局部执行环境
  • js没有块级作用域
if else 里面定义的变量能不能被外部使用
  • 因为js没有块级作用域,if语句的变量声明会将变量添加到当前的执行环境;for语句创建的变量i即使在for循环执行结束后,也依旧会存在循环外部的执行环境中。
if (true) {
  var color ='blue';
}
alert(color);//blue

for(var i =0;i<10;i++){
  console.log(i);
}
alert(i);//10

对vue的理解
  • vue.js是一套构建用户界面的渐进式框架,
    vue只关心视图层,采用自底向上增量开发的设计,
    Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

其他面试题

vue实现双向绑定的原理
  • vue.js 采用数据劫持结合发布者-订阅者模式的方式,
    通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
  • 首先我们为每个vue属性用Object.defineProperty()实现数据劫持,为每个属性分配一个订阅者集合的管理数组dep;然后在编译的时候在该属性的数组dep中添加订阅者,v-model、{{}}、v-bind会添加一个订阅者,只要用到该属性的指令理论上都会,接着为input会添加监听事件,修改值就会为该属性赋值,触发该属性的set方法,在set方法内通知订阅者数组dep,订阅者数组循环调用各订阅者的update方法更新视图。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值