前端问题汇总——第五篇

综述:平时看到别人的面试问题,做下总结

1.是否了解重构?具体需要注意哪些?

重构的原因:

  • 祖传代码随着时代的发展出现了越来越多的问题,比如可扩展性,可维护性,开发效率过低
  • 已经产生了新的可替代技术,可大幅度提高用户体验、产品性能、开发效率;

需要注意的点:

  • 一定要找到当前产品中的问题,包括代码中的,产品未来发展方向等
  • 了解各方的需求
  • 做好技术的选型
  • 要资深工程师做架构设计
  • 针对未来可能出现的功能,全面考虑可扩展性
  • 代码模块之间要解耦
  • 制定基本的开发规范,统一大家的思想,避免混乱

2.正则表达式是否系统学习过?贪婪匹配和非贪婪匹配(懒惰匹配)理论知识?

没有,平时需要的时候,去查找即可;

正则表达式的贪婪与非贪婪匹配:  

如:String str="abcaxc";  

    Patter p="ab.*c";

  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。

  非贪婪匹配(懒惰匹配):就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)

3.Sizzle是否有用过?sizzle.js是什么?

     Sizzle.js是jQuery的御用选择器引擎,是jQuery作者John Resig写的DOM选择器引擎,速度号称业界第一。另外,Sizzle是独立的一部分,不依赖任何库,如果你不想用jQuery,可 以只用Sizzle。所以单独拿出来特别对待。在Prototype1.7中,选择器也采用了Sizzle,不过版本有点老。

4.不好的jQuery书写方式有哪些?好的又有哪些?

5.cookies的操作和属性有哪些?怎样封装操作cookies的方法?

Cookie 是服务器保存在浏览器的一小段文本信息,每个 Cookie 的大小一般不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这段信息;

5.1操作方法介绍

  • 设置cookie存储:注意 设置cookie一次只能存储一条,cookie可以多次设置 key相同不会重新赋值而是会新建一条cookie
document.cookie = 'userName=fengkaicahng';
  • 读取cookie
var allCookies = document.cookie;
//一次读取所有cookie 字符串形式
//所以一般我们还要做一次转换
var cookiesArray=document.cookie.split(';');
 console.log(cookiesArray);

5.2属性介绍

  • value 必须一个键值对,用来指定cookie的值
document.cookie = 'userName=fengkaicahng';
  • expires 指定Cookie过期时间;格式采用Date.toUTCString()
 var day = new Date();
 day.setTime(day.getTime()+(1*24*60*60*1000));
 
//设置一天的有效期
//如果不设置; 默认时间是当前会话窗口关闭即失效
 
document.cookie = 'userName=fengkaicahng;expires="+day+"';
  • domain 指定发送Cookie的域名
 var day = new Date();
 day.setTime(day.getTime()+(1*24*60*60*1000));
//只有在该域名下才发送cookie,
//如果不设置; 默认是设置cookie时的域名
//以下配置会在fengkaichang.com 的所有子域名下生效
document.cookie = 'userName=fengkaicahng;expires='+day+';domain=fengkaichang.com;
  • path 指定Cookie的路径
 var day = new Date();
 day.setTime(day.getTime()+(1*24*60*60*1000));
 
//只有这个路径和发送到服务器的路径相同才发送cookie 可以直接配置/ 从根目录下匹配  这个匹配并不是绝对的,
//如果不设置; 默认是请求该cookie时的路径
//以下配置会在fengkaichang.com 的所有请求路径下生效
//注意 path生效的前提是domain匹配成功,否则都是扯淡
document.cookie = 'userName=fengkaicahng;expires='+day+';domain=fengkaichang.com;path=/'
  • secure 指定Cookie只能在加密协议HTTPS下发送到服务器
 var day = new Date();
 day.setTime(day.getTime()+(1*24*60*60*1000));
 
//这个属性的值是一个布尔值
//如果这个通信协议是HTTPS那么协议自动打开
//如果手动设置 一下配置不会在普通HTTP协议下发送
document.cookie = 'userName=fengkaicahng;expires='+day+';domain=fengkaichang.com;path=/;secure=true'

6.简述js封装?

js疯转就是尽量把复杂的,重复的功能模块化,把使用方式简单化,内部逻辑和使用解耦,通俗的说就是使用的时候只需要知道该传入什么参数和返回的值,其他的条件尽量不要使用人员进行设置,方便代码的统一管理和复用,提高开发效率;

js封装的方法:

  • 函数的方式,使用的时候,直接调用函数即可,简单的功能可以,复杂的功能不合适
function kk(a,b){
    //内部对a,b怎么处理就不需要关心了
}
  • 对象方式,ops系统大量使用,
function kk(a,b){
   this.x = a;
   this.y = b;
}
var k = new kk(1,2);//通过面向对象的方式
  • 闭包的方式,应用场景是?
function kk(a,b){
   var k = 1;
   return function tt(){
      k++;
   }
}
var u = kk(1,2);
u();//闭包实现累加
u();//闭包实现累加

7.js继承的两种形式是?

  • 原型链继承:将父类的实例作为子类的原型
  • 构造继承:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)
  • 实例继承
  • 拷贝继承
  • 组合继承
  • 寄生组合继承

8.css层叠是什么?

通过使用css中的position来设置元素的定位,改变z-index值来实现元素在不同层级的显示

9.四大主流IDE的使用情况,各自的优势是什么?

  • Visual   Studio  Code:插件相对比较多
  • webstorm:付费,功能挺全,占用内存较大,内置ES6,sass,less转译工具,代码ugify(丑化工具)
  • Hbuilder:可以打包Hybrid APP,内置nativeBrige.js中间件,前端单独开发混合式APP时,非常有用,提示较全面
  • Sublime text :最为轻量,也可以扩展,短暂时间使用可选

10.cookie和seesion之间的区别?在什么时候使用?

cookie用于客户端和服务端交互,信息传递,session则是服务端的一个存储用户信息的载体,比如用于记录用户的登录状态,每次请求一次就刷新一下用户的session值,当session值在15分钟都没有变时,提醒用户重新登录;

11.什么是闭包?闭包有什么作用?使用的好处和坏处是?可以使用闭包实现函数add(1)(2)=3 吗?alibaba校招面试题

function add(a){
   return function(b){
      return a+b;
  }
}
console.log(add(1)(2));  //3

12.HTTP请求报文与响应报文格式,十分重要的基础知识

请求报文包含三部分:

a、请求行:包含请求方法、URI、HTTP版本信息

b、请求首部字段

c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语

b、响应首部字段

c、响应内容实体

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值