ID:420781

理论灰色

系统开发工程师

  • 公司信息:
  • 北京中科海迅科技股份有限公司
  • 工作经验:
  • 1年
  • 兼职日薪:
  • 500元/8小时
  • 兼职时间:
  • 下班后
  • 所在区域:
  • 北京
  • 海淀

技术能力

编程语言与核心基础
Python:熟悉基于Python的AI开发,掌握LangChain、RAG、Agent相关技术,善于利用Agent辅助开发。

C/C++:掌握C++11标准,理解面向对象三大特性(封装、继承、多态)、函数重载、智能指针等;熟悉STL主要容器(vector、list、map等)及底层实现原理。

数据结构:熟练掌握顺序表、链表、栈、队列、二叉树、堆、哈希表、红黑树、图等常用结构。

算法:熟悉希尔排序、堆排序、快速排序、归并排序等经典排序算法。

Linux系统编程
环境与工具:熟练使用Linux常用命令,以及vim、git、gdb、Makefile等开发调试工具。

核心概念:理解程序地址空间、进程控制、基础I/O、进程间通信(IPC)、进程信号等。

并发与同步:熟悉Linux下的同步互斥机制(互斥锁、条件变量、读写锁等),掌握生产者-消费者模型、多线程编程、线程安全及线程池技术。

Linux网络编程
基础编程:掌握Socket套接字编程,了解select、poll、epoll三种I/O多路复用模型。

TCP/IP协议:熟悉TCP三次握手与四次挥手、流量控制、拥塞控制;了解OSI七层模型及TCP/IP四层体系结构,熟悉TCP、UDP等常见协议。

数据库与中间件
数据库:熟悉PostgreSQL,具备数据库写入与基本操作能力。

消息队列:了解Kafka的基本使用。

其他中间件:了解RCF(远程调用框架)、nanomsg、mDNS等服务发现与通信技术。

嵌入式开发
STM32平台:基于STM32VET6开发智能扎气球小车(超声波、红外寻迹模块);基于STM32C8T6实现激光追踪(视觉、PID算法、舵机云台控制)。

网络设备与配置
了解华为交换机、路由器的基本配置。

项目经验

项目经验
一、水声声呐数据采集软件(实习项目)
公司:北京中科海迅科技股份有限公司
岗位:C++研发工程师
时间:2025年1月 – 2025年6月

项目简介
参与水声声呐相关数据采集软件的研发,该系统涵盖数据采集、状态管理、任务管理、数据存储等多个模块。我主要负责任务管理模块中项目整体执行逻辑的开发,具体工作包括:

负载均衡与任务调度:设计并实现任务分配策略,保障多任务下系统资源的合理利用。

数据采集与心跳监控:实现数据采集任务的状态统计与心跳检测,及时发现异常任务。

任务故障转移:设计故障转移机制,当节点或任务异常时自动迁移任务,提升系统可靠性。

数据库写入:将任务信息持久化到 PostgreSQL 数据库。

网络与服务发现:使用 RCF(远程调用框架)、nanomsg、mDNS 实现模块间通信与服务自动发现。

消息队列集成:利用 Kafka 实现任务状态的高吞吐传输。

并发与设计模式:采用单例模式、多线程技术保证模块的高效与安全。

网络设备配置:了解并参与华为交换机、路由器的基本配置,保障网络环境稳定。

涉及技术
RCF、Kafka、PostgreSQL、nanomsg、mDNS、单例模式、多线程、华为交换机与路由器配置。

二、无锁内存池(个人项目)
项目简介
参考 tcmalloc 的设计思想,实现了一个适用于多线程环境的高并发内存池,通过三层缓存结构显著降低多线程频繁申请内存时的锁竞争问题。

Thread Cache(线程缓存)
每个线程独享,用于分配小于 256KB 的内存。线程从此层申请内存无需加锁,实现无锁化分配,提升并发性能。

Central Cache(中心缓存)
为 Thread Cache 分配内存,并在适当时机回收 Thread Cache 中的空闲对象。通过桶锁(细粒度锁)控制竞争,避免单个线程占用过多内存,实现多线程间的内存均衡调度。

Page Cache(页缓存)
从系统以页为单位分配大块内存,并切割为固定大小的小块提供给 Central Cache。回收 Central Cache 中满足条件的 Span 对象,并合并相邻的物理页以形成更大的连续内存,有效缓解内存碎片问题。

技术亮点

无锁设计(Thread Cache 层)

细粒度锁(桶锁)

内存页合并与碎片管理

三、负载均衡在线OJ(个人项目)
项目简介
采用 MVC 架构,实现了一个支持负载均衡的在线编程判题系统。用户可通过浏览器访问题目列表,在线编写并提交代码,后端自动分配服务器资源,在保证负载均衡的前提下提供高效的代码编译与运行环境。

核心模块

comm(公共模块)
提供通用工具类,包括文件名处理、时间获取、日志记录、字符串处理等基础功能。

compile_server(编译运行模块)
接收代码文件,调用编译器进行编译并执行,返回运行结果。

oj_server(核心服务模块)
负责题目列表获取、题目详情展示、在线编辑界面、负载均衡调度、判题逻辑以及网页渲染。网页前端使用了 HTML/CSS/JS 及 Ace 在线编辑器,后端通过 cpp-httplib 提供 HTTP 服务,并使用 ctemplate 进行动态页面渲染。

负载均衡设计
当用户提交代码时,oj_server 根据后端各编译服务器的实时负载情况(如任务队列长度、响应时间等),动态选择最优节点执行判题任务,确保整体服务的高吞吐与低延迟。

涉及技术
C++ STL、Boost(字符串切割)、cpp-httplib、ctemplate、jsoncpp、多进程、多线程、MySQL C API、Ace 前端编辑器、HTML/CSS/JS/jQuery/Ajax。

案例展示

  • 在线题目网站

    在线题目网站

    # Math Contest 数学竞赛网站 基于 Next.js 14 开发的数学竞赛网站,参考 HMMT(哈佛-MIT 数学竞赛)的内容结构 + College Board Bluebook 的答题界面设计。 --- ## 功能概览 | 模块 |

  • 在线负载均衡OJ判题网站

    在线负载均衡OJ判题网站

    结构与总体思路: 我们对外提供的是在线oj编译运行服务。那么在线自然通过实现web服务器在浏览器 实现功能(利用前端制作网页,对应web服务器的路由实现功能),后端自然需要提供编译运行服务。 为了更加灵活的控制后端的编译运行服务,我们可以将

查看案例列表(含更多 0 个案例)

信用行为

  • 接单
    0
  • 评价
    0
  • 收藏
    0
微信扫码,建群沟通

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系需求方端客服
联系需求方端客服