免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: fm971
打印 上一主题 下一主题

[C] 腾讯公司后台服务器经典面试题 (2009年5月) [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
31 [报告]
发表于 2009-06-19 12:14 |只看该作者

回复 #29 fm971 的帖子

原帖由 fm971 于 2009-6-19 11:40 发表

做服务器开发, 必须要知道数据如何在内存中存储,如何在网络上传输, 每种操作的开销是多少。


原帖由 OwnWaterloo 于 2009-6-18 21:50 发表

排除绝大多数情况, 如果确实需要知道内存布局这种细节, 正确的作法也是在电脑面前, 写出相应代码(可能还需要编译器扩展), 并验证布局是否确实如所想那般安排; 而不是四眼对望,然后yy!


所以, 直接给你一个结构体, 问你sizeof是多少, 依然是yy, non-sense。

论坛徽章:
0
32 [报告]
发表于 2009-06-19 12:34 |只看该作者
哇噻
1-2W

羡慕…………

论坛徽章:
0
33 [报告]
发表于 2009-06-19 12:47 |只看该作者
原帖由 OwnWaterloo 于 2009-6-18 21:50 发表


这种问题 …… 有意思吗 ……

绝大多数情况下, 不了解虚函数怎么实现, 不了解内存布局, 就不能开发了?
高级语言的目的之一就是抽象细节。 面试管的这种问题是舍本逐末,  诱导众多面试者去纠 ...


这个不能认同.
像sizeof这种题还是有用的. 一个不知道内存布局是怎么回事的人开发的时候不去像你说的那样在电脑前试的. 连这块可能会有问题都不知道怎么会去试, 而且即使测了也很有可能得到错误的推论因为有些时候错误的理论也是可以和现实相匹配的。 
就像地心说也能解释很多现象一样.

论坛徽章:
0
34 [报告]
发表于 2009-06-19 14:29 |只看该作者
不错, 都会


send 失败和 recv 失败的这个

如果send 失败 是因为没buff, 自然就是设置 标记 继续send,lz 答得对啊

recv 的话, 我想他考的意思是 epoll 返回一次, 你取8k, 你不取完, 就需要多次取。
多次取需要epoll 多次返回,

还有一个缺点就是下次 epoll 返回的时候,你的逻辑可能还没清空那2k buff,
这是会导致一些问题。

取完的话,客户buff无法存储。

方法有1 扩大客户buff
2 将其余buff 以消息形式send 给客户

论坛徽章:
0
35 [报告]
发表于 2009-06-19 15:10 |只看该作者
这个职位能接到面试通知就说明很强了。lz很牛啊。

论坛徽章:
0
36 [报告]
发表于 2009-06-19 15:15 |只看该作者
貌似我都不会啊

论坛徽章:
0
37 [报告]
发表于 2009-06-19 15:50 |只看该作者
原帖由 bandaotidejia 于 2009-6-19 15:10 发表
这个职位能接到面试通知就说明很强了。lz很牛啊。


现在明白了其实优秀的开发人员,都是在某一个领域比较深入。

我们做开发的人很容易忽略这一点,很多时候没有持续的学习研究,或者基础不够扎实,专长不够突出。



原帖由 benjiam 于 2009-6-19 14:29 发表
不错, 都会


send 失败和 recv 失败的这个

如果send 失败 是因为没buff, 自然就是设置 标记 继续send,lz 答得对啊

recv 的话, 我想他考的意思是 epoll 返回一次, 你取8k, 你不取完, 就需要多次取 ...


这样回答就是好像不太让人满意......不知道那人要问什么......

论坛徽章:
0
38 [报告]
发表于 2009-06-19 16:23 |只看该作者
腾讯的题目也不容易答啊,腾讯有那么好吗?

论坛徽章:
0
39 [报告]
发表于 2009-06-19 16:36 |只看该作者
recv 的话,
我想他考的意思是 epoll 返回一次, 你取8k, 你不取完,
怎么解决?

我的理解

方法 一 就是 一次取完

但是客户的buff 不够, 所以

   方案1是 扩展客户的buff
   方安 2 申请新buff, 将其余的buff 以消息发给客户对象
缺点
   方安1 扩展未必成功,扩展有局限性
   方案2 申请buff 加大复杂性,使用消息队列,锁

优点 多核多线程支持 容易扩展

方法 二 就是 多次取
每次取2k, 逻辑层处理, 然后等第二次epoll 返回再次取2k 逻辑返回, 或者逻辑处理完了再来取2k

缺点
1 多次取需要epoll 多次返回,

2 下次 epoll 返回的时候,你的逻辑可能还没清空那2k buff,
这是会导致一些问题。

单线程而已 否则很容易导致问题
逻辑核io 混杂再一起,系统分层不好

优点
逻辑简单,不需要额外内存

论坛徽章:
0
40 [报告]
发表于 2009-06-19 16:42 |只看该作者
原帖由 fm971 于 2009-6-19 15:50 发表


现在明白了其实优秀的开发人员,都是在某一个领域比较深入。

我们做开发的人很容易忽略这一点,很多时候没有持续的学习研究,或者基础不够扎实,专长不够突出。


一般人只能沦为打杂的
我们做完这个项目做另一个,没有连续性怎么办,公司是为了钱,才不管你的技术修为
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP