zoukankan      html  css  js  c++  java
  • 腾讯前端二面题目详解

    废话不说,直接上题。

    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是杰出代表。页面编写和业务编写分离,极大的加快了开发的进度,以及代码的分离。

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

    加油。

  • 相关阅读:
    2013年 积木大赛
    Matlab 画图2
    Matlab 画图1
    Matlab 数值计算
    Matlab 条件循环函数
    Non Super Boring Substring 题解(hash+思维)
    Matlab 数组
    Matlab 矩阵
    L
    hdu 1671Phone List
  • 原文地址:https://www.cnblogs.com/chaojidan/p/4113144.html
Copyright © 2011-2022 走看看