81、如何实现浏览器内多个标签页之间的通信? (阿里)
- localStorage 在一个标签页调用localStorage.setItem(name,val)保存数据localStorage.removeItem(name)删除数据的时候会触发 'storage'事件。 在另外一个标签页监听document对象的storage事件,在事件event对象属性中获取信息
window.onstorage = (e) => {console.log(e)}
window.addEventListener('storage', (e) => console.log(e))
- websocket 多标签页面链接同一个服务器,当发送数据给服务器的时候,服务器作为转接将数据发送给其他标签页面。
- sharedWorker
82、线程,进程
- 线程是可以进行运算调度的最小单元,进程是拥有独立的内存单元
- 一个进程可以包含多个线程,不同进程间数据不能共享
- 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
83、href与src的区别
- href 标识超文本引用,用在 link 和 a 等元素上,href 是引用和页面关联,是在当前元素和引用资源之间建立联系。
- src 表示引用资源,表示替换当前元素,用在img,script,iframe 上,src 是页面内容不可缺少的一部分。
84、断点续传原理
一个大文件,可以将其切割成适当的小文件,提交给后台,再由后台合并成大文件。
- 化整为零,可以防止文件上传中断而导致整个文件都需要重新上传的杯具问题。
- 分成小文件,可以利用ajax的多线程,同时提交多个小文件,从而提升上传速度。
85、怎么实现两个大整数的相乘,说下思路
一般涉及到大整数,都需要考虑通过数组或者字符串来模拟算术运算。我们通过数组来表示两个数字a、b(这里从左往右需要从个位数到最高位),这里的相乘只需要理解一点:a的每一位a[i]乘以b的每一位b[j],我们可以先将其放在结果中的result[i+j]中。这是模拟运算的过程。剩下的只需要将result中每一位大于9的进行进位即可。
function dazhenghsuAdd(str1,str2){
str1=str1.split('').reverse();
str2=str2.split('').reverse();
let result=[];
for(let i=0;i<str1.length;i++){
for(let j=0;j<str2.length;j++){
result[i+j]=result[i+j]||0;//如果result[i+j]是undefined则将其变为0
result[i+j]+=parseInt(str1[i])*parseInt(str2[j]);
}
}
let temp;
for(let k=0;k<result.length;k++){
if(result[k]>9){
temp=Math.floor(result[k]/10);
result[k]=result[k]%10;
result[k+1]=result[k+1]||0;
result[k+1]+=temp;
}
}
return result.reverse().join('');
}
86、cookie与session
- 数据存放位置不同: cookie数据存放在客户的浏览器上,session数据放在服务器上。
- 安全程度不同: cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
- 性能使用程度不同: session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
- 数据存储大小不同: 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
87、undefined 和 null 区别
- 都是基本的数据类型
- 语义上:未定义,空对象
- boolean:false, false
- Number:NaN, 0
- typeof:undefined, object
88、eval
eval()是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用eval()运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个eval()被调用时的作用域,这也有可能导致一些不同方式的攻击。相似的Function就不容易被攻击。eval()通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。
89、iframe有那些缺点?
- 优点: 1)iframe能够把嵌入的网页原样展现出来; 2)跨域
- 缺点: 1)iframes阻塞页面加载,影响网页加载速度 2)嵌入其他页面、增加资源请求 3)爬虫无法解读页面,影响seo