Chinaunix

标题: 新鲜出炉的腾讯后台开发三面面试题! [打印本页]

作者: 西西弗西    时间: 2010-03-18 08:58
标题: 新鲜出炉的腾讯后台开发三面面试题!
本帖最后由 西西弗西 于 2010-03-18 11:15 编辑

三面是总监面,本人不幸被拒了,这次面试没有问项目相关的问题,项目的问题是放在二面问的。三面给人的感觉要求很严,有些问题看似基础,但问得很细,稍有闪失就被pass,绝不能有模棱两可那种回答,以下是面试题:


1)tcp三次握手的过程,accept发生在三次握手哪个阶段?


2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?


3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?


4) valitale的含义。


5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。


6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。


7)设计一个洗牌的算法,并说出算法的时间复杂度。


socket在什么情况下可读?


9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
作者: rain_fish    时间: 2010-03-18 09:32
4)volitale的含义吧?
作者: wohenry84    时间: 2010-03-18 09:32
板凳
作者: 西西弗西    时间: 2010-03-18 09:42
多谢楼上的,第8个问题就是在议协层来说,比如当缓冲区数据达到一定数量socket就可读了,除此之外还有什么情况下可读?
作者: cugb_cat    时间: 2010-03-18 09:46
回复 5# 西西弗西
还有对方把链接关闭了也可读。
作者: empty141    时间: 2010-03-18 09:48
学习
作者: cjaizss    时间: 2010-03-18 09:49
回复  西西弗西
还有对方把链接关闭了也可读。
cugb_cat 发表于 2010-03-18 09:46



    我觉得题目出的不好,单一个socket,其范围太大了,所以不知道回答什么。如果只说基于socket编写的TCP接口,那倒也没什么问题了。
作者: bsdc    时间: 2010-03-18 09:52
cjaizss老大学识广博,受教受教
作者: starzhestarzhe    时间: 2010-03-18 10:06
占位学习{:3_189:}
作者: yyjshpy    时间: 2010-03-18 10:07
#define OFFSETOF(s, m) ((size_t) &((s *)0)->m);

linux kernel里有。
作者: c/unix    时间: 2010-03-18 10:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: benjiam    时间: 2010-03-18 10:13
.... tx 出来的怎么都是这几道题?

我被据称上次自称tx 出来的也面了这几道中的几道。


最后一道 我回到的是有滑动窗口大小机制,和 消息延时 来区别。那个人很鄙视我。。。。。。
作者: empty141    时间: 2010-03-18 10:16
#define OFFSETOF(s, m) ((size_t) &((s *)0)->m);

linux kernel里有。
yyjshpy 发表于 2010-03-18 10:07



    同意
作者: windyrobin    时间: 2010-03-18 10:16
.... tx 出来的怎么都是这几道题?

我被据称上次自称tx 出来的也面了这几道中的几道。


最后一道 我 ...
benjiam 发表于 2010-03-18 10:13



额,不会吧,貌似你的回答挺靠谱的...
作者: liexusong    时间: 2010-03-18 10:17
都是高手!膜拜!
作者: benjiam    时间: 2010-03-18 10:18
#define OFFSETOF(s, m) (long)&(((s*)(0))->m)

好像是这样吧。
作者: egmkang    时间: 2010-03-18 10:24
Offset宏看看C标准库的头文件就能知道咯
作者: doofy    时间: 2010-03-18 10:45
最近流行socket和信号...
作者: prolj    时间: 2010-03-18 10:47
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
不知道,可以让我查查书么?

2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?
三次握手,保证传输的顺序和完成。UDP是数据报,不管你传到没传到,也不管顺序。

3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
ELF文件里面有个段叫 rodata 。

4) valital的含义。
就是一个标记,比如,我这个变量易变的,一会儿是0,一会儿是1,让编译器不要优化,我就愿意这样。目的是减少内嵌汇编,这样以前内嵌汇编的代码就可以用C写了。

5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。
&s - &(s->m)

