我在那个部门实习过😂
2 1

相关推荐

这里我总结一下我的嵌入式的八股文积累,体量比较大,基本都是我秋招面试来遇到的面试真题,什么题都有主要是偏C/C++嵌入式这一块,希望能帮到各位小伙伴和后来的人,希望大家送送花点点赞这个系列大概分为好几期吧,尽快肝出来,大家只要面试前抽个一个小时每次背背,基本上八股部分不会有太大问题我都放在我主页置顶希望小伙伴们捧捧场千万别只点收藏哦urat:两根线 无时钟 异步 全双工i2c:两根线 时钟和数据 同步 半双工 可以多主机多从机传输速率100K,400K和3.4M三种速率(bps) SCL和SDA:SCL高电平期间SDA有高变低为起始信号;SCL高电平期间SDA由低变高为终止信号;SCL高电平期间SDC低位0,高为1;iic采用7bit寻址字节,1-7表示从机地址,0位表示传输方向;表示读写每一个字节必须保证是8bit长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随1bit的应答位,每一帧数据有九位通行流程:1. 启动信号:主设备发送起始信号,通过拉低SDA线,同时SCL线保持高电平。2. 地址发送:主设备发送目标从设备的地址及读/写位。地址后,目标从设备应应答。3. 数据传输:主设备或从设备根据读/写位进行数据传输。每传输一字节后,接收方应发应答位。4. 停止信号:完成数据传输后,主设备发送停止信号,释放SDA线,SCL线保持高电平。- ACK:表示“我已收到,继续发送”。- NACK:表示“我未收到或我已完成,不要再发送了”。spi:四线制或者三线制 时钟 、ss、miso、mosi同步 全双工 有发必有会回 spi传输速率 :可以达到50Mbps一主多从计算数组长度:通过sizeof(),数组长度除以数组第一个元素的长度c通过strlen()函数, c++通过.size()数组和链表的区别:数组和链表是两种不同的**数据存储**方式数组是一组具有相同数据类型的变量集合链表是一个中物理存储单元上不连续的存储结构,各个元素的逻辑顺序通过链表中的指针链接实现数组:(1)数组在内存中连续; (2)使用数组之前,必须事先固定数组长度,不支持动态改变数组大小;(3) 数组元素增加时,有可能会数组越界;(4) 数组元素减少时,会造成内存浪费;(5)数组增删时需要移动其它元素。数组从栈上分配内存,使用方便,但是自由度小。数组在内存中顺序存储,可通过下标访问,访问效率高。数组的大小是固定的,所以存在访问越界的风险。数组的存储空间是栈上分配的,存储密度大,当要求存储的大小变化不大时,且可以事先确定大小,宜采用数组存储数据。数组的存储空间是栈上分配的,存储密度大,当要求存储的大小变化不大时,且可以事先确定大小,宜采用数组存储数据。链表:(1)链表采用动态内存分配的方式,在内存中不连续 (2)支持动态增加或者删除元素 (3)需要时可以使用malloc或者new来申请内存,不用时使用free或者delete来释放内存。链表从堆上分配内存,自由度大,但是要注意内存泄漏。链表从堆上分配内存,自由度大,但是要注意内存泄漏。链表访问效率低,如果想要访问某个元素,需要从头遍历。只要可以申请得到链表空间,链表就无越界风险。链表的存储空间是堆上动态申请的,当要求存储的长度变化较大时,且事先无法估量数据规模,宜采用链表存储。链表插入、删除效率高,当线性表要求频繁插入和删除时,宜采用链表结构。vector和list的区别+应用:Vector:连续存储的容器,动态数组,在堆上分配空间底层实现:数组性能:适用场景:经常随机访问,且不经常对非尾节点进行插入删除,因为尾节点插入涉及空间问题List:动态链表,在堆上分配空间,每插入一个元数都会分配空间,每删除一个元素都会释放空间。底层:双向链表性能:访问:随机访问性能很差,只能快速访问头尾节点插入:很快删除:很快vector拥有一段连续的内存空间,因此支持随机访问,如果需要高效的随即访问,而不在乎插入和删除的效率,使用vector。list拥有一段不连续的内存空间,如果需要高效的插入和删除,而不关心随机访问,则应使用list。进程和线程的区别:进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以(IPC)进行。线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。在通信机制上:进程的通信机制**相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便线程通信主要可以分为三种方式,分别为共享内存、消息传递和管道流1.管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(同步互斥机制)2.命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列3.消息队列MessageQueue:消息队列就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。4.共享内存SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,共享内存允许两个或多个进程共享一个给定的存储区。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。5.信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。6.套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。基于网路型,基于文件型7.信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
点赞 评论 收藏
分享
抱歉鸽了这么久,主要是国庆回家了加上最近比较忙,以及试图弄好我的录音所以一直没来得及整理呜呜呜**时间线** 2024/08/21一面   2021/08/28二面   2024/09/04三面   2024/09/12HR面   2024/09/19意向**面试工具** 飞书**整体情况**一面不是问的很深入,重点倾向于算法考察,只会大概了解一下项目的情况以及写简单的八股二面主要是拷打项目以及延申一些八股的问题,项目和八股可能一半一半吧三面hr说是leader面试,感觉是压力面,全程都在拷打项目,中间可能有几个跟八股有点像吧,但是当时被拷打得有点乱了阵脚,没怎么答上来。**总体感受**整体感受还不错,一面面试官比较年轻,态度也很好,也会有一些引导,二面面试官应该是个老手,非常会引导,也会通过一些过场话来了解我熟悉的领域,然后也很接得住我的引导,除了有时候他也会揪着一个问题不放(可能是想压一压我的潜力?),所以感觉二面已经开始爆压力了,导致我面完就有点爆炸,感觉二面是压力面,结果三面才是真正上强度,直接自我介绍都不要,一个劲拷打项目,问得我怀疑人生,连环问题,是真的喘不过气的那种,思考时间都很少,导致我面试之后都一直觉得寄了,主要是面完一直没结果,我是BOSS上HR内推的也查不到进度(快一周的时候问对接的HR结果但他请假了,硬生生熬了一周才出结果,可能字节要求一周之内处理,所以HR还在休假中都给我打电话约面试时间,非常感动呜呜呜)。但能感觉到几位面试官还是很专业的,并且态度也很好(三面虽然是压力面,但只是项目问题拷打的比较深而已,而且可能面试需要所以会比较严肃,但是最后的反问能感受到还是很好的,虽然留给我反问的时间很少)。HR面就主要是很正常的HR面试了,氛围也很轻松。**上菜!**手撕代码(使用飞书自带代码编辑器,和刷题页面时类似的,可以编译运行,不能调试):一面:力扣2855.使数组成为递增数组的最少右移次数、力扣124.二叉树中的最大路径和二面:力扣128.最长连续序列三面:一直在拷打我的项目,硬生生拷打到我才提了一个反问的问题他那系统就提示面试时间到了草草结束了面试。面试问到的问题(由于一面和三面的录音没录上,所以凭记忆整理了一些问到的问题):一面&&三面:+ http和https的区别+ https是如何保证安全的+ HTTPS的RSA握手过程是怎么样的+ rsa握手过程中为什么要用这几个随机数?他们有什么用?这些随机数是如何保证安全的?每次会话的随机数是一样的吗?+ 在这个过程中客户端拿到的是公钥还是私钥?整个过程中涉及到几组密钥?为什么需要这样设计?+ 如果公钥私钥反过来可不可以,比如我用私钥加密,公钥解密,这样数据也是被加密了的?+ select,poll和epoll的区别?+ 讲一讲拥塞控制+ 其他的一些项目问题,比如项目的分工,前后端通信协议的设计我记得还有很多问题,但记忆只能想到这么多了(能回想的一部分是项目问题所以没展示),录音怎么就出问题了呢,但好在一面本身不是很难没问多少,主要是算法考察(两道题),三面主要是问项目。二面:+ 简历上写了编程语言是c++和python,他们两个有什么区别,以及各自的优势是什么?(面试官说回答停留在表象)+ (开始挖)编译型语言为什么要经过编译这一步呢,和解释型语言相比,这一步有什么作用?+ python支持多线程吗?+ python的多线程的执行效率和c++相比谁更好一些呢?为什么?+ 对于两种类型的任务一个是大量的磁盘数据读取(IO密集型),一个是大量的计算(CPU密集型),你觉得python和c++运行效果一样吗?+ c++的内存管理机制知道吗?内存的生命周期是怎么管理的?+ 讲一下OSI七层网络模型,你了解它具体都有什么吗?+ 你觉得七层网络模型中那些层次属于数据传输呢?+ 实际生产中是不是严格遵循OSI七层模型的?+ tcp三次握手,为什么要这样设计?比如变成两次握手行不行?四次挥手变成三次行不行?如果非要变成两次握手会怎么样,如果第三次握手丢失了怎么办?如果不等第三次握手直接开始传输数据会怎么样?会出现什么问题?(我要被问懵了,就说了个背离了可靠性的原则了,结果……面试官:我是背离了呀,但我想让你讲一下如果这样的话会有什么问题,你举一个例子)+ 丢包了怎么办?如果一个包没丢,只是在网络中滞留的时间比较久,但是服务器又发了一个新的包,那旧的包怎么处理?+ http常见的(请求)方法有哪些?+ post和put有什么区别+ 为什么要设计这么多方法,比如为什么需要区分post和put,如果全变成一个行不行?+ 你了解cookie,token和session吗?分别是什么,他们之间有什么关系?+ 几个数据库(mysql,sqlite,mongodb……)的区别?(我用到了sqlite)+ mysql为什么选用B+树?如果换成二叉树行不行?那b树和跳表呢?会带来什么问题?+ 你刚刚说B+树是为了控制树高,那为什么需要控制树高呢?变矮有什么好处?+ 了解mysql中的回表是什么吗?+ 事务的隔离级别了解吗?+ 为什么mysql把可重复读设为默认级别?+ 你刚才也说到可重复读没有解决所有的问题,那mysql有没有相应的优化,或者说有没有什么手段去降低这种问题的发生?+ 你刚刚说这些机制不能完全解决幻读的问题,那什么情况下,依然会出现幻读的问题?+ 那你还能讲一下,mysql当中会遇到一些慢查询的情况,你能讲一下比如常见的慢查询有哪些,然后有什么解决方案吗?三面主要是拷打项目,这里说几个遇到的一些比较通用的问题,细节的问题就不展现了(我也忘差不多了):+ 模块是如何划分的?你是怎么理解模块划分的?怎么样才能划分成一个模块?+ 为什么考虑XXX方案呢?有什么缺陷呢?怎么解决这个问题呢,有什么样的思路?+ 你的XX设计主要是为了解决什么问题?+ 整体的流程是什么?某一个模块的流程是什么?三面也有结合项目问一些八股的问题,但是因为录音没录上,所以就一起写在上面了。HR面很常规的HR面试,基本问的就是网上常说的问题,中间有问到我的校园经历等等,这些就不展示了,展示几个常规问题:+ 觉得自己之前表现怎么样?+ 遇到的最大的困难是什么?是怎么解决的?+ 你遇到过比较大的挫折是什么?+ 未来的规划?+ 你觉的你的优点是什么?+ 那你觉得自己有什么缺点?+ 如果有了更好的offer,你还会选择来字节吗?+ 看你没有实习的经历,你这边能提前来实习吗?#字节求职进展汇总##字节##面经##面试体验##面试总结##接好运#
点赞 评论 收藏
分享
牛客网
牛客企业服务