【链接】Linux C/C++ 学习路线-已拿腾讯、百度 offer

https://www.nowcoder.com/discuss/203082?type=0&order=0&pos=69&page=1

https://www.nowcoder.com/discuss/193598

https://www.nowcoder.com/discuss/164781

https://www.nowcoder.com/discuss/188367

https://www.nowcoder.com/discuss/188367

已经有两年C++经验的话,建议从网络编程这块入手,先撸一个单线程的epoll服务器,搞明白边缘触发水平触发的区别,再撸一个多线程的epoll服务器(linux下做高并发必用,libev,libevent和boost的asio,redis的网络部分也是用epoll实现的)。有这基础就可以说后端入门了。接下来再学学数据库,nosql和分布式即可

作者:低端叫兽
链接:https://www.zhihu.com/question/39169728/answer/97484099
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1、网络编程相关知识 TCP协议 阻塞/非阻塞IO 异步/同步IO 多路复用IO等2、多线程/多进程编程相关知识 线程池、互斥锁、共享锁、IPC机制等3、数据库相关知识 关系型数据库sql编写优化 NoSQL数据库使用 内存数据库使用4、操作系统相关知识 进程/线程调度 异步IO机制等

作者:Chengbb
链接:https://www.zhihu.com/question/21543813/answer/103990729
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:Conley
链接:https://www.zhihu.com/question/34574154/answer/146939454
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本科应届生,不请自来答一发吧。 既然是C++后台开发,那就不会局限于C++本身,除了C++之外还有后台开发的相关内容,根据我自己面试的情况,主要分为:数据结构和算法,C++,计算机网络,操作系统(Linux)几块。当然总不会所有的内容都面面俱到,面试官还是会根据你简历来选择侧重考察哪一方面的知识的。比如我个人简历上突出的是C++和Linux方面的经历,所以这两块问的比较多。 首先是数据结构和算法,都说这是程序员安身立命之根本,一般面试第一关遇到的都是面试官说“我们来写个算法吧”,我遇到的算法基本上要么是位运算的,要么是DP和贪心,有一些查找和排序(包括topK)算法,很多leetcode和剑指offer上面的原题或者变种题,难度中等吧。数据结构的话比较简单,最难的也就考过字典树,好像大家都遵循着够用就行的原则,反正就是队列,树,图,这几种,主要考察的是各种操作的时间复杂度,应用场景怎么选择等等。 然后是C++部分,基础语法是不会考的,很喜欢考类的内存布局,vtable的原理,虚继承的时候类内存布局,多继承的时候类的布局。另外一个重点在内存部分,只要跟内存相关的都喜欢考,对指针的理解,allocator的实现,vector内存分配的策略,各种智能指针实现原理及其使用注意事项, rule of three, RAII,内存泄漏的原油时候如何调试等等。 Linux这里主要考察进程调度和进程生命周期,特别是CFS调度算法,几乎是必问,进程部分还有进程间通信。还有文件系统,对VFS的结构很喜欢考,解释软链接和硬链接(从inode和dentry去解释),还有文件缓存,IO调度算法等等。Linux这里也喜欢问内存,slab,slub,伙伴算法,进程内存空间,线程内存空间等等。在系统编程层次主要考察各种IO系统调用、进程相关的系统调用、socket编程。然后把这些系统调用对应到进程生命周期和进程间通信的各个阶段去考。还会考查高级IO操作,IO多路复用,poll,epoll等等,AIO,零拷贝。另外就是Linux的各种使用命令等等,都是常用命令,sed,grep,top这种。 计算机网络主要集中在tcp/ip还有http上面,喜欢考tcp/ip的各种状态转移,把UNP中那副状态转移图中的11个状态背下来就可以应付,还有就是滑动窗口,慢启动,快恢复等等,偶尔会考路由算法。Http会考查一些状态码,各种http选项,重点考查缓存控制,考查keep-alive和pipe line等等。 大概知识点就是这些了,以后再慢慢补充细化。

作者:s1mba
链接:https://www.zhihu.com/question/27840814/answer/38305844
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本人做过一两年的安全后台开发,当然是linux环境下的了。举几个常见的问题。1. 数据结构基础。比如实现一个最简单的哈希表。2. 操作系统基础。linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长,各类变量存储在哪些区域;更深一点可能会问动态库与静态库的区别,因为这个在生产环境中常见,动态库映射在进程模型的哪里;其他常见如僵尸进程、线程共享等问题。3. tcp/ip基础。比如常问三次握手,四次挥手,为什么要四次;time_wait状态相关问题;mtu分片问题;现在一般不会问tcp/ip头大小这么蛋疼的问题了,但可能会问tcp头部几个状态字段,比如syn/psh/fin/rst/urg/ack....在什么情形下会置1,这个就问得比较深了;深入的还有滑动窗口与拥塞控制的大致原理。4. socket编程。阻塞/非阻塞的区别;事件循环select/poll/epoll;常见的网络库read/write会怎样实现(可以参考muduo);有面试官会问客户端是否需要bind;tcp/udp 协议编程时的细微区别...5.工具相关。vim/makefile/gdb/g++ ...6. c++相关。免不了问虚函数;常见stl实现和操作;extern c 干嘛的。7. 脚本相关。shell/perl/python 至少会一门吧,运维/部署都需要。上述列举的都是比较常见,比较简单的问题。不过能把这些答好已经不容易了。PS:评论中有人补充了一些问题,可以参考看看。

posted @ 2019-07-04 11:25  xjyxp01  阅读(179)  评论(0编辑  收藏  举报