6)100亿个数,求最大的1万个数
如果是int的话,10000000000 * 4 / 1024 / 1024 / 1024 将近40G的内存,long long的话更大。全部读入内存肯定不靠谱,所以要使用文件,分批次读入,实现一个1W个元素的有序链表(关键要设计一个快速的检索方法),新读入的数据跟链表最大一端的一个数据比较,如果更大,就插入,同时删除最小端的一个数据,继续循环下去。

7)设计一个洗牌的算法
一个数组,一个swap,呵呵,一个hash,然后在rand套rand一下。

8) socket在什么情况下可读?
不知道,可以看书不?

9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
不知道,可以soso不?
作者: peidright    时间: 2010-03-18 10:53
觉得面试,只要你对某一个领域熟悉,就行了。如果面试后台开发,这些确实是基础知识。。。。。
作者: shmild    时间: 2010-03-18 10:59
三面还在问这么base的问题,是不是一共有7~8轮面啊
作者: 西西弗西    时间: 2010-03-18 11:02
回复 22# shmild


呵呵,  据我所知有5面,二面问了很多关于项目的问题,三面看似基础,不过每个问题都问得很细,而且感觉稍有闪失就被pass了,因为三面要求很严格的,二面时有些问题回答的大差不差就可以了,但三面不行。
作者: bill15    时间: 2010-03-18 11:05
mark
来学习
作者: litdong    时间: 2010-03-18 11:07
借问一句,腾讯后台做什么的?
作者: chenzhanyiczy    时间: 2010-03-18 11:16
SHIT!

俺二面的时候,就被t了

问的问题很多都是有多种可能情况的,模棱两可
作者: 西西弗西    时间: 2010-03-18 11:17
借问一句,腾讯后台做什么的?
litdong 发表于 2010-03-18 11:07



    不好意思,具体部门不方便回答。
作者: sep    时间: 2010-03-18 12:56
cjaizss和老P的回复都很不错。换成我肯定死翘翘了
作者: okocha-jay    时间: 2010-03-18 13:02
本帖最后由 okocha-jay 于 2010-03-18 13:08 编辑

随便写的

1)tcp三次握手的过程,accept发生在三次握手哪个阶段?

如果是accept阻塞在那里,根本就没有客户,三次握手也许正在进行;
如果是accept返回的时候,三次握手早完成了;

2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?
。。有点多。字节流吧,多个send发的数据可能会整合在一起发送。

3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
直接用的立即数

4) volatile的含义
每次都从内存读取数据,不信任缓存;

5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。
&(((struct s *)0)->m)
优先级漏了

6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。
建立大小为1万的小根堆。。。

7)设计一个洗牌的算法,并说出算法的时间复杂度。
貌似哪里介绍有线性算法;先顺序赋值,后随机交换。

8 socket在什么情况下可读?
新数据到达;
收到FIN报文好像也是可读;也就是对方要求断开连接
新连接可读,比如收到了ACK+SYN,connect完成
其它情况不清楚


9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
流量控制:控制连接的两端发送数据不要太快;
拥塞控制:控制连接所经过的路由器别超负荷;
感知拥塞应该是受到了ICMP抑制报文
作者: iamybj    时间: 2010-03-18 14:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: CUDev    时间: 2010-03-18 14:27
回复 1# 西西弗西


    看来qq公司最近几年的面试题目没有多大改进啊
作者: huxk    时间: 2010-03-18 14:40
騰訊據說是發14個月工資說 現在是不是翻倍了啊
作者: flw    时间: 2010-03-18 15:08
据可靠消息,现在是 18 个月工资。
作者: peidright    时间: 2010-03-18 15:19
{:3_190:}
作者: mgqw    时间: 2010-03-18 15:27
{:3_198:}
作者: 专操五毛    时间: 2010-03-18 15:36
本帖最后由 专操五毛 于 2010-03-18 15:40 编辑

麻痹,qq对应届生抠门的很,和alibaba一样,比baidu差一个档次多,还有扣发15%,说是绩效考核,加班也和HW一样。
作者: 专操五毛    时间: 2010-03-18 15:47
国内大民企作技术首选baidu, 起点/环境/成长,比其他公司作技术的好多了。

