博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
腾讯前端二面题目详解
阅读量:5834 次
发布时间:2019-06-18

本文共 2734 字,大约阅读时间需要 9 分钟。

废话不说,直接上题。

1.n个人,围在一起报数,报3的就出来,最后剩下谁?其实就是猴子报数问题

  我以为面试官是要我算出来,所以使用了数学上的列举方法,然后得出表达式。但是弄了几分钟,没得出表达式,就放弃了。后面,回去想了想,面试官应该是要你写出代码来实现这个解决方案。哎,面试官如果当时提一句,你怎么实现的,那我就不会走偏方向了。所以面试时,如果自己不确定面试官问的什么,你可以让面试官表达清楚一点。

代码实现方案:

定义一个数组a[n],里面全部是1,然后while(1)循环数组a[n],while循环外面定义一个变量i=-1,len=n,while(--len)循环里面:

{

     for(var j=0;j<3;j++){

                 i++;    //如果a[i]等于1,就证明它没去掉,就可以报数。

                 if(i>=n){

                  i = i%n;

       }

      if(a[i] ==0){   //如果a[i]等于0,也就意味着a[i]的猴子已经去掉了,这次循环就取消

                         j--;                      

                 }  

      }

  a[i] = 0;     

}

最后循环数组A,找出不等于0的index值,就是所得。

效率:n*k(k=3)。

此方法比较简单,应该还有n+k的方法,无须研究,又不是搞算法大赛。

 

2.域名解析的过程,用户第一次输入www.tencent.com

  我说,去域名服务器找IP,面试官说:怎么去找的?域名服务器在哪里?

卡住了,百度后得到以下结果:

  • 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
  • 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。检查自己本地的hosts文件是否有这个网址映射关系
  • 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。本地DNS解析器可以使本地的路由器。
  • ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。首先会找TCP/IP参数中设置的首选DNS服务器(ISP的DNS)
  • 递归搜索 – 你的ISP的DNS服务器(www.baidu.com.www.alibab.cn)没有,就往上级找,直到根域名服务器,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP,负责com的顶级域名服务器搜索(比如:cn,com,net),最后走到tencent.com的二级域名服务器,找到www.tencent.com域名服务器。如果都没有,就返回找不到页面。
  • 因为域名服务器的查找,有递归和轮询的方法,这都是通过ISP的DNS服务器操作的。最终ISP的DNS服务器返回ip给客户端。

由于域名服务器有负载均衡的功能,因此,会根据服务器的负载以及用户的定位操作,给定相应的域名服务器,同时,域名服务器解析出IP地址,不同的域名服务器可以解析出不同的IP地址,但是内容一样。

 

3.正则匹配URL。

  写了一个匹配http的url,面试官说,还有其他协议的呢,然后就瞬间凌乱了。ftp,https等等,我还记得大学学网络时,还有其他各种协议,百度得:

file 资源是本地计算机上的文件。格式file://
ftp 通过 FTP访问资源。格式 FTP://
gopher 通过 Gopher 协议访问该资源。
http 通过 HTTP 访问该资源。 格式 HTTP://
https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://
mailto 资源为,通过 SMTP 访问。 格式 mailto:
MMS 通过 支持MMS()协议的播放该资源。(代表:Windows Media Player)格式 MMS://
ed2k 通过 支持ed2k(专用下载链接)协议的P2P访问该资源。(代表:) 格式 ed2k://
Flashget 通过 支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:) 格式 Flashget://
thunder 通过 支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:) 格式 thunder://
news 通过 NNTP 访问该资源。
 
大部分的正则只匹配了常见的几种协议。
其实我认识面试官不是要你写出正确的正则,而是考你知道简单的正则用法和url结构。
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
相信大部分只有 [;parameters]这个不太懂,在http权威指南中有介绍这个东西,貌似是针对某些协议,需要验证用户名和密码。用的不多,知道就行。
 
简单正则规则:\w  ->   [a-z][A-Z][0-9]_

\d      ->       数字

\s      ->       空格,换行,tab键等

?   ->   0个或一个      

*    ->  0个或多个      

+   ->  一个或多个      

^  -> 开头  

$  -> 结尾    

.  -> 任何字符

()  -> 子表达式        

g  -> 全局搜索(要考虑lastIndex)  

i   -> 忽略大小写  

m  -> 多行查找

.*?   -> 非贪婪模式      

\   -> 将下一个字符标记为特殊字符    

a{3,4}   -> 最少匹配连续3个a,最多匹配4个连续a

[a-z]   -> 匹配a到z的任意一个字符,[^a-z]    ->   匹配不是a到z的任意字符。

 

4.在IE6,7下怎么调试?

Firebug Lite   ,IE WebDeveloper。

这题实际就是想知道你有没有调试过IE6和IE7。我没有,所以就没回答。这题意义不大。调试工具的使用都一个样。而且ie7都要淘汰了。何必执着技术的深入,而忘记实际的应用呢。

 

5.谈谈mvvm框架。

  个人觉得意义不大,就是看你对新技术有没有了解。项目中没用到,去学的话,我是不愿意去的。但是知道它是下一代MVC前端框架就行了。Angular.js是杰出代表。页面编写和业务编写分离,极大的加快了开发的进度,以及代码的分离。

基本就这几个问题,没回答出来。

 

加油。

 

转载于:https://www.cnblogs.com/chaojidan/p/4113144.html

你可能感兴趣的文章
Flex很难?一文就足够了
查看>>
【BATJ面试必会】JAVA面试到底需要掌握什么?【上】
查看>>
CollabNet_Subversion小结
查看>>
mysql定时备份自动上传
查看>>
17岁时少年决定把海洋洗干净,现在21岁的他做到了
查看>>
《写给大忙人看的java se 8》笔记
查看>>
倒计时:计算时间差
查看>>
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>
maven异常:missing artifact jdk.tools:jar:1.6
查看>>
终端安全求生指南(五)-——日志管理
查看>>
Nginx 使用 openssl 的自签名证书
查看>>
创业维艰、守成不易
查看>>
PHP环境安装套件:快速安装LAMP环境
查看>>
CSS3
查看>>
ul下的li浮动,如何是ul有li的高度
查看>>
C++ primer plus
查看>>