腾讯面试题1

本文分享了腾讯面试中遇到的各种技术问题,包括论坛内容过滤系统的设计、QQ安全管家部门的面试题,涉及线程、进程、C++、数据结构和数据库设计等。还探讨了如何优化大量数据的查询效率,如QQ号码查询、电话号码归属地查询、数据排序和更新等。面试者给出了多种解决方案,包括哈希表、排序、位运算和分段存储等策略。
摘要由CSDN通过智能技术生成

一看就知道TX不是搞.net,如果你想去的话有几条路:
1,C(底层,成功率70%)
2,Javascript(网页,特别是ajax,纯手写,不用流行框架,成功率50%)
3,linux(网络,成功率40%)
4,oracle(数据库,成功率60%)
5,flash(主要是美工部分,成功率30%)
6,熟人(成功率90%)

1.某个大型的论坛系统,比如csdn论坛,或者网易论坛等,论坛发帖需要对内容进行过滤,已经知道过滤词表有3W个词汇。请设计比较优化的过滤系统。

以下是不好的方案
1.通过js在前台过滤,如果过滤词少的话是可以,3w个过滤词太大,不太适合在前台过滤。2.后台过滤,把论坛内容和3w个过滤词一对一比较,这样要循环3w词,效率是非常慢的。
2腾讯面试的职位是QQ安全管家部门
初试时,首先通过手机聊了一堆,问了线程、进程等很多问题,比如:多进程的线程同步、共享内存的用法等。

笔试题1
struct student{
virtual void fun(){
  m_i = 0;
}
static int m_i;
};//...1
struct student{
void fun(){
m_i = 0;
}
static int m_i;
};//...2
int student::m_i = 0;
int _tmain(int argc, _TCHAR* argv[])
{
student *m_p = 0;
m_p->fun();
return 0;
}

12两种情况谁会崩溃
我的答案:1崩溃,2不会。原因1会根据m_p的指向的类型,再根据该类型的虚指针去虚函数获取函数指针,
可以写成该伪代码 :m_p->ptr->fun(),显然ptr是未知的崩溃。

笔试题2
有个byte字节(8位) ,统计1的次数,如1011 0010 1出现的次数是4(最大限度的优化)
我的答案:
int i=0;
for(int j=0;j<8;j++){
if(_byte&1)i++;
_byte>>1;
}

最后就是上机题:
给个文件:文件里无数个单词,
MFC编个对话框,在编辑框中输入字母,然后再下面的编辑框里能显示出最佳匹配的前100个单词
时间2小时

我的思路就是首先根据首字母读一次文件,将首字母符合的所有单词放入一个vector里,在根据排序需求对vector进行sort排序,根据后续的字母 针对vector进行操作, 每次输出仅从vector里取前100

做出来后,面试官问如果该文件里的单词已经排好序是否有其他更优方法,
当然有,空间换时间,对每个最近匹配的做个标记,开始标记、结束标记,

比如 以a开头的做个标记 以aa开头 以aaa开头的都做标记,有点类似于广义表的形式,大集合包含小集合,小集合再包含集合。

不过面试官离开时没说消息通知的时间,所以回去后就接受另一家公司的offer
面试大公司就这点烦心,没小公司来的爽快。
在这里总结一下,给后来的面试者提供点经验- -

3.QQ数据库的用户信息表 现在有5亿多条记录,现在请给出怎么样设计,使通过QQ号码查询QQ用户信息的速度更快。。用怎么样的算法算出查询大概需要多少的系统开销。。

     答:1.首先根据QQ号码的位数分段存储,不同位数的QQ号码再根据首位数字来分,比如,首位数字是1的放在一起存储,首位数字是2的一起存储。然后再根据第二位数字来存储,比如首位数字是1,第二位数字为的放在一起,以此类推,1112131415.。。。。。。。

2122232425.。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值