非五毛。
作者: liuyuanyang    时间: 2010-03-18 16:03
学习。。。{:3_193:}
作者: zylthinking    时间: 2010-03-18 18:09
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
不知道,可以让我查查书么?

2)Tcp流, udp的数 ...
prolj 发表于 2010-03-18 10:47



虽然有点个性, 貌似回答的不如上面那个好
作者: linux_ha    时间: 2010-03-18 18:22
本帖最后由 linux_ha 于 2010-03-18 18:23 编辑

1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
我觉得是第二次握手,发起连接请求的节点先SYN(序列号1)后,目标节点返回ACK(序列号2)SYN(序列号1+1),在这以后说明目标节点已经准备好了,即ACCEPT,等请求节点返回ACK为1后,就已经建立了连接了,并可以发送数据了。所以前边有人说是三次握手之后,应该不准确吧。
作者: 西西弗西    时间: 2010-03-18 18:38
同意楼上的。
作者: flarie    时间: 2010-03-18 18:39
呵呵,路过,学习一下.很好很强大!
作者: 独臂剑客    时间: 2010-03-18 19:35
三次握手发生在listen之后,accept之前,accept只是从已建立连接的队列中获取连接,进行通信。
作者: cjaizss    时间: 2010-03-18 19:40
本帖最后由 cjaizss 于 2010-03-18 19:43 编辑
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
我觉得是第二次握手,发起连接请求的节点先SYN(序 ...
linux_ha 发表于 2010-03-18 18:22



   直觉是不准确的.
   先申明一下,这里的accept是指socket中的accept系统调用.
   没有三路握手,不能称之为连接.既然没有连接,何以收发数据操作?
作者: linux_ha    时间: 2010-03-18 19:57
回复 44# cjaizss


大侠你好,我把accept理解成连个节点间实际的动作了,就像两个人交换名片一样,我先把名片递给别人,然后他接受了我的好意,回敬了一张,那么就可以认为建立起谈话关系了,也就是产生了accept动作了。不过其他题,我都还不太理解,还需要多学习啊!
作者: wrsg    时间: 2010-03-18 20:29
进来膜拜cjaizss,顺便学习学习!
作者: 天使是山东人    时间: 2010-03-18 20:32
国内大民企作技术首选baidu, 起点/环境/成长,比其他公司作技术的好多了。

非五毛。
专操五毛 发表于 2010-03-18 15:47



    一派胡言,,百度有什么技术?你说说,不就一个搜索吗?是个人是个公司专注某一个领域几年都能称为佼佼者。。。
作者: remark    时间: 2010-03-18 21:04
回复 20# prolj


    6)100亿个数,求最大的1万个数
如果是int的话,10000000000 * 4 / 1024 / 1024 / 1024 将近40G的内存,long long的话更大。全部读入内存肯定不靠谱,所以要使用文件,分批次读入,实现一个1W个元素的有序链表(关键要设计一个快速的检索方法),新读入的数据跟链表最大一端的一个数据比较,如果更大,就插入,同时删除最小端的一个数据,继续循环下去。

                                                             如果比最大的数小怎么办?
作者: prolj    时间: 2010-03-18 21:06
回复 48# remark


    哦,那就小数比,然后插入吧。
作者: luoleicn    时间: 2010-03-18 21:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: cskyrain    时间: 2010-03-18 21:15
回复 47# 天使是山东人


   
作者: sh19871122    时间: 2010-03-18 21:55
版主好强大,小子受教了
作者: pengjianbokobe    时间: 2010-03-18 22:17
学习。。。
作者: 专操五毛    时间: 2010-03-18 22:19
回复 47# 天使是山东人


    草,你比我还象五毛。
作者: 西西弗西    时间: 2010-03-19 08:56
回复  天使是山东人


    草,你比我还象五毛。
专操五毛 发表于 2010-03-18 22:19



    各位,希望不要在这里讨论与技术无关的问题。
