小米前端二面面经

zmj97      2022-02-16     399

关键词:


title: 小米前端二面面经
toc: true
date: 2018-10-20 13:04:04
categories:

  • Web

tags:

  • JavaScript
  • HTTP
  • TCP
  • UDP
  • Cookie

正好都是不会的。。。所以完整地记录一下。

简单来说就是JS和网络掌握地并不是很全面。

JavaScript严格模式

ES5中新增use strict

不允许使用未声明的变量:

"use strict";
x = 3.14;                // 报错 (x 未定义)

"use strict";
// 	对象也是一个变量。
x = {p1:10, p2:20};      // 报错 (x 未定义)

不允许删除变量或对象:

"use strict";
var x = 3.14;
delete x;                // 报错

不允许删除函数:

"use strict";
function x(p1, p2) {}; 
delete x;                // 报错 

不允许变量重名:

"use strict";
function x(p1, p1) {};   // 报错

不允许使用八进制:

"use strict";
var x = 010;             // 报错

不允许使用转义字符:

"use strict";
var x = \010;            // 报错

不允许对只读属性赋值:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // 报错

不允许对一个使用getter方法读取的属性进行赋值:

"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // 报错

不允许删除一个不允许删除的属性:

"use strict";
delete Object.prototype; // 报错

变量名不能使用 "eval" 字符串:

"use strict";
var eval = 3.14;         // 报错

变量名不能使用 "arguments" 字符串:

"use strict";
var arguments = 3.14;    // 报错

不允许使用以下这种语句:

"use strict";
with (Math){x = cos(2)}; // 报错

由于一些安全原因,在作用域 eval() 创建的变量不能被调用:

"use strict";
eval ("var x = 2");
alert (x);               // 报错

禁止this关键字指向全局对象:

function f(){
    return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false

function f(){ 
    "use strict";
    return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

function f(){
    "use strict";
    this.a = 1;
};
f();// 报错,this未定义

作用域、上下文

scope指的是 函数被调用的时候, 各个变量的作用区域:

  • 全局作用域
  • 局部作用域

content指的是 函数被调用的时候, 查看this指向哪个object, 那么那个object 就是当前的 "上下文"。

JavaScript中this指向问题(以及不同模式下)

  1. 元素绑定事件,方法中的this是当前操作的元素
  2. 方法名前有点则点前面是谁this就是谁,没有点则this是window(严格模式下是undefined)
  3. 构造函数执行,方法体中的this是当前类的一个实例
  4. 匿名函数具有全局性,因此this对象通常指向window

第二条也可以理解为:

  • 方法调用中谁调用this指向谁
  • 全局作用域或者普通函数中this指向全局对象window(严格模式下不能指向window所以是undefined)

TCP和UDP的区别

参考链接

TCP(Transmission Control Protocol):传输控制协议

UDP(User Datagram Protocol):用户数据报协议

主要从连接性(Connectivity)、可靠性(Reliability)、有序性(Ordering)、有界性(Boundary)、拥塞控制(Congestion or Flow control)、传输速度(Speed)、量级(Heavy/Light weight)、头部大小(Header size)等8个方面来讲:

  1. TCP是面向连接(Connection oriented)的协议,UDP是无连接(Connection less)协议;

    TCP用三次握手建立连接:1) Client向server发送SYN;2) Server接收到SYN,回复Client一个SYN-ACK;3) Client接收到SYN_ACK,回复Server一个ACK。到此,连接建成。

    UDP发送数据前不需要建立连接。

  2. TCP可靠,UDP不可靠;

    TCP丢包会自动重传,UDP不会。

  3. TCP有序,UDP无序;

    消息在传输过程中可能会乱序,后发送的消息可能会先到达,TCP会对其进行重排序,UDP不会。

  4. TCP无界,UDP有界;

    TCP通过字节流传输,UDP中每一个包都是单独的。

    有界与无界之分是根据接收报文来划分的,对于TCP协议,客户端连续发送数据,只要服务端的这个函数的缓冲区足够大,会一次性接收过来,即客户端是分好几次发过来,是有边界的,而服务端却一次性接收过来,所以证明是无边界的;

    而对于UDP协议,客户端连续发送数据,即使服务端的这个函数的缓冲区足够大,也只会一次一次的接收,发送多少次接收多少次,即客户端分几次发送过来,服务端就必须按几次接收,从而证明,这种UDP的通讯模式是有边界的。

  5. TCP有流量控制(拥塞控制),UDP没有;

    主要靠三次握手实现。以及慢开始、拥塞避免、快重传、快恢复

  6. TCP传输慢,UDP传输快;

    因为TCP需要建立连接、保证可靠性和有序性,所以比较耗时。这就是为什么视频流、广播电视、在线多媒体游戏等选择使用UDP。

  7. TCP是重量级的,UDP是轻量级的;

    TCP要建立连接、保证可靠性和有序性,就会传输更多的信息,如TCP的包头比较大。TCP首部开销20字节;UDP的首部开销小,只有8个字节

  8. TCP对系统资源要求较多,UDP对系统资源要求较少

  9. 应用场合不同:

    TCP一般应用在对可靠性要求比较高的场合,例如http,ftp等等

    而UDP一般应用在对实时性要求较高场合,例如视频直播,大文件传输等等

