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

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

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

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

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

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
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。redis

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

做者:Chengbb
连接:https://www.zhihu.com/question/21543813/answer/103990729
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。sql

做者:Conley
连接:https://www.zhihu.com/question/34574154/answer/146939454
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。shell

本科应届生,不请自来答一发吧。 既然是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:评论中有人补充了一些问题,能够参考看看。

相关文章
相关标签/搜索