C++软件工程师简历范文_第1页
C++软件工程师简历范文_第2页
C++软件工程师简历范文_第3页
C++软件工程师简历范文_第4页
C++软件工程师简历范文_第5页
已阅读5页,还剩25页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++软件工程师简历范文基本信息姓名:林泽宇性别:男年龄:28岁联系电话:1387294电子邮箱:linzeyu_cpp@163.com居住地:杭州市余杭区工作年限:5年期望薪资:45K-55K/14薪到岗时间:1个月内GitHub代码仓库:/linzeyu-cpp技术博客:/linzeyu_cpp(累计发表C++技术实践类文章127篇,总阅读量182.7万,累计粉丝4.2万人)LeetCode算法账号:/u/linzeyu-cpp(算法竞赛积分2142分,全国排名前0.3%,累计解决各类算法题目1287道,涵盖数组、链表、树、图、动态规划、贪心等全部常见题型)求职意向目标岗位:高级C++软件工程师/资深C++开发工程师目标行业方向:云原生分布式存储、智能驾驶/智能座舱车规级中间件、高性能实时音视频通信期望工作地点:杭州市/上海市工作性质:全职核心专业技能1.编程语言与标准库能力:熟练掌握C++98至C++20全版本标准特性,深入理解C++内存模型、对象生命周期管理、RAII资源管理机制、模板元编程、SFINAE、constexpr编译期求值、C++20协程、Concepts类型约束、Ranges范围库等核心底层原理;具备独立实现工业级基础组件的能力,曾自主实现智能指针、线程池、无锁队列、内存池、用户态协程调度器、定长内存allocator等通用组件,在多个生产项目中稳定运行;精通STL所有容器的底层实现逻辑与时间/空间复杂度特性,能够根据业务场景的访问模式、数据规模、并发要求针对性选择容器并做定制化优化,例如针对高频小对象分配场景替换容器默认allocator,将核心模块的内存碎片率从31%降低到4.2%;熟悉主流C++编码规范(GoogleC++StyleGuide、阿里C++编码规范、MISRAC++车规编码规范),具备10万行以上C++大型项目的代码重构、规范落地经验;熟练掌握Python、Shell、Lua三门辅助开发语言,能够独立编写自动化测试、工程构建、部署发布、性能分析脚本,累计通过脚本工具将团队日常研发效率提升32%以上;针对实时性要求极高的场景,能够灵活配置C++编译选项,按需关闭异常、RTTI等带来额外开销的特性,基于std::expected实现无异常的错误码返回机制,将栈展开带来的运行时开销降低至0。2.工程构建与工具链能力:精通跨平台构建工具CMake、Bazel,能够独立搭建支持Linux、Windows、QNX、Android多目标平台的大型工程编译框架,熟练处理跨平台编译过程中的符号冲突、ABI兼容、编译器特性差异、第三方库依赖管理等问题,曾主导搭建支持4个目标平台、200+模块的智能座舱中间件编译体系,将全量编译时间从47分钟缩短到12分钟;熟练掌握GCC、Clang、MSVC三大主流编译器的编译优化原理与选项配置,能够通过LTO链接时优化、PGO剖面引导优化、函数节区拆分等手段将核心模块的二进制执行效率提升18%-27%,二进制体积缩小22%;熟练掌握Git版本控制工具的高阶用法,包括子模块管理、交互式变基、冲突精准解决、GitHook流程配置,曾主导团队代码提交规范落地,通过pre-commit钩子自动触发静态检查、单元测试、代码格式校验,将代码评审阶段的低级逻辑问题占比从37%降低到7.8%;精通C++全场景问题排查工具链,静态检查层面熟练使用Clang-Tidy、Cppcheck定制代码检查规则,动态检测层面熟练使用Valgrind、ASAN、TSAN、UBSAN定位内存泄漏、野指针、数据竞争、未定义行为等疑难问题,调试层面熟练使用GDB、WinDbg、cgdb做core文件分析、断点调试、调用栈回溯,累计定位并修复线上coredump问题127个,其中包括3个潜伏超过2年、复现概率低于0.01%的偶现野指针问题。3.系统编程与性能优化能力:深入理解Linux内核核心机制,包括进程/线程调度原理、内存管理体系(页表映射、伙伴系统、slab/slub分配器、透明巨页、缺页异常处理流程)、主流文件系统实现(Ext4、XFS、Btrfs)、网络协议栈全流程(TCP/IP、UDP、QUIC协议实现、epoll/io_uring异步IO模型);精通多线程与高并发编程,熟悉pthread线程库、futex同步原语的底层实现,能够独立实现适配不同场景的无锁数据结构(无锁环形队列、无锁哈希表、无锁跳表),针对高并发场景做锁粒度拆分、锁优先级适配、per-thread数据隔离等优化,曾将某核心IO模块的锁竞争CPU开销占比从28%降低到2.7%;熟练掌握全链路性能调优工具链,CPU维度能够使用perf、VTune、gperftools做热点函数分析、缓存命中率统计、调用链火焰图生成,内存维度能够使用massif、heaptrack做内存分配热点、内存泄漏、碎片率分析,IO维度能够使用iostat、blktrace、fio做块层延迟、IO调度、磁盘吞吐分析,网络维度能够使用tcpdump、wireshark、bcc/ebpf做报文分析、内核协议栈延迟统计,能够从应用层、系统层、硬件层多维度定位性能瓶颈,累计完成17个核心生产模块的性能优化,平均性能提升幅度超过120%;熟悉NUMA多架构访问特性,能够通过NUMA核绑定、内存亲和性配置、本地内存池分配等手段,将跨NUMA节点访问导致的性能损耗降低62%以上;熟悉io_uring的核心实现与编程接口,能够基于io_uring实现网络、磁盘IO的全异步处理,相比传统epoll+libaio模型将单线程IO吞吐能力提升150%以上。4.分布式系统开发能力:深入理解分布式系统核心理论,包括CAP定理、BASE理论、Raft/Paxos一致性协议原理、分布式事务实现方案(2PC、TCC、Saga)、分布式锁、负载均衡、熔断降级、限流容错等核心机制;精通高性能RPC框架实现原理,曾基于Protobuf序列化+io_uring异步网络模型自研高性能RPC框架,单机部署场景下QPS达到28.3万,平均请求延迟42us,P99延迟低于110us;熟悉主流分布式存储系统架构,包括Ceph、MinIO、Redis,深入理解其数据分片、多副本同步、故障检测与恢复、数据压缩、EC纠删码等核心实现逻辑;熟悉云原生与容器化部署相关技术,能够基于K8s实现C++服务的容器化镜像制作、资源配额配置、可观测性体系搭建,通过Prometheus+Grafana实现核心业务指标的实时采集、监控与告警,将服务故障的平均发现时间从12分钟缩短到40秒。5.实时系统与嵌入式开发能力:熟悉QNX、LinuxRT实时操作系统的调度机制,深入理解实时系统的优先级反转、中断延迟、调度抖动、最坏执行时间(WCET)分析等核心问题,能够开发满足车规级功能安全要求(ISO26262ASIL-B等级)的C++模块,将模块运行时的最坏调度抖动控制在10us以内;熟悉车载以太网通信协议(SOME/IP、DDS),能够基于DDS实现低延迟、高可靠的车端跨进程/跨核通信,通信端到端延迟控制在50us以内,消息丢包率低于10^-9;熟悉交叉编译、板端调试流程,能够通过JTAG、gdbserver实现嵌入式板卡上程序的远程调试、coredump分析与问题定位。6.音视频开发能力:熟悉H.264/H.265视频编解码原理、AAC音频编解码标准、RTP/RTCP/RTMP/WebRTC流媒体传输协议,能够基于FFmpeg、WebRTC实现低延迟音视频传输模块,端到端传输延迟控制在200ms以内;熟悉音视频同步、抖动缓冲、NACK/FEC丢包恢复、GCC带宽估计等核心算法,曾将弱网环境下(30%随机丢包、200ms网络抖动)的音视频卡顿率从21%降低到1.2%。工作经历2019.07-2021.08阿里云智能-存储产品线C++软件开发工程师(P5晋升至P6)工作职责:负责分布式块存储EBS产品核心IO路径开发、性能优化、可观测性体系搭建,参与ESSD系列云盘的架构迭代与性能攻坚,支撑双11等核心业务场景的存储稳定性与性能需求;参与分布式存储EC纠删码模块、压缩模块的重构优化,降低存储成本与性能开销;主导多个核心模块的代码质量治理,推动C++编码规范落地,提升团队研发效率。核心项目经历1.ESSDPL3云盘高性能IO路径优化项目项目背景:2020年阿里云启动ESSDPL3云盘研发项目,目标是单盘提供120万IOPS、百微秒级延迟的块存储能力,对标AWSio2BlockExpress产品,满足核心交易数据库、AI训练集群等高性能场景的存储需求。项目启动初期,现有IO路径架构下单盘最大IOPS仅为50万,平均延迟110us,P99延迟超过320us,存在多处性能瓶颈亟待突破。个人职责:作为核心开发人员,负责IO路径零拷贝改造、io_uring异步IO接入、无锁队列替换、NUMA亲和性优化四个核心模块的设计、编码、测试与上线工作。核心技术难点与解决方案:一是传统IO路径从计算节点到存储节点经过3次用户态/内核态切换、4次内存拷贝,单IO路径的CPU开销占比达到47%,成为吞吐瓶颈。针对该问题,团队引入SPDK用户态存储栈绕过内核块层,我负责实现自适应轮询机制,当IO队列深度低于2时自动切换到中断模式降低CPU占用,当队列深度高于8时切换到轮询模式降低延迟,相比SPDK默认的纯轮询模式在保持同等延迟水平的前提下将CPU占用率降低58%;二是原有IO提交路径采用基于std::mutex的多生产者多消费者队列,在32核高并发场景下锁竞争导致的CPU开销占比28%,严重影响并发性能。我基于CAS原子指令实现了无锁环形队列,底层采用连续数组存储,头尾指针使用std::atomic<uint64_t>类型,采用memory_order_acquire/release内存序保证内存可见性,避免全内存屏障的开销,同时对头指针、尾指针、数据数组做64字节缓存行对齐,彻底解决伪共享问题;此外为每个CPU核心绑定独立的IO提交队列,避免跨核共享内存访问,优化后队列的单核算力达到每秒1.2亿次入队出队操作,相比原加锁队列性能提升17倍,锁竞争开销占比降至2.7%;三是原有内存分配逻辑未考虑NUMA亲和性,30%的IO请求存在跨NUMA节点内存访问,单次跨NUMA访问比本地访问延迟高80ns,同时透明巨页的动态合并与分裂导致P99延迟波动超过30%。我实现了NUMA感知的内存池,按NUMA节点划分独立的内存分区,每个IO线程绑定到固定NUMA节点的核心上,内存分配优先从本地NUMA节点申请,内存块大小按常见IO块大小分档管理,分配延迟稳定在10ns左右,比系统malloc快25倍;同时通过madvise系统调用在系统启动阶段主动申请巨页,关闭对应内存区域的khugepaged自动合并,避免运行时巨页分裂导致的延迟毛刺;四是原有异步IO采用libaio接口,单线程最大IOPS仅17万,且存在提交系统调用开销高、完成事件通知延迟大的问题。我主导接入内核5.10版本的io_uring接口,采用SQPOLL内核轮询模式,将IO提交与完成路径的系统调用开销降至0,同时将SQPOLL线程绑定到与IO提交线程同NUMA节点的核心上,设置10ms的空闲轮询超时平衡CPU占用与延迟,优化后单线程IOPS提升到42万。项目成果:项目2021年3月正式上线,ESSDPL3云盘单盘最大IOPS达到120万,平均IO延迟从110us降低到42us,P99延迟从320us降低到95us,P99.99延迟从210us降低到87us,整体性能超过同期AWSio2BlockExpress产品18%,支撑了2021年阿里云双11核心交易数据库的存储需求,上线一年内为存储产品线创造营收超过12亿元;项目相关优化成果申请3项国家技术发明专利,其中《一种基于NUMA亲和性的分布式存储IO调度方法》《自适应轮询的用户态存储栈CPU优化方法》已获得授权。2.块存储数据冗余模块重构与性能优化项目项目背景:原有分布式块存储的EC纠删码模块基于内核态实现,编码性能低,单核心编码速度仅1.2GB/s,且故障数据重构过程中重构流与前端业务IO流抢占资源,导致前端业务IO延迟升高40%以上;原有压缩模块采用Zlib默认算法,压缩率低、速度慢,推高了存储硬件成本。项目目标是将EC编码性能提升100%,单块4TB云盘故障重构时间缩短50%,重构期间前端业务IO性能影响控制在5%以内,存储成本降低20%以上。个人职责:负责EC编码算法的高性能实现、重构流QoS调度机制、数据压缩模块的优化工作。核心技术难点与解决方案:一是原有EC纠删码基于通用CPU指令集实现RS编码,未利用向量化指令加速,编码性能无法满足高吞吐场景需求。我基于IntelISA-L库对编码逻辑做指令集优化,针对AVX2、AVX-512指令集实现编码过程的向量化计算,针对不同数据块长度做分支选择最优编码函数,同时对编码过程中的内存访问做硬件预取优化,降低缓存miss率,优化后单核心EC编码速度达到6.8GB/s,相比原有实现性能提升467%,编码CPU占用率降低62%;二是数据重构过程中重构流与前端业务流共享带宽、CPU资源,无差别调度下重构时前端业务IO延迟波动剧烈。我基于PID控制算法实现了自适应QoS调度机制,实时采集前端业务IO的平均延迟、队列深度、CPU占用率指标,动态调整重构流的发送速率与CPU配额,当前端业务IO延迟超过50us阈值时自动降低重构流优先级与速率,当前端业务空闲时提升重构速率,在保证重构效率的同时将对前端业务的影响降到最低;三是原有Zlib压缩算法在块存储典型的4KB-16KBIO块场景下压缩率仅2.3:1,单核心压缩速度300MB/s,成为性能瓶颈。我引入Zstd压缩算法替换Zlib,针对块存储典型IO块大小做压缩等级参数调优,同时实现压缩任务异步卸载机制,将压缩任务提交到专用压缩线程池处理,避免阻塞核心IO路径。项目成果:项目2021年1月上线后,单节点数据重构速度从80MB/s提升到320MB/s,单块4TB云盘的故障重构时间从14.5小时缩短到3.6小时,重构期间前端业务IO延迟影响从40%降低到3.8%;压缩算法优化后压缩率提升到3.1:1,单核心压缩速度达到1.8GB/s,压缩路径CPU开销占比从18%降低到4%,全年节省存储硬件成本超过2.3亿元;提交的EC编码AVX-512优化补丁被Ceph社区合入Pacific主线版本,累计向Ceph社区提交PR17个、合入代码1200余行,将开源Ceph版本的EC编码性能提升32%。3.分布式块存储可观测性体系搭建项目项目背景:原有块存储系统的监控指标粒度仅到节点级,无法追踪单个IO请求在全链路各阶段的延迟,线上性能问题平均定位时间超过4小时,客户投诉率高,无法支撑99.995%的服务SLA目标。个人职责:负责核心IO路径低开销Trace埋点、eBPF内核指标采集工具、动态阈值告警模块的设计与实现。核心技术难点与解决方案:一是传统同步日志埋点方式会在IO路径上增加2-3us/点的延迟,高并发下会导致IO性能下降15%以上,无法实现全链路精细化埋点。我设计实现了低开销环形Trace缓冲区,采用无锁写入方式将IO各阶段的时间戳记录到IO请求上下文结构中,仅当IO请求总延迟超过100us阈值时才将Trace数据输出到日志,正常IO请求无额外日志开销,实测单点埋点带来的额外延迟低于0.3us,对业务性能的影响小于0.5%;二是内核态块层、驱动层的延迟指标无法通过用户态程序直接采集,传统采集方式需要修改内核代码,部署成本高、风险大。我基于eBPF技术开发内核态指标采集工具,通过kprobe、tracepoint挂载内核块层、驱动层的核心函数,采集IO排队延迟、驱动处理延迟、软中断处理时间等细粒度指标,无需修改内核代码,采集过程的CPU开销低于1%;三是原有固定阈值告警规则无法适配不同业务场景的负载特征,告警误报率超过40%,值班人员负担重。我基于3-sigma统计算法实现动态阈值告警,基于过去7天的历史指标数据训练动态基线,当实时指标偏离基线3个标准差时触发告警,同时关联同节点的CPU、内存、网络、IO指标做根因自动分析,给出问题定位与优化建议。项目成果:项目2020年11月上线后,线上性能问题平均定位时间从4.2小时缩短到18分钟,告警误报率从42%降低到7%,客户关于云盘性能问题的投诉量下降68%,支撑块存储服务达成99.995%的SLA目标,相关可观测性组件在阿里云存储产品线12个核心产品中推广使用。2021.09-至今华为智能汽车解决方案BU-智能座舱平台部高级C++软件工程师(15级晋升至16级)工作职责:负责智能座舱高性能通信中间件、多模融合感知引擎的核心模块开发,主导座舱平台C++代码质量与性能优化专项,支撑鸿蒙座舱系统的性能提升与车规级功能安全认证,确保座舱软件在高通8155/8295平台上的流畅、稳定运行。核心项目经历1.车规级高性能DDS通信中间件开发项目项目背景:智能座舱域控制器采用多芯片异构架构(高通8155/8295SoC+多个区域控制器MCU),原有通信机制基于AndroidBinder+CAN总线实现,跨进程平均通信延迟2ms,跨核通信延迟抖动大,无法满足辅助驾驶信号传输、AR-HUD实时渲染、多屏互动等低延迟场景的需求,且不满足ISO26262ASIL-B功能安全要求。项目目标是自研一套高可靠、低延迟、满足车规功能安全要求的DDS通信中间件,实现跨进程/跨核/跨芯片通信端到端延迟低于100us,最坏调度抖动低于10us,通过ASIL-B功能安全认证。个人职责:作为核心模块负责人,承担中间件内存管理子系统、二进制序列化模块、无锁通信通道、实时调度机制的设计、编码、测试与功能安全认证工作。核心技术难点与解决方案:一是原有通信中间件采用运行时动态内存分配机制,高负载下内存碎片率高,且内存分配延迟波动大,最坏情况下分配延迟超过1ms,无法满足实时系统的确定性要求。我设计实现了静态内存池机制,系统启动阶段根据用户配置的通信Topic、消息大小、队列深度预分配所有运行时需要的内存,运行过程中不做任何动态内存申请与释放,内存分配/释放的时间复杂度为O(1),分配延迟稳定在100ns以内,从根源上避免运行时内存碎片;同时针对不同安全等级的消息实现内存分区隔离,ASIL-B等级的安全消息使用独立的受ECC保护的内存区域,避免非安全模块的内存越界操作影响安全功能。二是原有JSON序列化机制效率低,1KB消息的序列化+反序列化延迟超过20us,序列化后数据体积大,占用车载总线带宽。我设计实现了基于IDL的零拷贝二进制序列化协议,对于基本数据类型直接按照内存布局序列化,对于字符串、数组等变长类型采用相对偏移量方式记录位置,避免序列化过程中的内存拷贝,1KB消息的序列化/反序列化总延迟低于2us,相比JSON序列化性能提升10倍以上,序列化后数据体积缩小60%;三是原有UnixDomainSocket跨进程通信需要两次系统调用、两次内存拷贝,高并发下存在套接字锁竞争,延迟高。我基于共享内存实现了零拷贝跨进程通信通道,通信对端将同一块物理内存映射到各自的进程地址空间,通过无锁环形队列传递消息,发送端直接将消息写入共享内存,接收端直接从共享内存读取消息,完全避免系统调用与内存拷贝;实现过程中解决了不同进程共享内存虚拟地址不一致的问题,所有内部指针均替换为相对于共享内存基地址的偏移量访问,同时增加魔数校验、版本号校验避免版本不匹配导致的内存访问错误;此外实现了基于优先级的消息抢占调度机制,高优先级的安全消息(如刹车信号、仪表告警)可以绕过队列中的低优先级消息优先发送,确保安全消息的延迟不受影响。四是实时调度过程中存在优先级反转问题,低优先级线程持有锁会导致高优先级线程阻塞,最坏情况下阻塞时间超过5ms,导致实时任务超时。我实现了优先级继承机制,当高优先级线程等待低优先级线程持有的锁时,临时将低优先级线程的优先级提升到与高优先级线程一致,待锁释放后恢复原有优先级,将优先级反转导致的最坏阻塞时间从5ms降低到20us以内;同时将实时通信任务绑定到独立的实时CPU核心上,采用SCHED_FIFO调度策略、99级最高优先级,关闭实时核上的非必要中断与内核线程调度,完全避免非实时任务对实时通信任务的干扰;此外在实时路径上增加阻塞检测机制,若实时任务阻塞时间超过10us则打印告警信息,辅助开发人员及时发现不符合实时要求的代码逻辑。项目成果:自研通信中间件于2022年Q2正式量产搭载在问界M5、M7、M9全系列车型的座舱域控制器上,跨进程端到端平均通信延迟37us,P99.99延迟82us,最坏执行时间抖动控制在8us以内,通信消息丢包率低于10^-12,顺利通过TUV莱茵的ISO26262ASIL-B功能安全认证,支撑了座舱多屏互动、AR-HUD实时渲染、辅助驾驶信号透传等217个座舱业务场景,相比原有AndroidBinder通信机制性能提升53倍,相关技术累计申请发明专利7项,成为鸿蒙座舱4.0平台的核心基础组件。2.座舱多模融合感知引擎开发项目项目背景:原有座舱交互系统的语音、视觉、触控感知模块由不同供应商独立开发,模块间数据不互通,交互数据流转需要多次内存拷贝,端到端交互延迟平均1.2s,且多传感器时间戳不同步导致融合识别准确率仅82%,语音误触发率达2.3%,用户体验差。项目目标是搭建统一的多模融合感知引擎,实现多源感知数据低延迟流转,人机交互端到端延迟低于300ms,误触发率低于0.1%,多模识别准确率超过98%。个人职责:负责感知引擎高性能流水线框架、零拷贝数据流转模块、实时推理调度器的设计与实现。核心技术难点与解决方案:一是原有感知模块间的数据流转采用内存拷贝方式,8路摄像头+4路麦克风的传感器数据从驱动层流转到各算法模块需要经过6-8次内存拷贝,内存拷贝带来的CPU占用率达42%,数据流转延迟超过200ms。我实现了基于共享内存的零拷贝数据帧框架,所有传感器采集的音视频帧统一写入全局共享内存池,模块间传递包含共享内存偏移、数据格式、时间戳的帧句柄,不传递实际帧数据,彻底消除跨模块内存拷贝开销;帧引用采用引用计数管理,当所有模块都处理完某帧数据后自动回收内存,优化后内存拷贝带来的CPU占用率从42%降到3%,数据流转延迟从200ms降到12us。二是不同感知推理任务的实时性要求差异大,驾驶员疲劳检测等安全类任务要求延迟低于100ms,手势识别等娱乐类任务要求延迟低于500ms,原有FIFO调度机制下高优先级任务经常被低优先级任务阻塞,关键任务超时率达17%。我实现了基于截止时间优先(EDF)的推理任务调度器,根据每个任务的截止时间、优先级动态分配CPU、GPU、NPU计算资源,高优先级任务可以抢占低优先级任务的计算资源,确保关键任务的延迟满足要求;同时实现推理任务动态批处理机制,当多个同类型推理任务到达时自动合并为批次提交到NPU执行,将NPU的平均利用率从35%提升到78%。三是不同传感器的时间戳存在偏差,摄像头与麦克风的时间戳最大偏差达50ms,导致语音、视觉事件无法准确匹配,融合识别准确率低。我实现了基于硬件PTP协议的多传感器时间同步机制,通过域控制器的硬件时钟给所有连接的传感器发送高精度同步信号,将各传感器的时间戳偏差校正到1ms以内;同时设计实现时间戳滑动窗口融合算法,对窗口内的语音、视觉、触控事件做时间对齐与特征融合,将多模融合识别准确率从82%提升到98.7%。项目成果:多模融合感知引擎2023年Q1随鸿蒙座舱4.0正式量产上车,人机交互端到端平均延迟247ms,比行业平均水平快60%,语音误触发率从2.3%降低到0.08%,支持可见即可说、手势控制、视线追踪、声源定位等26项创新交互功能,用户座舱交互满意度评分从4.2分(满分5分)提升到4.8分,成为鸿蒙座舱产品核心竞争力功能点。3.座舱平台C++代码质量与性能优化专项项目背景:智能座舱平台累计C++代码量超过2000万行,随着版本快速迭代,代码复杂度持续升高,内存泄漏、野指针导致的coredump问题频发,系统冷启动时间长达18s,开机后内存占用达6.2GB,8GB内存配置车型后台仅能保留2-3个应用,用户关于开机慢、车机卡顿的投诉占比达42%。项目目标是将系统冷启动时间缩短到10s以内,开机内存占用降低30%,线上coredump发生率降低80%。个人职责:作为专项技术负责人,主导C++编码规范落地、静态检查规则定制、系统冷启动优化、内存占用优化全流程工作,带领8人小组完成专项攻坚。核心技术难点与解决方案:一是团队涉及300余名C++开发人员,代码风格不统一,野指针、内存泄漏、未初始化变量、对象切片等常见编码错误导致的线上coredump占比达62%,代码评审阶段难以覆盖所有问题。我基于Clang-Tidy定制了符合MISRAC++车规要求的静态检查规则集,新增27条定制检查规则(包括禁止使用裸指针管理堆内存、禁止实时路径调用动态内存分配与阻塞系统调用、必须初始化所有成员变量等),将规则检查集成到CI流水线中,代码提交时自动触发检查,不满足规则的代码无法合入;同时组织12场C++编码规范与常见问题培训,覆盖所有C++开发人员,从流程与能力两个层面减少编码错误。二是系统冷启动阶段87个C++服务顺序启动,服务间依赖关系复杂,启动过程中存在大量同步IO操作、动态库重定位开销,导致冷启动时间长。我带领团队梳理所有服务的依赖关系生成拓扑图,将无依赖关系的服务并行启动,将非核心的娱乐类服务延后到系统启动完成后加载;采用prelink预链接技术减少动态库加载时的重定位开销,将启动过程中的同步IO替换为io_uring异步提交,配合readahead机制提前将启动所需文件预读到页缓存;实现服务懒加载机制,未被调用的服务不提前启动,仅在首次被调用时加载运行。三是系统运行中内存占用过高,存在大量内存泄漏、STL容器空闲内存不归还、大内存低利用率等问题。我带领团队基于ASAN、heaptrack对所有C++服务做全量内存检测,累计定位并修复内存泄漏点327个,涉及泄漏内存1.2GB;针对STL容器默认不主动归还空闲内存的问题,定制实现自动内存回收的allocator,当容器空闲内存占比超过阈值时自动归还内存给系统;对启动后占用内存大但访问频率低的模块,通过madvise标记内存页为可回收,系统内存不足时自动换出。项目成果:专项历时6个月完成全部优化目标,系统冷启动时间从18s降低到7.2s,开机后内存占用从6.2GB降低到3.4GB(降幅45%),8GB内存配置车型可后台保留8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论