腾讯公司后台服务器经典面试题2009年5月
httpli
uxchi
au
ix
ettechdoc
et200906231119789shtml
腾讯公司后台服务器经典面试题2009年5月
来源Chi
aU
ix博客日期:200906231336共有0条评论我要评论
前些时间去了腾讯面试,可惜现场没回答好。是一些基础问题,同时也比较深入的问题。在此列出来,欢迎大家讨论交流。提问(不按时间顺序):1,使用Li
uxepoll模型,水平触发模式(LevelTriggered);当socket可写时,会不停的触发socket可写的事件,如何处理?2,从socket读数据时,socket缓存里的数据,可能超过用户缓存的长度,如何处理?例如,socket缓存有8kB的数据,而你的缓存只有2kB空间。3,向socket发送数据时,可能只发送了用户缓存里的一半,如何处理?例如,需要向socket发送8kB数据,返回值只有2kB发送成功。4,C的虚函数是怎么实现的?5,C的虚函数有什么作用?6,非阻塞co
ect()如何实现?7,sizeof问题classAcharci
tval
shortshclassBcharc
1
f腾讯公司后台服务器经典面试题2009年5月
i
tval
shortshvoidfu
c1voidvirtualfu
c2voidsizeofAsizeofB分别是多少?8,实现字符串比较函数strcmpcharsrccharsub9,实现内存拷贝函数strcpyvoiddstcharsrcsize_tle
10,条件变量的如何使用你使用的线程函数是什么?11,deamo
进程如何实现?12,HTTP和CGI是什么13,TCP的三次握手,TIME_WAIT和CLOSE_WAIT状态是什么?因为第7题之后的属于客观题,不打算在此写答案。朋友们如有好的答案也欢迎跟贴。本人在此写出自己对前6个问题的回答:1,使用li
uxepoll模型,水平触发模式(LevelTriggered);当socket可写时,会不停的触发socket可写的事件,如何处理?第一种最普通的方式:当需要向socket写数据时,将该socket加入到epoll模型(epoll_ctl);等待可写事件。接收到socket可写事件后,调用write或se
d发送数据。。。当数据全部写完后,将socket描述符移出epoll模型。
这种方式的缺点是:即使发送很少的数据,也要将socket加入、移出epoll模型。有一定的操作代价。第二种方式,(是本人的改进方案,叫做directlywrite)向socket写数据时,不将socket加入到epoll模型;而是直接调用se
d发送;只有当或se
d返回错误码EAGAIN(系统缓存满),才将socket加入到epoll模型,等待可写事件后,再发送数据。全部数据发送完毕,再移出epoll模型。
2
f腾讯公司后台服务器经典面试题2009年5月
这种方案的优点:当用户数据比较少时,不需要epool的事件处理。
r