zoukankan      html  css  js  c++  java
  • 腾讯实习面试(一)

    第一次面对面的技术面试,总体来说还是有一些收获。

    0. 腾讯QQ每天登录量达到10亿人次,现有一个文件记录了登录历史(10亿个QQ号,注意会有重复),请根据这个文件输出今天哪些用户登录了QQ?

    等同于去重输出的问题。最直观的办法是暴力统计:例如 1) 利用DB主键自动去重 2) 分治,例如每1000万条记录作为一个单位去重,然后合并去重 3) MapReduce分布式处理

    改进一下,单机就可处理的方案:

    开辟一个bit数组(bool数组),QQ号的范围大概0-5,000,000,000,大约占5,000,000,000b/8≈5000Mb/8=625MB内存。

    遍历记录文件,将每次读到的QQ号作为下标,数组对应位置的值置为true.

    遍历完毕文件后遍历数组,将值为true的下标输出即可。

    下面都是一些水题。

    1. 用过关系数据库(用过)?用过什么关系数据库(MySQL),一个MySQL查询很慢,如何进行分析/调优?

    explain查询,分析查询方案各部分代价,对代价较大的部分对应处理,例如加索引。

    2. TCP协议中sequence号的作用?

    标识包顺序,组装报文,重传回退机制的一些依据(详见网络教材)。

    3. socket的通讯过程是怎样进行的。举例(我个人选择Java)说明socket通讯建立的过程。

    首先,服务器端建立ServerSocket对象,开始监听。循环serverSock.accept(). ServerSocket的accept()方法是阻塞的。

    然后客户端向服务器请求Socket连接,每请求一次,服务器端serverSock.accept()返回一次,返回的是和当前客户端的通讯Socket对象。

    返回的这个服务器端Socket对象扔给一个线程进行后续通讯处理。这就是一个基本的Java Socket通讯代码。

    4. 32位Linux下一个进程拥有多大虚拟地址空间?

    3G. Windows是2G.

    5. Cache问题

    总体来说有如下几个要点:

    1) Cache查找,命中怎么办?(直接返回结果)不命中怎么办?(查找后台数据,返回结果并更新Cache. 若Cache满则还需淘汰)
    2) Cache更新,先更新Cache/后方数据?写回策略等。

    6. 你平时如何调试?现在有个常驻内存的程序,运行若干时间后崩掉了,如何解决?

    前一个问题:简单问题cout, 复杂逻辑和问题设置断点跟踪变量。

    后一个问题:查看崩掉前的运行状况,尤其是CPU/内存,分析问题。

    (接下来从一点展开思路)比如说是内存泄露问题。既然是常驻内存的程序,就一定有主循环反复执行某些事务。着重检查事务体的代码,尤其是涉及资源分配/释放的部分。

    总之问了不少题,但是没有很难的。算是很顺利吧。

    备注:成功进入二面

    下面是各处收集的一些其他地区的腾讯面试题:

    0. 我们知道每次登录QQ都会更新好友列表。请设计一个好友列表的更新方案,使得用户体验最好。

    首先本地应该存储一份好友列表(这个简单)。问题的关键是怎么解决同步问题。即先在机器A登,然后在机器B登并修改好友列表(增删好友,改备注等),然后再在A登时的列表同步。

    最简单的方法就是全更新(从服务器下载完整列表进行更新)。可能会因为好友列表太大而比较慢。

    稍微改进一下,可采用版本号+服务器记录增量+本地增量更新的方式。

    例如在机器A上登录QQ并且进行若干操作,登出时的状态:

    A: 版本=1. 服务器: 版本=1.

    登B,并且删除一个好友f,服务器记录修改,登出时更新版本号,此时状态:

    A: 版本=1. 服务器: 版本=1, 删除f, 版本=2. B: 版本=2.

    此时登录A,A将版本=1发送至服务器请求同步,服务器收到后将其后部分(红字)发送给A,A执行操作后同步完毕。

    1. 现在有100亿条历史搜索关键词记录,如何找出前10条频度最高的搜索关键词?

    待补

    2. 一亿个数中取中位数

    待补

    3. 一万个手机号有两个重复的,找出来

    待补

    4. 求二叉树中两节点的最长路径

    待补

  • 相关阅读:
    实现div 垂直居中
    CSS 轮廓---outline属性
    CSS 伪类 (Pseudo-classes)
    HTML默认样式和浏览器默认样式
    VHDL之concurrent之block
    VHDL之concurrent之generate
    VHDL之concurrent之when
    VHDL之concurrent之operators
    QS之force(2)
    QS之force(1)
  • 原文地址:https://www.cnblogs.com/mdyang/p/2041627.html
Copyright © 2011-2022 走看看