作者: lbaby    时间: 2010-03-19 09:45
1)三次握手之后
2)流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为 ...
cjaizss 发表于 2010-03-18 09:38



    呵呵,到底是数学出身的。
作者: lbaby    时间: 2010-03-19 09:46
回复  remark


    哦,那就小数比,然后插入吧。
prolj 发表于 2010-03-18 21:06



    呵呵,这是最大最小堆的典型题。
作者: kenby    时间: 2010-03-19 10:04
socket在什么情况下可读?
引用unp的一段话
A socket is ready for reading if any of the following four conditions is true:
a. The number of bytes of data in the socket receive buffer is greater than or
     equal to the current size of the low-water mark for the socket receive buffer.
     A read operation on the socket will not block and will return a value greater than 0
b.  The read half of the connections is closed (i.e., A TCP connection that has received a FIN).
     A read operation on the socket will not block and will return 0 (i.e., EOF)
c. The socket is a listening socket and the number of completed connection is nonzero.
    An accept on the listening socket will normally not block, although we will describe a   
d. A socket error is pending. A read operation on the socket will not block and will return
    an error (-1) with errno set to the specific error condition
作者: kenby    时间: 2010-03-19 10:06
socket在什么情况下可读?
引用unp的一段话
A socket is ready for reading if any of the following four conditions is true:
a. The number of bytes of data in the socket receive buffer is greater than or
     equal to the current size of the low-water mark for the socket receive buffer.
     A read operation on the socket will not block and will return a value greater than 0
b.  The read half of the connections is closed (i.e., A TCP connection that has received a FIN).
     A read operation on the socket will not block and will return 0 (i.e., EOF)
c. The socket is a listening socket and the number of completed connection is nonzero.
    An accept on the listening socket will normally not block, although we will describe a   
d. A socket error is pending. A read operation on the socket will not block and will return
    an error (-1) with errno set to the specific error condition
作者: 西西弗西    时间: 2010-03-19 10:32
socket在什么情况下可读?
引用unp的一段话
A socket is ready for reading if any of the following f ...
kenby 发表于 2010-03-19 10:06



非常好,就是这4种情况!
作者: davycu    时间: 2010-03-19 10:33
回复 45# linux_ha


    这个貌似UNP1里面几个函数在握手的什么阶段开始、什么时候结束都用图画出来了...
作者: kenby    时间: 2010-03-19 10:33
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
这个题目unp讲得也很清楚:
TCP维持两个队列:
1) An incomplete connection queue
    contains an entry for each SYN that has arrived from a client
2) A completed connection queue, which contains an entry for each client
    with whom the TCP three-way handshake has completed
那么accept呢?
accept is called by a TCP server to return the next completed connection from
the front of the completed connction queue
附一张截图,截图有个小错误

作者: litdong    时间: 2010-03-19 10:36
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
我觉得是第二次握手,发起连接请求的节点先SYN(序 ...
linux_ha 发表于 2010-03-18 18:22




作者: greensnow    时间: 2010-03-19 12:16
写了个程序在linux下测试了一下,accept的确是在三次握手完成后才返回的
作者: goldenfort    时间: 2010-03-19 12:45
某讯公司在技术上 就是个垃圾 ,  它再装B  也 不管用,
不过它一个瞎狗子, 运气好, 找到很大的一泡屎,  吃了个饱
作者: chary8088    时间: 2010-03-19 12:47
1 三次握手后
2 udp无连接,发出去的数据不知道对方是否收到
TCP有连接,可以知道是否发送成功
3 const含义不可更改;
  实现机制。。。不知道
  const int i是编译器复制了一个临时变量
4 volitale告诉编译这个变量的值是经常变化
  每次都要从新读取
5 #define OFFSETOF(s,m) ((void*)&s - (void*)&m)
6 不清楚
7 不清楚
8 缓存区有数据了可读
9 滑动窗口
作者: simonzh    时间: 2010-03-19 12:51
占位学习
作者: ubuntuer    时间: 2010-03-19 13:18
回复 65# goldenfort


    说话注意点!!!
作者: silverwings123    时间: 2010-03-19 13:23
mark,学习
作者: comesun_cpp    时间: 2010-03-19 13:41
学习了
作者: goldenfort    时间: 2010-03-19 13:49
回复 68# ubuntuer


    世界上叫X  讯的公司 多了去了,
    再说了, 某公司从产品到技术都垃圾, 还 假装成技术权威的样子, 出些无聊题目, 出来装 13, 诱骗应届生, 它不是有几个钱吗? 除了装B, 能做的事情很多了。

    在说了, 它超级不要脸, 明明抄袭 人家  s---h公司  的输入法,  人家告它, 死不认帐,
    反过来咬人家。  

    它就是个垃圾。
作者: rain_fish    时间: 2010-03-19 14:49
又是个水贴,哈哈
作者: linternt    时间: 2010-03-19 15:52
1)三次握手之后
2)流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为 ...
cjaizss 发表于 2010-03-18 09:38



    很强大,我一个不会!

   我只会干活,不会这些基础性的东西!
