0623面试题

Promise构造函数是同步执行还是异步执行,那么 then 方法呢?

Promise构造函数是同步执行的then方法是异步执行的

下面的输出结果是多少?

const promise = new Promise((resolve, reject) => {
    console.log(1);
    resolve();
    console.log(2);
})

promise.then(() => {
    console.log(3);
})

console.log(4);:
输出结果为1243 因为then是异步执行在执行顺序上3略慢于4

get和post的区别?

get和post都是传输方式

get相对不安全因为数据会显示在url中并且还有长度限制,

post相对安全并且数据量不受限制

谈谈你对ES6的理解?

ES6定义了块级作用域, 定义了let声明变量的方式且重复定义时报错, 可以将function变为箭头函数模式 引入了module模块的概念

async 和 await?

主要考察宏任务和微任务,搭配promise,询问一些输出的顺序

原理:async 和 await 用了同步的方式去做异步,async 定义的函数的返回值都是 promise,await 后面的函数会执行,然后就会跳出整个 async 函数来执行后面js栈的代码**

Http和Https的区别?

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

为什么JavaScript是单线程?

单线程:同一个时间只能做一件事

JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。

可以从DOM的层面来理解:

  • DOM会改变页面的结构就是渲染页面,但是js也会,js和DOM同时操作的话就是会矛盾了,所以它必须是单线程的只能保障同一个时间只能做一件事情,然后就不有冲突。

同步和异步任务

同步:前一个任务结束后在执行后一个任务,程序执行的顺序和任务的排列顺序是一致的。同步的做法例如:一边吃饭吃完饭才能睡觉

异步:在做一件事的时候,因为这个任务花费时间比较长,在做这件事的时候,还可以去做另一件事,比如一边吃饭一边听音乐

本质区别:这条流水线上的各个流程的执行顺序不同

同步任务指的是:主线程上的任务排队执行

异步任务指的是:不进入主线程,而是进入一个"任务队列"的任务,当主线程中的任务执行完,才会从任务队列中取出异步任务放入主线程执行

什么是内存泄漏,以及常见内存泄漏的原因,和排查的方法?

内存泄露是指:

内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。

造成内存泄漏的原因

1、单例造成的内存泄漏

由于单例的静态特性使得其生命周期和应用的生命周期一样长,如果一个对象已经不再需要使用了,而单例对象还持有该对象的引用,就会使得该对象不能被正常回收,从而导致了内存泄漏。
2、非静态内部类创建静态实例造成的内存泄漏
3、Handler造成的内存泄漏
4、线程造成的内存泄漏
5、资源未关闭造成的内存泄漏
对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,从而造成内存泄漏。
6、使用ListView时造成的内存泄漏
8、WebView造成的泄露

解决方案

平常养成良好的代码书写习惯,该销毁的对象要销毁比如destory啊 广播啊 ,涉及到要用到content上下文的优先考虑全局上线文对象。

HTTP method

一台服务器要与HTTP1.1兼容,只要为资源实现GET和HEAD方法即可。

GET是最常用的方法,通常用于请求服务器发送某个资源。

HEAD 与 GET 类似,但服务器在响应中值返回首部,不返回实体的主体部分。

PUT 让服务器用请求的主体部分来创建一个由所请求的 URL 命名的新文档,或者,如果那个 URL 已经存在的话,就用干这个主体替代它。

POST 起初是用来向服务器输入数据的。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到要去的地方。

TRACE 会在目的服务器端发起一个环回诊断,最后一站的服务器会弹回一个TRACE响应并在响应主体中携带它收到的原始请求报文。TRACE 方法主要用于诊断,用于验证请求是否如愿穿过了请求/响应链。

OPTIONS 方法请求 web 服务器告知其支持的各种功能。可以查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。

DELETE 请求服务器删除请求 URL 指定的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值