码迷,mamicode.com
首页 > 其他好文 > 详细

记一次腾讯霸面---前端

时间:2020-05-01 10:44:16      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:复杂   tps   数据交互   detail   转发   检查   link   意思   ram   

霸面的是前端实习生岗位,当时听同学说前端缺人,还特意设了一个霸面区,就去溜了个弯儿,毕竟不试试,怎么知道自己有多菜呢o( ̄︶ ̄)o
一面技术面,面试官关注的点一直在数据结构、算法、计算机网络这些点,关于框架也有问,但较少,而且直接问原理。下面是把面试官问的问题做个总结,以便以后查漏补缺

  1. 手写快排,讲原理
  2. 一道算法题,具体见下文
  3. http和https的区别,为什么https更安全
  4. IP协议和dns的关系,属于七层中第几层
  5. 写一个带#和?的url
  6. 读过vue源码么?vue双向绑定的原理是什么?用js如何实现
  7. 用的axios呀,axios和后台交互的原理是什么?除了axios还有什么和后台交互的方法

1.数据结构

数据结构中的排序一直是一个绕不过去的点,面试官的第一道题就是让用js写快排,然鹅,我并没有复习快排ε(┬┬﹏┬┬)3,写不出来之后面试官就让讲一下快排的原理。

快排原理:

王道上对快排的解释是:在待排序表L[1·····n]中任取一个元素pivot作为基准,通过一趟排序姜待排序表划分为独立的两部分L[1···k]和L[k+1···n],使得L[1···k]中所有元素小于pivot,L[k+1···n]中所有元素大于pivot,则pivot放在了其最终位置L(k)上,这个过程称作一趟快速排序。而后分别地柜的对两个子表重复上述过程,直至每部分内只有一个元素或空为止,即所有元素放在了其最终位置上。

算法实现:

var arr=[1,54,27,93,100,45,98]
function qsort(a,l,r){
  var x=a[l],i=l,j=r
  if(i>=j)
      return x
  while(i<j){
    while(i<j&&x<=a[j];j--);
      a[i]=a[j]
    while(i<j&&a[i]<=x;i++);
     a[j]=a[i]
  }
   a[i]=x
   qsort(a,l,i-1)
   qsort(a,i+1,r)
}
qsort(arr,0,6)
alert(arr)

这个代码运行不成功,待修改;
几种内排序的算法实现,时间复杂度都需要掌握

2.算法

这是面试的最后一道题,算是拿个算法题来压轴。从25匹马中选出5匹最快的马,只有五个赛道,求最少的次数(没有秒表计时)

这个题当时没想出来,后来面试结束,在网上找到一个一模一样的题,步骤这里就不写了,详情请移步点我点我

3.计算机网络

网络里的知识考的比较多一些,有http和https,ip协议,DNS,url

http和https有什么区别?

回答说https更安全之后,面试官接着问,问什么更安全
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

 客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
  (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
  (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
  (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  (5)Web服务器利用自己的私钥解密出会话密钥。
  (6)Web服务器利用会话密钥加密与客户端之间的通信。
技术图片

如果需要将网站从http切换到https到底该如何实现呢?
这里需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。例如:http://www.baidu.com改为https://www.baidu.com
BTW,这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。例如:将http://www.baidu.com改为//www...。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

ip协议的作用是什么,dns是什么,属于七层中的哪一层

巴拉巴拉说了一点,可能说的不太对,面试官就没在接着问,据别的同学说,面试官接着问她:域名解析存储在哪里,服务器,在服务器的哪里???鬼知道

IP 地址是我们进行TCP/IP通讯的基础,IP地址是一个32位二进制数的地址, 由4个8位字段组成,每个字段之间用点号隔开,用于标识TCP/IP宿主机。每个IP地址都包含两部分:网络ID和主机ID。网络ID标识在同一个物理网络上的所有宿主机,主机ID 标识该物理网络上的每一个宿主机,于是整个Internet上的每个计算机都依靠各自唯一的IP地址来标识。

IP地址的格式为: IP地址 = 网络地址 + 主机地址 或者 IP地址=主机地址 + 子网地址 + 主机地址。一个简单的IP地址其实包含了网络地址和主机地址两部分重要的信息。

IP地址必须和一个网络掩码(Net Mask)对应使用, 缺一不可。网络掩码的主要作用是告诉计算机如何从IP地址中析取网络标识和主机标识。其实现是通过设置掩码来将原本属于主机ID的位(bit)借用给网络ID, 从而起到减少主机数量的作用。当通过设置掩码从主机ID来借用位(bit)时, 至少要留下2个位(bit)来做主机ID。因为只留一个位的情况下,全0和全1都没有意义.

在TCP/IP协议栈的实现中设定了许多的规则,其中有一条就是, 两台联网的主机想直接通讯的话,必须有相同的网络标识和不同的主机标识。具有不同的网络标识的两台主机要想通讯的话必须通过一台中间设备 - 路由器的转发才能实现。

对于大多数拨号上网的用户,由于其上网时间和空间的离散性,为每个用户分配一个固定的IP地址(静态I P)是非常不可取的,这将造成IP地址资源的极大浪费。因此这些用户通常会在每次拨通ISP的主机后,自动获得一个动态的IP地址,该地址当然不是任意的,而是该ISP申请的网络ID和主机ID的合法区间中的某个地址。拨号用户任意两次连接时的IP地址很可能不同,但是在每次连接时间内IP地址不变。

DNS( Domain Name System)是“域名系统”的英文缩写,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。
至于同同学说的解析存储在哪里,我猜是问如何查询的过程:

1、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
ip属于网络层,dns属于应用层,附图一张:
技术图片

参见ipipipipip dns dns dns dns dns

写一个带?和#的url

港真,我不知道?和#是什么意思。现在想想昨天跟面试官胡邹了一下就觉得好尬
#代表网页中的一个位置,比如,http://www.XXX.com/index.html...
?是带的参数。比如 http://www.cnallshop.com/sch?...,参数是?后面的id=1,网站的程序会根据此参数查询数据库。
参见#表示页面定位

4.vue.js

关于框架,只问了一个问题,果然大厂都重基础,首先

读过vue源码吗?

gg,没有,

说一下vue实现双向绑定的原理是什么

原理原理,一脸懵逼。。。
链接描述这个文章写的真好,挖坑,今天没空了,明天总结一下
还问了一个问题,和后台交互用的什么,axios呀,那axios的原理是什么?
阿西吧,除了axios还有什么和后台交互的方式?
1、 link标签的href属性
2、 script标签的src属性
3、 img标签的src属性
4、 ajax发送请求
5、 表单提交发送请求
6、 a标签的href发送请求
7、 iframe的src属性发送请求
前后端实现数据交互的方法点我

记一次腾讯霸面---前端

标签:复杂   tps   数据交互   detail   转发   检查   link   意思   ram   

原文地址:https://www.cnblogs.com/10manongit/p/12812668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!