作者: prolj    时间: 2010-03-19 16:12
呵呵,这是最大最小堆的典型题。
lbaby 发表于 2010-03-19 09:46



    是啊,算了,用大小堆吧。
作者: whtech    时间: 2010-03-19 17:00
来学习了。顺便瞧瞧P大妈的回答。
作者: anlrj    时间: 2010-03-19 17:35
3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?


我一直有一个疑惑, 事实上, 用const 修饰i, i 并不是只读的, 也绝非常量。

eg:

const int i =10;

设置一个指向i的指针p, int *p =&i; 然后使*p=78;
能成功修改i的值。


如果是常量的话, int arr[i] 应该能通过编译, 事实上不能。

那么const 到底干了些什么呢, 难道仅仅起了警示作用,表示i的值不能修改?
作者: jxfengzi    时间: 2010-03-19 18:57
mark
作者: kenby    时间: 2010-03-19 19:05
先说一下内存布局,
(1)全局区和静态区: 保存全局变量和static变量
(2)栈区: 保存非static的局部变量
(3)字符串常量区: 保存字符串常量

1) const int i = 10;
若直接修改i的值,编译时会被编译器发现,发出错误信息,
i位于栈区, 如果用指针间接修改i的值,可以成功,编译也不会报错,因为编译器发现不了这种非法行为

2) static int i = 10
i位于全局区和静态区,可以直接修改,也可以通过指针修改

3) static const int i = 10;
i位于字符串常量区,不能直接修改,也不能用指针修改i的值,就像不能
char *str = "hello"
*str = 'k';
一样,否则出现段错误,正因为如此,可以用static const int i = 10来替代#define i 10,
两者功能一样

4) const static int i = 10;
同3)
作者: 21moons    时间: 2010-03-19 19:33
可贵!
作者: bluewaterray    时间: 2010-03-19 20:59
还好都是基础题,复习下网络就可以了
作者: dozec    时间: 2010-03-19 22:22
1)三次握手之后
2)流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为 ...
cjaizss 发表于 2010-03-18 09:38



cjaizss比较靠谱,尤其是1W个数的堆排序,非常棒。
我唯一看不懂的就是你说的洗牌,能讲讲嘛,谢谢~~
作者: gigabyte    时间: 2010-03-19 23:34
不错的题目
作者: heut2009    时间: 2010-03-20 00:56
好好学习一下
作者: hzsjx    时间: 2010-03-20 13:29