小结:

TCP是面向连接的、可靠的、有序的、速度慢的协议;UDP是无连接的、不可靠的、无序的、速度快的协议。

TCP开销比UDP大,TCP头部需要20字节,UDP头部只要8个字节。

TCP无界有拥塞控制,UDP有界无拥塞控制。

补充:

基于TCP的协议有:HTTP/HTTPS,Telnet,FTP,SMTP。

基于UDP的协议有:DHCP,DNS,SNMP,TFTP,BOOTP,IGMP,RIP。

Cookie是否可以跨域

只可以跨二级域名进行访问

https://blog.csdn.net/u012572955/article/details/61198654

https://www.cnblogs.com/waters/articles/2869855.html

需要认证、跨域时、GATEWAY等HTTP状态码

401 Unauthorized —— 请求要求用户的身份认证

403 Forbidden —— 服务器理解请求客户端的请求,但是拒绝执行此请求

502 Bad GateWay —— 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求

闭包的优缺点

闭包的作用:保存、保护

第一个就是可以读取自身函数外部的变量(沿着作用域链寻找)
第二个就是让这些外部变量始终保存在内存中

优点

  1. 保护函数内的变量安全,加强了封装性
  2. 在内存中维持一个变量(用的太多就变成了缺点,占内存)

缺点:

  1. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

  2. 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

2023秋招——快手数据研发一二面面经(代码片段)

🌼今天来总结一下快手数据研发的一、二面,在面试中进步,在总结中成长!对往期内容感兴趣的小伙伴可以参考下面👇:链接:2022暑期实习字节跳动数据研发面试经历-基础数仓.链接:2022百度大数据开发... 查看详情

2023秋招——快手数据研发一二面面经(代码片段)

🌼今天来总结一下快手数据研发的一、二面,在面试中进步,在总结中成长!对往期内容感兴趣的小伙伴可以参考下面👇:链接:2022暑期实习字节跳动数据研发面试经历-基础数仓.链接:2022百度大数据开发... 查看详情

百度后端c++,一面二面+主管面面经(已拿offer)

...百度接触、学习领域包括搜广推等行业领先技术。一面、二面自我介绍一个url输入,到页面加载全过程,越详细越好&# 查看详情

京东后端开发实习一二面面经(已offer)

*号表示没答上一面(1h)1.聊一聊你在学校的实验班主要干什么2.拼写检查项目如何实现,一些细节(实现、部署)3.在华为的项目为什么要用mongodb,数据量的量级4.项目中redis的作用,token怎么用,... 查看详情

成都百度测试开发一二面面经

成都百度测试开发一二面面经一面:1、HashMap?Hash函数呢?2、ListSetMap的区别?3、有一个字符串,有大小写字母,对这个字符串进行排序?4、对一个数字数组,用快速排序?5、数据库:数据库用过什么?对数据库的优化了解吗... 查看详情

京东后端开发实习一二面面经(已offer)

