前言
首先一般公司分为前端和后端,前端就是和用户打交道的,负责用良好的视觉效果将数据呈现给用户,广义的前端包括客户端(安卓、IOS)、Web前端、小程序等。
而与之对应的后端则是负责业务逻辑处理,比如下单、支付等,重在业务流程的处理。
后台一般和后端是一个意思,而服务器开发则稍微广义一点,不仅包含了后台开发,而且也包括支撑整个后台应用的基础开发,比如搜索引擎、微服务、RPC 框架、KV、存储、MQ 等。
后台/后端重在业务处理,是偏向应用层开发,而服务器开发不仅包括应用层开发,更是囊括了整个支撑后台业务的相关组件的开发。
那 Linux C/C++ 服务器/后台开发指的什么呢,其实就是基于 Linux 上 的 C++ 编程。
但是相比 Java 系更强调 Linux 系统编程、网络编程能力,有的还会涉及到服务端底层协议和网络框架开发。
传统的 Java 、Go后台开发偏向 Web 开发,也就是接收前端请求,通过微服务互相调用,完成业务逻辑处理,然后返回给前端。
实际上在腾讯这边的 C++ 后台开发,也是类似的,本身有非常成熟的基于 C++ 的微服务体系,大多数开发也只需要关注业务逻辑就好,不过还是会要求 Linux 系统编程、网络编程等能力。
后台开发都考察哪些?
什么技术水平,才能腾讯T9(原T3.1)offer?
一般来说 Linux C/C++ 后台开发方向涉及以下这些基础知识:
C/C++ 语言特性和实现原理
计算机网络
网络编程 和 Linux 系统编程
操作系统原理
部分 Linux 内核原理,如内存管理、文件系统、虚拟内存等
Linux 常见命令使用
算法与数据结构
数据库使用及原理
常见 NoSQL组件,如 Redis、Memcached
版本控制 Git
非必选加分项:
分布式相关,如一致性协议比如 Raft 算法、分布式存储等
docker、k8s 等虚拟化和云计算相关的
系统设计能力,如短链服务、评论服务、Feed流系统、抢红包、秒杀等
常遇面试考察知识点:
c语言语法推荐书籍: 《c专家编程》《c与指针》
c++语言语言推荐书籍:《c++ primer》《effect c++》
c++语言stl底层原理:《STL源码剖析》
tcp/ip相关推荐书籍:《tcp/详解:1》
熟悉使用wireshark捕包工具,加深印象可以使用python的一个库,scapy/dpkt.
数据结构书籍《大话数据结构》
操作系统推荐书籍:《深入理解操作系统》,《Linux内核设计与实现》
Linux基础命令推荐书籍:《Linux就该这么学》
Linux应用编程推荐书籍《后台开发应用与实践》《Linux多线程服务端编程》
补充资料:gdb手册和makefile详解
大数问题通常的套路是hash,分治,布隆,bitmap,如果推荐的话还是上面数据结构相关资料.当然如果能了解下比如hdfs文件系统,mapreduce,spark/flink流式计算最佳哈
算法学习书籍推荐《剑指offer》,建议三遍哈。
leetcode分专栏练习几题,不在多,在于精。
你在项目中学到了什么
让你优化项目中的一点,如何做
项目什么架构
测过系统性能吗,挂掉怎么办?
最好是自己做过的项目,即时不是也需要弄明白其架构,为什么这么做,有什么优点,什么优化方案?
这部分
推荐书籍:《redis设计与实现》《从0开始学架构》《docker入门到实践》《大型网站技术架构-核心原理与案例分析》
还有一个很多选择 C++ 方向同学都存在的疑惑,在这里我也想解释一下:
C++ 语言特性多,又难学,很多都是底层开发才会用到,C++ 就是个坑,是否应该转 Java、Go 呢?
当然不是的,的确在头条、美团、阿里这种业务部门使用 Go、Java 系更多,首先还是那个观点,校招生对于企业来说都是一张白纸,面试官考察的是你的基础知识和聪明度,来决定是否有培养潜力,语言确实不重要。
那你可能会说,明明各种面经上常常出现 ConcurrentHashMap、虚表、虚函数实现机制这样和语言强相关的问题。
在我看来啊,面试深入问一些语言实现细节,其实不是在考你语言,而是看你是否有主动钻研的意识,是不是只停留在应用的层面,同时也借语言考察一些数据结构、操作系统方面的基础知识。
所以呢,我觉得 C/C++、Java、Go 你深入学习哪一个都可以,关键还是找对相应的学习路线,一直坚持学下去,不要每天都停留在我到底是学 Java 好还是 C++ 好这样无解的问题。
而且也有不少Java 进腾讯需要转 C++,C++ 进阿里、美团需要转 Java 的,这都不是事儿。
那 C++ 目前应用场景有哪些呢?
一句话,对性能或者执行效率要求比较高的应用,比如游戏引擎、infra、推荐引擎、存储等,当然也能拿来写业务(没错说的就是鹅厂),也有做 C++ 客户端开发的,主要是 MFC、QT 等。
说实话,像游戏引擎、infra这类都是门槛比较高的,并且招聘的数量也有限,一般人很难进,而且目前互联网公司的业务部门大多使用的是 Java、Go这类语言。
所以 C++ 的需求量是相比 Java、Go 这类少很多的,但是同时学习 C++ 也没 Java 那么多,所以相对来说竞争还没那么大,并且 C++ 学的不错,你同样可以去面阿里、美团这种 Java 技术栈的公司,大厂基本不会限制语言的。
腾讯T9职级对应技术能力:
C/C++Linux服务器开发/后台架构师
Linux、C/C++技术交流群:【960994558】整理了一些个人觉得比较好的学习书籍、大厂面试题、有趣的项目和热门技术教学视频资料共享在里面(包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等.),有需要的可以自行添加哦!~