草庐IT

备战23秋招,c/c++Linux后端开发岗(简历/技术面)分享

ytttsam 2024-02-29 原文

目录

前言

一、市场环境

1.裁员的一年

2.面试环境

二、面试准备

1.招聘信息来源获取

2.简历准备

三、技术提升

c/c++Linux服务器开发技术学习路径

一、精进基石

二、高性能网络设计

三、基础组件设计

四、中间件开发

五、开源框架

六、云原生

七、性能分析

八、分布式架构

九、项目实战

如何系统学习c/c++Linux服务器端技术内容?

成果数据展现

优势:

学习过程的心得总结:


23秋招已经开始!作为对应届生求职最友好的时节,今年的提前批很多大厂并没有放出过多的出岗位,而是选择秋招进行招聘。后续的补录以及春招,竞争将会更加激烈!本文会从四个方面,和大家一起探讨23秋招,关于软件开发岗位该如何准备及拿到更多的offer。

1.市场环境

2.面试准备

3.技术提升

一、市场环境

1.裁员的一年

从今年上半年的大家都可以看到,无论是中小厂还是一线的互联网大厂,通通都在裁员。当然对于拥有校招buff的应届生而言,感受还并未很强烈。但是如果校招并未获取offer,最后只能以社招的资格应聘时,我们初出茅庐的资历就更显的残酷,所以一定要利用好自己的校招应届生身份。

                                                 图片来源:网经社(侵删)

2.面试环境

今年可以尤为感受到,岗位对比之前是有减少的。除了985/211及卷王外,想体验一人10+offer的快乐,就不会那么容易了。现在熟背八股文之余,对于场景实现,原理分析可能需要准备的更加充分,以备竞争加剧。

二、面试准备

1.招聘信息来源获取

秋招的第一步,你首先要知道公司的招聘时间点。可能部分大学在开学后会有校内的企业宣讲会,但这并不适用于所有大学,所以我们一定要提前知道企业的招聘时间与地点。对于大多已经有目标企业的同学来说,关注对应的官网其实就已足够。想海投的同学就可以选择牛客网或者一些做校招时间整理的公众号,都能都获取其中信息。

整体的招聘节奏:

  • 提前批(适合十分优秀的应届生)
  • 秋招(岗位最多,拿offer的黄金期)
  • 秋招补录(存在秋招钻空子的可能)
  • 春招(岗位少,应聘同学中不乏考研失败的同学)
  • 春招补录(岗位极少)

2.简历准备

当我们知晓招聘时间之后,就要着手准备自己投递的简历了。很多同学觉得简历没那么重要,毕竟面试时会有1对1的输出时间,可以展现自己的技术实力。但其实做为一个校招生而言,简历很多时候也能展现出你的逻辑能力和学习习惯。

简历必备四要素:

  • 个人简介
  • 专业技能
  • 项目经历
  • 自我评价

a.个人简介

主要包含基本信息,教学背景、获得荣誉三项,描述简单明了。不要去描述你的爱好特长。

推荐格式↓:

b.专业技能

什么是不好的技能描述?

没有对掌握技能进行较为具体的描述,而采用各种对技能能力的形容词。(丰富的,良好的)这样的技能描述其实会显得很空洞,面试官看到之后也不知从何下嘴去问你更为具体的内容。所以有时候就会导致你写的很泛,面试官问的也很泛,更会触及到你的知识盲区,加速面试的结束时间。

这里分享四份拿到腾讯c++后台开发offer的简历,其中关于专业技能描述的部分:

c.项目经历

对于校招生而言,对于项目往往是比较头大的。一部分学校跑的项目很老很小,很多时候和岗位对接的方向关连并不大,其次就是在实习中接触的项目,自己能够了解的不多,不成体系。所以在项目描述这一块都是虚实交互,整个项目描述的很大,而并不对自己参与部分做详细阐述。这样的意义并不大。

为什么需要在简历中要有项目经历这一块,其核心不是去看你做的项目有多大,而是去看你在团队协作中有没有去体现你的价值,遇到的问题,有没有通过自己的研究去解决,看你的解决问题能力。

d.自我评价

自我评价的结果是一定要有展现量的。比如说:我是一个和善,善于沟通表达,努力上进的人。如何去体现?

换一种方式:

  • 我对于技术比较爱钻研,读书期间看过nginx源码,redis源码,Linux内核等等
  • 我善于总结与归纳,之前讲自己学过的技术内容,四年时间在某某平台上整理了2000+的技术博客。

既能体现出你的个性方面的特色,又能有成果数据给到面试官,这样无疑是加分的。

关于简历书写,面试准备还需要加强了解和突破的同学,建议你可以去看看零声的秋招春招提前批大厂面试指导 简历梳理 offer选择 技术方向指导教程 ,原价199。

加Q:936204305 备注【秋招+技术方向(如:秋招c++)】免费领取


三、技术提升

1.c/c++Linux服务器开发不同于Java,没有固定的业务流程和技术方向。在Linux下的服务器端开发,大家可以选择的就业方向一样有很多,没有模板可言。所以构建一个全面的技术体系就显得尤为重要。

2.针对于刚毕业以及工作1-3年的工程师而言,在这样一个年限下,靠自己去梳理出完善的技术体系,难度非常大,如果有这样一个学习路径,能够更快更全面的帮助工程师去构建自己的技术体系。

c/c++Linux服务器开发技术学习路径

详细版获取途径,备注【CSDN】

一、精进基石

1.数据结构与算法

  • 随处可见的红黑树
  • 磁盘存储链式的B树与B+树
  • 海量数据去重的Hash与BloomFilter,bitmap

2.设计模式

  • 创建型设计模式
  • 结构型设计模式

3.c++新特性

  • stl容器,智能指针,正则表达式
  • 新特性的线程,协程,原子操作,lamda表达式

4.Linux工程管理

  • Makefile/cmake/configure
  • 分布式版本控制git
  • Linux系统运行时参数命令

二、高性能网络设计

1.网络编程

  • 网络IO与select,poll,epoll
  • reactor的原理与实现
  • http/https服务器的实现
  • websocket协议与服务器实现

2.网络原理

  • 服务器百万并发实现
  • redis,memcached,nginx网络组件
  • Posix API与网络协议栈
  • UDP的可靠传输协议QUIC

3.协程框架NtyCo的实现

  • 协程设计原理与汇编实现
  • 协程调度器实现与性能测试

4.用户态协议栈NtyTcp的实现

  • 用户态协议栈设计实现
  • tcp/ip定时器与滑动窗口
  • 手把手设计实现epoll

5.高性能异步io机制io_uring

  • 与epoll媲美的io_uring
  • io_uring的使用场景

三、基础组件设计

1.池式组件

  • 手写线程池与性能分析
  • 内存池的实现与场景分析
  • 异步请求池的实现
  • mysql连接池的实现

2.高性能组件

  • 原子操作CAS与锁实现
  • 无锁消息队列实现RingBuffer
  • 定时器方案红黑树,时间轮,最小堆
  • 手写死锁检测组件
  • 手写内存泄漏检测组件
  • 手把手实现分布式锁

3.开源组件

  • Libevent/Libev框架实战的那些坑
  • 异步日志方案log4cpp
  • 应用层协议设计ProtoBuf/Thrift

四、中间件开发

1.redis

  • redis相关命令详解及其原理
  • redis协议与异步方式
  • 存储原理与数据模型
  • 主从同步与对象模型

2.MySQL

  • SQL语句,索引,视图,存储过程,触发器
  • MySQL索引原理以及SQL优化
  • MySQL事务原理分析
  • MySQL缓存策略

3.Kafka

  • Kafka使用场景与设计原理
  • Kafka存储机制

4.gRPC

  • gRPC的内部组件关联
  • 基于http2的gRPC通信协议

5.nginx

  • nginx反向代理与系统参数配置conf原理
  • nginx过滤器模块实现
  • nginx Handler模块实现

五、开源框架

1.skynet

  • skynet设计原理
  • sky net网络层封装以及lua/c接口编程
  • sky net重要组件以及手撕游戏项目

2.分布式API网关

  • 高性能web网关Openresty
  • Kong动态负载均衡与服务发现

3.DPDK

  • DPDK环境与testpmd/I3fwd/skeletion
  • DPDK的用户态协议栈
  • 千万级流量并发的dns处理
  • 高性能数据处理框架vpp
  • DPDK的虚拟交换机框架OVS

4.高性能计算CUDA

  • gpu并行计算cuda的开发流程
  • 音视频编解码中的并行计算

六、云原生

1.Docker

  • Docker风光下的内核功能
  • Docker容器管理与镜像操作
  • Docker网络管理
  • Docker云与容器编排

2.Kubernetes

  • K8S环境搭建
  • Pod与Service的用法
  • K8S集群管理
  • K8S二次开发与K8S API

七、性能分析

1.性能与测试工具

  • 测试框架gtest以及内存泄漏检测
  • 性能工具与性能分析
  • 火焰图的生成原理与构建方式

2.观测技术bpf与ebpf

  • 内核bpf的实现原理
  • bpf对内核功能的观测

3.内核源码机制

  • 进程调度机制
  • 内核内存管理运行机制
  • 网卡nic与网络协议栈的关系
  • 文件系统组件

八、分布式架构

1.RocksDB

  • 不一样的kv存储RocksDB的使用场景
  • RocksDB的特殊操作

2.云原生分布式数据库TiDB

  • TiDB存储引擎的原理
  • TiDB集群方案与Replication的原理

3.分布式服务

  • 内核级支持的分布式存储Ceph
  • 注册服务中心Etcd

九、项目实战

1.图床共享云存储

  • fastdfs架构分析和配置
  • fastdfs存储原理
  • 分布式fastdfs存储集群部署
  • 高负载nginx/fastcgi
  • 文件传输和接口设计
  • 产品上云公网发布/测试用例

2.微服务即时通讯

  • IM即时通讯项目框架分析和部署
  • IM消息服务器/文件传输服务器
  • 消息服务器/路由服务器
  • 数据库代理服务器设计
  • 文件服务器和docker部署
  • 产品上云公网发布/公网测试上线

如何系统学习c/c++Linux服务器端技术内容?

  • 内容涵盖上述八大技术模块及两大线上项目实操
  • 98次直播,时间持续8个半月
  • 涉及语言:45%的C,25%的c++,20%的go,5%的lua,5%的其他语言
  • 简历梳理,模拟面试,offer选择
  • 腾讯kt薪选,腾讯认证的大厂标准

成果数据展现

学习优势:

1.简历梳理技术点凸显项目技术梳理

2.模拟面试技术表述

3.薪资谈判福利争取

4.offer选择职业规划技术前景

往期学习过程的心得总结:

1.学习要有主动性。无论是开始的自学,还是后面的系统学习,学习的主观能动性一定要有,特别是报班学习之后,不要觉得万事有老师,外部的辅导条件能够让你有更好的学习效率和氛围,但是最终需要掌握技能的还是你自己的,所以学习的过程不要懈怠。

2.学完技术内容之后,要形成自己的技术栈体系。我在学完之后,就根据我自己的技术内容花了三天时间整理一份c/c++后端开发需要掌握的技术体系路线图,来帮助自己梳理自己所学的技术点。

3.善于总结自己的学习过程。每当自己学完一个小块的知识点之后,最好是将自己对它的理解整理成博客文章,这样既能自我梳理自己的学习成果,又能作为自己在面试工作时向面试官展现的一个亮点。

4.一定要复盘自己的面试过程。在我学习之后的面试过程,并不是一帆风顺。但是我在老师的建议下,不管成功的还是失败的面试过程,场场复盘!找出自己回答的不好的地方做备注修改,这样一次次下来,对于面试,我也是越来越胸有成竹。

5.学习方式,不管黑猫白猫,抓住老鼠的就是好猫。对于也想从事或是转行到c/c++后端开发岗的兄弟,如果考虑报班培训的话,可以推荐大家了解一下我之前学习过的教程,整个路线体系对标的是腾讯的T9级别。

本文技术学习路线来源于零声的c/c++Linux服务器高级架构教程学习路线,详细介绍了解途径

正在跳转 备注【666】

有关备战23秋招,c/c++Linux后端开发岗(简历/技术面)分享的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  6. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  9. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  10. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

随机推荐