作者: cjaizss    时间: 2010-03-20 13:59
cjaizss比较靠谱,尤其是1W个数的堆排序,非常棒。
我唯一看不懂的就是你说的洗牌,能讲讲嘛,谢谢~ ...
dozec 发表于 2010-03-19 22:22

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <assert.h>
  5. void myprint(int x)
  6. {
  7.         assert(x>=0 && x<54);
  8.         switch(x/13) {
  9.                 case 0:
  10.                         printf("Spades\t");
  11.                         break;
  12.                 case 1:
  13.                         printf("Hearts\t");
  14.                         break;
  15.                 case 2:
  16.                         printf("Clubs\t");
  17.                         break;
  18.                 case 3:
  19.                         printf("Diamond\t");
  20.                         break;
  21.                 default:
  22.                         if(x == 52)
  23.                                 printf("Little joker\n");
  24.                         else if(x == 53)
  25.                                 printf("Big joker\n");
  26.                         return;
  27.                         break;
  28.         }
  29.         switch(x%13) {
  30.                 case 0:
  31.                         printf("A\n");
  32.                         break;
  33.                 case 10:
  34.                         printf("J\n");
  35.                         break;
  36.                 case 11:
  37.                         printf("Q\n");
  38.                         break;
  39.                 case 12:
  40.                         printf("K\n");
  41.                         break;
  42.                 default:
  43.                         printf("%d\n",x%13);
  44.                         break;
  45.         }
  46. }
  47. int main(void)
  48. {
  49.         int a[54];
  50.         int i,j,m,n,h;
  51.         srand((unsigned)time(NULL));
  52.         for(i=0;i<54;i++)
  53.                 a[i]=i;

  54.         j=54*2+rand()%2;
  55.         for(i=0;i<j;i++) {
  56.                 m=rand()%54;
  57.                 n=rand()%54;
  58.                 h=a[m];
  59.                 a[m] = a[n];
  60.                 a[n] = h;
  61.         }

  62.         for(i=0;i<54;i++)
  63.                 myprint(a[i]);

  64.         return 0;
  65. }

复制代码

作者: hanxiaopan    时间: 2010-03-20 15:43
socket在什么情况下可读?
引用unp的一段话
A socket is ready for reading if any of the following f ...
kenby 发表于 2010-03-19 10:04



    这段话出自第几章第几节?
作者: dozec    时间: 2010-03-20 17:25
cjaizss 发表于 2010-03-20 13:59



cjaizss, thanks very much!!
作者: folklore    时间: 2010-03-20 17:44
一题也不会,走了~~
作者: luo_junqiang    时间: 2010-03-20 21:44
回复 1# 西西弗西
作者: etoux    时间: 2010-03-21 15:29
cjaizss是我的新偶像
作者: u239    时间: 2010-03-22 09:17
c、c++的const实现是在编译时完成的,从提问方式可以知道,出题者对这个的理解好像也不是很清楚。
作者: 勿丑于    时间: 2010-03-22 10:59
发帖人肯定是腾讯的托
作者: OpenBSD5    时间: 2010-03-22 14:35
回复 4# cjaizss


    感谢版主回答!
作者: nn531    时间: 2010-03-22 16:09
{:3_189:}{:3_193:}
作者: hiliunx    时间: 2010-03-22 17:14
cjaizss版主很厉害
作者: incle    时间: 2010-03-22 17:54
容易的一下子有的还真答不上来.
作者: davidbeckham921    时间: 2010-03-22 18:21
占座学习
作者: ztz0223    时间: 2010-03-22 21:34
9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
不知道,可以soso不?


呵呵
流量控制不会丢包的,比如,会用到token桶之类的来实现
拥塞是要丢包的,而且拥塞的时候一般会用到为丢弃等操作
作者: 千年沉寂    时间: 2010-03-23 09:28
6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。

先找出第10000大的数k(时间复杂度O(n)),然后只要选择比k大的即可(时间复杂度O(n)),不足10000用k补充。(100亿太大,可以分段)
总的时间复杂度还是O(n)。
作者: yzhxhwt    时间: 2010-03-23 16:42
1)三次握手之后
2)流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为 ...
cjaizss 发表于 2010-03-18 09:38



    厉害!
作者: danssion    时间: 2010-03-23 17:23
三面是总监面,本人不幸被拒了,这次面试没有问项目相关的问题,项目的问题是放在二面问的。三面给人的感觉 ...
西西弗西 发表于 2010-03-18 08:58



    不懂的飘过




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2