新鲜出炉的网易 C++面试题

2018-01-02 20:32:28 +08:00
 qianjindapang

** 虽然答不出来,但也不用怀疑自己的能力,生活继续 **

6111 次点击
所在节点    程序员
30 条回复
gnaggnoyil
2018-01-04 00:48:18 +08:00
@sgissb1 select 在 windows 上的实现用 C 写的这一结论是依据什么推测出的?愿闻其详.至少我记得当年当年 windows 2000 泄露出来的代码都是用 C++写的——或者更准确地说,C with classes.
sgissb1
2018-01-04 12:30:04 +08:00
@gnaggnoyil 你说的泄露的代码是 nt 内核吧?我就有一份,你需要吗?
sgissb1
2018-01-04 12:41:05 +08:00
@gnaggnoyil 另外如果真不懂,建议你就去好好查查资料,在看看 vs 里面的 win32 sdk 源代码。
标准 socket 函数族就是 c 写的,也包括 select。你说的 c++写的那是微软封装过暴露出来的非标准 socket 函数族。

微软自己都在自己的几本讲 windows 开发相关书里面提到过,windows 绝大部分是 c 语言写的基础库,底层库,对于上层部分接口才是 c++写的。

麻烦你分清楚伯克利 socket 和非伯克利 socket。
sgissb1
2018-01-04 12:44:57 +08:00
@q397064399 其实还有一个问题,“态跃迁”问题(记得这个名词是 linux 内核一书里面说的)。

select 要让用户态线程被挂起,并进入内核态等待中断上来。
epoll 代码没有看过,但网上资料的介绍,感觉和 windows 上的 iocp 有几分相似。
一个是态跃迁不再那么频繁,因为有对应的内核态线程在处理问题,用户态线程和内核态线程之间只是基于事件驱动。

同时内存拷贝问题也是态跃迁里面一个比较严重的问题。epoll 好像不存在内存拷贝,用的是类似内存映射的方式解决的。
gnaggnoyil
2018-01-04 14:21:10 +08:00
@sgissb1 好啊.能发我一份吗,我也很想看看.至少 VS2017 里的 CRT src 都是 asm,c 和 cpp 混用的,cpp 部分还有不少用了 WRL 和 WinRT.

另外我也很赞赏您对于具有不同外延的名词注意区分其不同的执着态度.这份态度至少 ZeroMQ 的作者是比不上的.( https://github.com/zeromq/libzmq/blob/b3bf51716e0a9d3374fc0a76691b778522194937/builds/gyp/platform.hpp#L46)虽然 ZeroMQ 的代码质量被诟病也不是一天两天了.
gnaggnoyil
2018-01-04 14:21:32 +08:00
@sgissb1 我的邮箱是 gnaggnoyil@163.com
sgissb1
2018-01-04 14:45:07 +08:00
@gnaggnoyil 给你一个 git,你自己取 https://github.com/ExpLife/MinNT

编译通过了,跑起来记得 show 一下哈。虽然本省编译也不难,有教程。
q397064399
2018-01-04 21:55:20 +08:00
@sgissb1 #24 系统这块就了解的比较少了,我其实也就看网上说说, 半路出家,算法略懂一点 至于具体左旋右旋 我也说不清楚,但是 rb-tree 比 常数级别还是要好的,, 算是抛砖引玉吧。
sgissb1
2018-01-05 09:42:01 +08:00
@q397064399 哦,另外为啥看不到你的 at 通知?你被降权过吗?
q397064399
2018-01-05 13:48:59 +08:00
@sgissb1 不清楚,,降权是什么鬼?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/419494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX