#

Linux

#
235794次浏览 2158人互动
此刻你想和大家分享什么
热门 最新
07-25 13:22
已编辑
广州华立学院 驱动开发
cvteLinux技术面 面经
大概问了一个小时左右简单八股加项目1、串口怎么确保每一个数据位正确(奇偶位、校验和)2、用过哪些通信协议(spi、串口、iic)3、IIC最多支持几个从设备?iic跟串口的区别?(128和1024,时钟线,全双工半双工)4、中断的概念5、中断的优缺点6、软中断跟硬中断7、GPIO模式8、Linux内核与用户空间的区别9、内核与用户空间的通信有哪些?用过哪些?(信号,信号量,共享内存,设备文件)10、平常如何向设备文件通信(ioctrl)11、两个模块之间怎么使用对方的函数?(符号导出)12、模块加载工具(insmod、rmmod)13、问回串口,有没有做过gpio模拟串口?怎么确保每个数据接受到(注册中断)14、了解哪些子系统15、字符设备驱动编写流程16、加载驱动的时候,没有执行probe函数会是什么原因(设备树名字没有匹配)17、还了解过哪些设备驱动(块设备、网络设备)18、块设备与字符设备有什么区别(字符设备采用字节流读写、块设备采用块大小读取,感觉这里没有回答好 丢)19、又问回来中断,中断有返回值和传参吗(没有)20、为什么没有?(为了快)21、volatile关键字简单手撕(时间结束还没完全写完 在面试官指点下完成 扣大分😅)问哪个项目自己最擅长 触摸屏驱动,iic子系统架构 input架构 中断子系统架构--------更新线-----------综合面已通过--------更新线-----------已oc,开了13k
查看22道真题和解析
点赞 评论 收藏
分享
07-28 15:43
已编辑
广州华立学院 驱动开发
点赞 评论 收藏
分享
自动驾驶机器人C++学习路线
自动驾驶C++后端技术栈适宜建议- 对自动驾驶和机器人相关领域感兴趣,想从事该领域工作- 本科或研究生基于ros框架,研究过算法方向,但是发布顶刊论文比较吃力,学历不占优势- 目前只学过C++通用的技术栈,想钻营一个细分领域,提高自己校招的竞争优势- 以上总结三种建议,后续学习需要花大量时间C++通用技术栈Linux学习Ubuntu系统(x86/ARM)熟悉Ubuntu操作系统的基本知识和常用命令。在x86和ARM不同体系结构上进行开发或运行,了解不同体系结构的特点和差异。Linux操作系统知识Linux的基本概念和原理,包括进程管理、内存管理、文件系统、设备驱动等。深入了解Linux的进程间通信机制,如管道、套接字和信号等。Linux系统函数知识熟悉Linux系统提供的常用函数,比如文件操作、进程管理、网络编程等。(大家常做的webserver项目)Linux相关性能分析和优化知识了解Linux性能分析工具和优化技术,识别和解决系统性能瓶颈工具如top、iotop、strace、perf等进行性能分析和排查问题C++C++基础语法包括变量、数据类型、运算符、条件语句、循环语句等C++特性面向对象编程(OOP)、类和对象、继承、多态性智能指针,线程库,C++常用特性模板编程了解模板的基本语法、函数模板、类模板、模板特化等常见标准库boost库,STL库计算机通识技术栈数据结构,设计模式,计算机网络,计算机操作系统自驾领域技术栈项目构建工具cmake、bazelhttps://github.com/Kitware/CMakehttps://github.com/search?q=bazel&type=repositoriesros1ros教程:https://wiki.ros.org/ros基本原理- Nodes:ROS系统由多个节点组成,每个节点代表一个进程,可以是传感器、控制算法等。节点之间通过Messages进行通信。- Topics:主题是节点之间进行异步通信的方式,一个节点可以Publish消息到一个主题,其他节点可以通过Subscribe该主题来接收相关消息。- Services:服务是节点之间进行同步通信的方式,一个节点可以提供一个服务,其他节点可以请求该服务来获取特定的信息或执行特定的操作。- Parameter Server:参数服务器是一个分布式的键值存储系统,用于存储和共享配置参数和运行时参数。节点可以从参数服务器中读取和写入参数。- Messages:ROS使用基于消息的通信模型,消息是以特定格式定义的数据结构,用于在节点之间传递信息。消息可以是标准类型(如整数、字符串等),也可以是自定义的复杂数据类型。发布订阅模型,消息序列化协议(json,protobuf,xml)ros相关源码roscpp https://wiki.ros.org/roscpproscpp_serializationapollogithub: https://github.com/ApolloAuto/apollocyber: https://github.com/ApolloAuto/apollo/tree/master/cyber通信模块:intra, shm,fastddscyber doc: https://github.com/ApolloAuto/apollo/blob/master/docs/04_CyberRT/序列化协议:protobufDDSros2 ,apollo常见:fastdds :https://github.com/eProsima/Fast-DDS
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-05 02:46
三本吊车尾→大厂Offer:我的“笨鸟”逆袭路
有感而发想分享一段我真实的、磕磕绊绊的大学经历。这不是什么逆天改命的神话,只是一个普通“笨鸟”努力扑腾翅膀的故事。起点:失落与迷茫我的高考成绩,说实话,不太理想。最终去了一所三本院校,甚至在报道那天,看着校园,复读的念头还在脑子里打转。那种对未来的不确定感和隐隐的自卑,我懂。转折:遇见“贵人”与找到方向很幸运,入学不久,机缘巧合下遇到了同专业的师兄。是他,把我领进了嵌入式开发的大门。从那一刻起,我的大学轨迹开始改变。大一:疯狂啃C语言,捣鼓51单片机,再到STM32... 大一的暑假;鼓起勇气跟师兄组队参加了电子设计竞赛。结果?省二。 说实话,其实是自己学艺不精拖了后腿,但师兄非但没嫌弃,反而鼓励我,拉着我又参加了工科赛,这次我们拿到了省一!这是我人生第一个像样的奖,它给了我莫大的信心:原来努力,真的能被看见。成长:单飞与挫折师兄毕业后,我开始自己找队友,继续参加各种比赛:挑战杯、智能车、机器人... 过程绝不轻松。队友磨合、项目卡壳、熬夜调试、比赛失利... 挫折是家常便饭。但也正是在这些“摔打”中,技术一点点提升,心态也慢慢磨砺出来。后来,也幸运地拿到过一次国二。那时候,看着简历上越来越多的奖项和项目,年轻气盛的我,天真地以为“技术够硬,工作不愁”,学历的阴影似乎淡了。现实的耳光:秋招的至暗时刻然而,今年秋招提前批,现实给了我狠狠一巴掌。海投接近700家公司,简历石沉大海是常态,好不容易有面试,也常常止步于初筛或一面。那两个月,是我心态最爆炸的时候。每天都在焦虑、自我怀疑中度过:“是不是当初就该复读?”“这些比赛经历真的有用吗?”“三本的标签,真的就是无法逾越的鸿沟吗?” 曾经的自以为是,在残酷的现实面前碎了一地。 我深刻体会到,学历,很多时候确实是第一道难以忽视的门槛。转机:抓住机会与脚踏实地就在最低谷的时候,我投了CVTE(广州视源)。说实话,在很多人眼里,它可能不算好的选择,甚至可能不是大厂。但对我来说,它提供了一个宝贵的公平竞争的机会。我全力以赴地完成了笔试、几轮技术面试,再到实习考核。最终,我拿到了校招Offer。这家公司作为起点,在很多大佬眼里可能不高,但对我这个三本毕业生来说,是现阶段最好的认可和起点。它证明了我大学三年的努力没有白费。我也非常清楚,这只是职业生涯的第一步,未来的路还很长,需要学习的东西更多。学历是起点,但不是终点。它确实会带来阻力,尤其是在求职初期。但**它不能定义你的上限。关键在于:找到方向(像嵌入式之于我)、付出远超常人的努力、抓住每一个能证明自己的机会、并且永远保持学习和谦卑。如果你也高考失利,正在或即将进入三本院校,请不要自暴自弃:1.  接纳现实,但不要认命。学历起点低是事实,但大学四年是你可以奋起直追的宝贵时间。2.  尽早找到方向。无论是技术(编程、设计、新媒体)、还是其他领域,找到你感兴趣且有发展潜力的方向,深耕下去。“专精”比“泛泛”更有竞争力。3.  实践!实践!实践!比赛、项目、实习... 这些是弥补学历短板、证明你能力的硬通货。不要怕失败,每一次尝试都是积累。4.  感恩“贵人”,但更要靠自己。我很感激师兄的引路,但后面的路,终究要靠自己一步一个脚印走出来。5.  心态放平,脚踏实地。不要像我曾经那样眼高手低。起点低,意味着你可能需要付出更多,从更基础的平台开始。不要嫌弃任何能学习和成长的机会。6.  求职时,广撒网,但也要有策略。认清现实,调整预期,同时不放过任何可能的机会。每一次笔试面试都是经验的积累。最后:三本不是人生的判决书。它可能意味着起点更低、道路更曲折,但绝不意味着终点注定黯淡。只要你目标清晰,愿意付出,持续努力,你总能找到属于自己的那一片天。
点赞 评论 收藏
分享
这个C++项目大家觉得怎么样:分布式大模型基础架构
项目适用岗位:互联网C++后端, 大模型端侧部署 ,自动驾驶/机器人具身智能C++开发1、底层通信组件方案通信模式封装支持兼容多种通信模式普通消息模式:PUB/SUB(发布订阅)、PUSH/PULL(点对点通信)RPC 模式:通过ZMQ_REP、ZMQ_REQ 封装 RPC 功能RPC功能支持 RPC 方法的动态注册提供默认的 RPC 方法列表查询支持 RPC 调用2、Master模块(实现思路:类似ROS1 Master功能, 更轻量化)背景:分布式大模型系统中,多个节点(如llm/vlm, asr,tts, camera,yolo)需要动态发现彼此并高效通信,外部用户可以动态管理节点内任务调度​​节点注册与发现​实现轻量化内存kv缓存数据库:存储节点元信息;并提高sql查询接口,供节点动态通信节点启动时向Master模块注册,上报自身元信息;节点通信时自动匹配动态任务调度分配设计用户请求-任务匹配机制:外部用户仅封装简易数据包请求,可实现动态控制各个模块(启停/llm推理等)3、Channel模块封装上层发布-订阅(PUB/SUB)和点对点通信(PUSH/PULL)混合通信模式设计闭包,通过闭包将​​网络层​​(ZeroMQ)与​​业务层​​(用户回调)解耦,同时隐式维护了通信上下文状态。4、Infra基础架构模块rpc分布式控制指令下发+异步​事件驱动架构​​注册rpc_setup/rpc_pause等分布式控制接口->注册eventpp事件监听->上层触发rpc调用 -> 添加eventpp事件队列中-> 异步事件驱动->各子类Setup/Pause等功能接口标准化控制协议​​基于抽象接口(Setup/Pause等)实现跨模块统一管控,支持LLM/ASR/TTS等异构节点无缝集成5、TASK模块与Infra模块关系:类似与进程和线程之间关系,Infra模块负责资源分配和流程管控,TASK模块是真正干活的,干的活如下:各模块中模型生命周期管理(加载/卸载)infra推理包装回调输出等等
Sor大白:项目适用岗位:互联网C++后端, 大模型端侧部署 ,自动驾驶/机器人具身智能C++开发
点赞 评论 收藏
分享
LinuxC++项目:基于IO多路复用的安全可靠UDP
技术栈:c++,shell,TCP/UDP,docker,cmake, 网络编程, 系统编程项目简介: 是一个基于 IO多路复用 的 安全可靠的 UDP 文本传输框架。1. docker 模块: 使用 docker 构建整个 safe-udp 项目环境,通过 dockerfile 安装 glog、cmake 等依赖项,并使用 Shell 编写容器操作脚本,以实现项目构建流程的自动化和部署的便利性。2. UDP_Transport 模块:- 封装应用层 UDP Data Segment: 序列号、确认号、ACK、FIN等字段;并封装 序列化/反序列化 接口供上层调用。- 根据 RFC规范 加权计算 平滑 RTT 和超时重传 RTO ,并与 IO多路复用(select) 结合设置 超时逻辑,监听客户端的响应。- 封装 Sliding Window 和 Buffer,跟踪和管理 发送/接收数据 包的缓冲区,并设置相应索引指针,处理接收到 ACK逻辑。- 动态调节接收/拥塞窗口大小,自适应开启 慢启动、拥塞避免、拥塞发生、超时重传、快恢复 功能,并计算 cwnd、ssthresh 的值。- 封装统计模块,统计慢启动、拥塞避免、超时重传 的数据包量和比率,反馈网络性能和行为,利于后续网络服务优化。- 动态模拟 网络丢包和时延 状况, 校验 safe-udp 的可靠性和容错性(重传机制) 。3. 项目管理和构建: 使用 cmake 作为项目的构建系统,构建 udp_tansport 动态库,供第三方模块调用;并通过 git ,clang-format等工具,管理仓库代码。4. 功能测试和验证模块:构建 server、client 测试程序,验证safe-udp 可靠传输功能;并编写 diff.sh 脚本判断收发的文本内容是否完备
点赞 评论 收藏
分享
Linux分布式性能监控项目
项目简历:分布式Linux性能分析监控技术栈:C++,Docker,gRPC,Protocol Buffers(protobuf),CMake,Qt项目概述:该项目是一个基于分布式架构的Linux性能分析监控系统,旨在实时监控多台服务器的CPU状态、系统负载、软中断、内存和网络等性能指标,并提供直观的UI界面展示监控数据。以下是该项目的关键特点和主要模块:Docker模块:使用Dockerfile构建项目环境,包括CMake、gRPC、protobuf等源码和依赖项。实现容器操作脚本指令,简化项目在多台服务器上的部署和环境管理。Monitor模块:设计采用工厂方法模式,定义了抽象的Monitor类作为接口,可方便扩展不同系统监控功能。实现CPU状态、系统负载、软中断、内存、网络等监控功能。使用stress工具进行模拟压力测试,以模拟真实性能问题。gRPC框架:构建Server和Client,使用gRPC进行远程连接和通信。在服务器上部署Server,Client生成库供Monitor模块和Display模块调用。Protocol Buffers(protobuf):使用protobuf序列化协议构建项目的数据结构,用于在Server和Client之间传输数据。Display模块:构建UI界面和Data Model两个部分。使用Qt框架创建用户界面,包括QWidget、QTableView、QStackedLayout和QPushButton等组件。通过继承QAbstractTableModel,实现多个数据模型(例如cpu_model、softirq_model、mem_model),每3秒刷新一次数据。该项目的目标是提供一个高效可靠的分布式Linux性能分析监控系统,可应用于大规模服务器集群。通过使用C++、Docker、gRPC、Protocol Buffers、CMake和Qt等技术,实现了模块化、可拓展和易于部署的架构。
Sor大白:牛客上无法上传视频,大家可以去b站:Sor大白
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
04-15 08:34
已编辑
极智嘉vs博世vs禾望电气
投票
追赶太阳的打工鸭很不...:mcu只是实现功能的一种手段,不要被网上铺天盖地的linux劝学搞得焦虑了,机器人的核心是控制算法,不是单片机
点赞 评论 收藏
分享
博世vs小米?校招offer二选一
投票
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务