腾讯实习生一面分享(啥也不会...)

   声明:本站部分内容来自互联网,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

3

第一次面试分享

  • 写在前面
  • 面试流程
    • 简单自我介绍
    • 笔试题1
    • 知识提问
    • 加试题2
      • 思路
    • 面试官让总结自己的优劣势
  • 总结

写在前面

腾讯面试之前会给你打电话确认,然后发邮件给你。邮件里面有远程面试地址和是否确认面试时间的地址。
面试岗位:前端开发实习生
就想出去实习学点技术,在学校学不到啥有用的。
得支棱起来!

面试流程

简单自我介绍

我超快,10s不到

笔试题1

给定两个版本号v1,v2。比较版本号,

  • 如果v1>v2,返回1
  • 如果v1
  • 如果相等,返回0

案例

1.0 1.01 返回0
1.1.2 1.8 返回-1
2.1 1.8.1 返回1
1.0 1.0.0 返回0
//等等,记不清楚了,大概这个意思

思路就很简单,我们首先要拿到.分隔的数字

function deal(v1,v2){var num1=[],num2=[];var temp=0;/**************获取v1 .分隔的数字**********************/for(var i=0;i<v1.length();i++){if(v1[i]!=0){temp*=10;temp+=v1[i];}else{num1.push(temp);temp=0;}}num1.push(temp);temp=0;/*************************************/
}

写到这里,面试官给打住了,说我编程完全是c++的码风,我确实是没怎么写过JavaScript
面试官说这么写就没有意义了,有更简单的方法。我突然反应过来。可以直接用splice函数来分隔字符串

function deal(v1,v2){var num1=v1.splice('.'),num2=v2.splice('.');//这样直接就得到了.分隔的数字了,然后直接比较就可以了//然后下一个细节就是我们要两者的长度相同有一个补零的操作if(num1.length()>num2.length()){while(num2.length()<num1.length()){num2.push(0);}	}else if(num1.length()<num2.length()){while(num1.length()<num2.length()){num1.push(0);}	}for(var i=0;i<num1.length();i++){if(num1[i]>num2[i]) return 1;else if(num1[i]<num2[i]) return -1;}return 0;
}

然后这题算是做出来了吧,中间卡壳了,面试官会给你提示,总体感觉还是可以的。

知识提问

这个部分可以就记不全了。基本就是知道多少说多少,因为我根本没系统接触过这个东西,也没背东西。乱七八糟。

  • css里面的position有那些值,说一说作用?
    这题不就是relative absolute flex,写过css还是知道。

  • 简单说一下访问网站的流程?越系统越好
    乱七八糟,只知道dns,三次握手四次挥手。其他不知道

  • 说一下浏览器缓存?
    我只知道我之前hexo博客更新后,页面没更新就需要清楚一下浏览器缓存…其他不知道

  • 然后追问了一个问题系统更新上线了,我不可能让用户去更细浏览器缓存,我们该怎么办?
    我就说的把css的样式改变用js放到window对象里面,这样浏览器访问会自动执行js代码改变css样式

其他的都记不清楚了,反正就是不知道

加试题2

后面随便聊了一下,给了个加试题
LRU算法,set(key,value),get(key)。怎么清除最久没有使用的缓存?达到O(1)复杂度。

思路

这个O(1)的复杂度很容易就想到了map,但是set如果来做呢?

正确的答案


利用链表和hashmap。当需要插入新的数据项的时候,如果新数据项在链表中存在(一般称为命中),则把该节点移到链表头部,如果不存在,则新建一个节点,放到链表头部,若缓存满了,则把链表最后一个节点删除即可。在访问数据的时候,如果数据项在链表中存在,则把该节点移到链表头部,否则返回-1。这样一来在链表尾部的节点就是最近最久未访问的数据项。

我的答案
LRU听都没听过,我直接说肯定要用map,还要用两个,第一个里面存在了,就把这个删除放到第二个里面,在第二个里面就次数+1.
最后把第一个里面的删掉就可以了,如果没有,就把第二个里面次数最少的删掉。
答的乱七八糟,这样没有考虑到时间了,一定要用链表的

面试官让总结自己的优劣势

乱七八糟乱说一通

总结

  • 最后面试官问我有什么需要提问的?
  • 我说了你吃了吗?
  • 面试官说没有
  • 我说咱们先吃饭吧

可以说是草草收场,但是面出了自我,面出了风格。