...acos、zookeeper、dubbo、mq、shenyu,负载均衡策略有哪些6.前端的请求怎么到后端,访问域名怎么到服务器,DNS服务器是什么7.介绍jvm的内存结构,为什么要用元空间取代永久代,为什么永久代容易内存溢出8.介绍一... 查看详情

携程java面经一二hr面面经

文章目录一面二面hr面一面1、问了实习项目,承担什么职位?有什么困难?2、为什么选用这个技术?3、聊了下Nacos的源码,主要说了服务端注册和客户端注册的源码4、项目怎么解决Redis和MySQL数据库不一致问... 查看详情

2019秋招面经大汇总-运营

...研发中心市场运营岗面经https://www.nowcoder.com/discuss/345523【小米】小米电商商城运营(社招)面试https://www.nowcoder.com/discuss/341804【跟谁学】跟谁学用户运营实习生面经https://www.nowcoder.com/discuss/341311【百度】回馈社会,某度运营岗笔... 查看详情

2023秋招——快手数据研发一二面面经(代码片段)

🌼今天来总结一下快手数据研发的一、二面,在面试中进步,在总结中成长!对往期内容感兴趣的小伙伴可以参考下面👇:链接:2022暑期实习字节跳动数据研发面试经历-基础数仓.链接:2022百度大数据开发... 查看详情

2023秋招——快手数据研发一二面面经(代码片段)

🌼今天来总结一下快手数据研发的一、二面,在面试中进步,在总结中成长!对往期内容感兴趣的小伙伴可以参考下面👇:链接:2022暑期实习字节跳动数据研发面试经历-基础数仓.链接:2022百度大数据开发... 查看详情

2023秋招面经4399前端二面-hr面(20min)

(无自我介绍)你现在在哪?(家、学校还是公司)你这个实习什么时候会结束?你现在这个实习有转正的机会吗?说一下你在实习过程中遇到的什么难题,怎么攻克的?有没有借助他人帮助&#x... 查看详情

字节c++后端实习生一二三面面经

字节因为一二面是一起面的,可能具体那些问题是哪一面记不太清了一面先问项目数据库数据库的范式,第一范式,第二范式,第三范式,BC范式tcp和udp的区别三次握手,4次挥手为啥要等待2mslhttps的加密原... 查看详情

压抑了三个月的我终于可以放声呐喊了!阿里是真的难进,android三面面经+面试题(代码片段)

...网易。腾讯百度都没有收到面试,知乎Skype面试,二面被拒。阿里总共面了四轮,九月 查看详情

珠海金山wps面经(一面+二面)

秋招内推投递的,半个多月后收到一面邮件。一面电面:1.自我介绍2.hashmap了解吗?从原理、容量、loadFactor到1.8红黑树优化,resize优化讲了一通。3.红黑树最差复杂度多少logn4.TCP了解吗基于不可靠的ip协议,实现可靠的传输。然... 查看详情

dropbox电面面经

他家电面有2轮,等待onsite。。。电面1:国人MM面的。这点感觉非常难得。统计近期5分钟的点击量,实现hit和getHit两个函数。这题是他家高频题,我用deque实现的,hit的均摊时间是O(1)。认为应该差点儿相同最优了吧。后来要求写个... 查看详情

2015腾讯校招笔试,二面经(菜鸟的流水账)

注:原文首发于:https://www.zybuluo.com/cfanr/note/18732前言:自从阿里笔试都没通过,就有点操心校招连笔试都过不了。而能通过腾讯的笔试,当然是一个很不错的机会。一定要好好把握,可惜还是错过了……唉,自从被鹅厂抛弃后,... 查看详情

2021年秋招小米android面经-已获offer

...”。本人毕业三年,三年Android开发。今年7月面试了小米,半个月拿到offer,记录一下整个面试过程,需要的可以看一下。小米面试分享:一面(9.560min)事件分发自定义view给了个布局问你的实现方式有... 查看详情

2023秋招面经4399前端二面-hr面(20min)

(无自我介绍)你现在在哪?(家、学校还是公司)你这个实习什么时候会结束?你现在这个实习有转正的机会吗?说一下你在实习过程中遇到的什么难题,怎么攻克的?有没有借助他人帮助&#x... 查看详情