小许的八股文系列

一 嵌入式

1、讲一下STM32时钟系统
时钟系统类似于脉搏,控制着CPU的命脉,STM32的时钟源又不像51的时钟源那么单一,因为STM32的MCU较为复杂,且外设较多,并不是所有的外设都需要那么高的时钟频率,而且较高的频率对功耗和抗干扰都不具优势,所以对复杂的MCU系统往往采取多个时钟源,STM32有5个时钟源,HSI、HSE、PLL(这三个往往作为系统时钟)、LSI(外部看门狗时钟)、LSE(STC时钟源)。

2、c语言中堆和栈的区别
1、数据结构上:
都是一种数据项按序排列的数据结构。
栈:一种具有先进后出性质的数据结构
堆:堆是一种经过排序的树形数据结构、通常我们所说的堆的数据结构,是指二叉堆、虽然存储有序,但是我们取值是可以任意的。
2、申请与释放方式
栈:系统自动分配空间,生命周期在函数运行期间,运行结束便被系统回收
堆:程序员手动分配,如果不手动释放,所占用空间将一直存在
3、申请效率
栈:由系统自动分配,速度较快。但程序员是无法控制的。
堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
4、申请空间大小限制:
栈:栈是向低地址扩展的数据结构,是一块连续的内存的区域,这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的
堆:堆的大小一般看内存的大小。
5、存放信息
栈: 在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排

3、假如一个单片机上电之后不运行?这是为什么?
检查晶振工作是否正常
检测EA脚是否拉低。单片机EA引脚表示存取外部程序代码之意,低电平动作,当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。EA引脚必须接低电平,因为其内部无程序存储器空间。
4、精度和分辨率有什么区别
像数字化的温度传感器,一般精度指的是传感器读回的数据与绝对温度的差值,而分辨率指的是传感器能感知的最小温度变化。

5、你来说一下中断的处理流程是什么样子的?
中断响应:设置程序断点,并将断点地址压入栈进行保护,接着将程序转到中断服务程序的入口地址。
中断处理:从中断服务程序的第一条指令开始执行直到返回指令为止。
中断返回:中断处理程序的最后一条指令是中断返回指令RETI,该指令的作用将断点地址从栈中弹出,程序继续从断点地址开始执行
6、中断的优点
实时性
充分利用系统资源,提高CPU效率
7、讲一下grep的作用
查找相应文件中符合条件的字符串

8、I2C的开始信号、I2C配置主机模式端口该怎么配置
开始信号: SCL为高电平期间,SDA由高电平向低电平进行跳边,产生开始信号。
主机模式端口的配置:
硬件模式:端口设置为复用模式,复用为I2C、开漏输出、既不上拉也不下拉。
软件模拟:设置普通输出模式,推挽输出、配置上拉电阻

9、讲一下extern的作用

声明外部变量

在C++文件中调用C方式编译的函数

extern “C” {
… C++可以重定义,而C中没有重定义
}
1
2
3
10、讲一下static的作用

函数内部的变量值保持不变
模块内、函数外的变量,模块内的任意函数都能使用,但模块外的函数无法调用
定义在模块内的函数,模块外无法调用。、
11、讲解下GPIO是什么,有几种模式

GPIO就是通用的输入输出端口
有8中模式:4输入(上拉输入、下拉输入、浮空输入、模拟输入)、4输出(推挽输出、开漏输出、复用推挽输出、复用开漏输出)
12、进程通信的方法
管道
FIFO
消息队列
信号量
共享内存
13、MQTT与HTTP的区别
MQTT以数据为中心,传输量小、速度快
HTTP以文本为中心,传输量大,速度较慢
两个都是基于TCP(传输层之上的),都是属于应用层的协议,MQTT协议一般采取明文传送,而HTTP可以采用HTTPS进行加密。
14、MQTT的消息类型有哪些
连接
发布
订阅
订阅确认
取消订阅
15、STM32-ADC配置
引脚配置
使能引脚时钟与ADC时钟
设置端口为模拟输入,不带上下拉电阻
设置ADC的通用控制寄存器CCR
设置ADC的采样模式-独立模式
设置ADC的分频系数
初始化ADC参数
设置ADC的分辨率
转换方式 - 关闭连续转换模式
设置对齐方式 - 右对齐
开启AD转换器
16、状态机
https://zhuanlan.zhihu.com/p/262043778
17、接口有哪些
在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线。以下内容为常用板上通信接口:包括I2C、SPI、UART、1-Wire
I2C总线是一种同步、双向、半双工的两线式串行接口总线。这里,半双工的含义是指在任意给定的时刻,只有一个方向上是可以通信的。
SPI总线

SPI总线是同步、双向、全双工的4线式串行接口总线
嵌入式经典30问
1、什么是中断?
中断是指计算机运行过程中,出现某种意外情况需要主机干预时,机器能够自动停止正在运行的程序并转入处理新情况的程序,处理完毕以后又返回原被暂停的程序继续运行。
中断的类型:
硬件中断和软件中断
硬件中断又分为内部中断和外部中断
只有外部中断是可屏蔽的
如果在中断服务函数中调用printf来打印调试信息,可能会发生以下结果:
1.打印不完整或者根本无法打印
2.程序能执行,但是行为异常
3.程序无法执行
2、中断的调用格式c51
void 中断名() interrupt 中断号
中断号0 外部中断0
中断号1 定时器0
中断号2 外部中断1
中断号3 定时器1
中断号4 串口
3、进程和线程
进程:执行中的一段程序,即一旦程序被载入到内存中并准备执行,就是一个进程,它表示资源分配的基本概念,调度运行的基本单位,系统并发的执行单位
线程:单个进程执行中每个任务就是一个线程,线程是进程执行运算的最小单位
线程属于进程,一个进程可以有多个线程
线程运行时共享进程的内存和资源(代码段、数据段、扩展段),每个线程有自己的栈段(存放临时变量和局部变量)
4、进程有几种状态?通信间方式都有些什么?
进程的状态,五种:创建、就绪、阻塞、运行、终止
进程间通信指的是在不同进程之间传递信息或交换信息,简单来说就是进程间可以互相交换数据
1)有名管道和无名管道
2)信号
3)消息队列
4)共享内存
5)信号量
6)套接字
5、死锁是什么?四个必要条件是什么?怎么避免死锁?
避免:
1)破环“请求和保持条件”
2)破环“不可抢占”条件
3)破环“循环等待”条件
6、异常的类别
中断,陷阱,故障,终止
7、虚拟内存是什么?
8、进程调度的方法:
1)先来先服务
2)短任务优先法
3)高响应比优先
4)时间片轮转法
5)静态、动态优先算法
9、并行,串行和缓冲技术
并行技术是为了解决多核cpu或者多IO总线并行处理
覆盖技术和虚拟技术是为了解决内存不足的问题,当有大文件或者程序需要在内存中处理时,要用到覆盖技术
缓冲技术可以解决cpu高速和打印机的低速矛盾
10、#和##
表示字符化,就是把后面的内容加上双引号
表示连接
11、宏定义和普通函数的区别
宏定义没有参数类型也不做类型检查,预编译阶段直接进行宏替换,所以它可以比较不同参数的数据大小,而普通函数只能比较形参类型的大小
宏定义一定要注意括号的存在和匹配
调用宏定义和普通函数生成的指令不同
12、数组访问的方法
下标,指针
顺带一提,指针是一个存放地址的变量
13、strlen和sizeof 的区别
strlen直接测长度,以“\0”结束,sizeof算的是所分配的内存大小 ,不受内容的影响
14、回调函数是在另一个函数中调用的函数
15、内存泄露是指程序中已动态分配的堆内存由于某种原因程序未释放或者无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果
16、关键字extern
有两种用法,第一是在文件内,如果定义一个变量,但是想要在变量的前面使用这个变量,就要用到extern
第二是如果想要在另一个文件中使用这个变量,在文件前面变量名之前加extern
17、数组和指针的区别:
数组是储存多个相同变量的集合,指针是存放地址的变量
数组在内存中是连续存放的,指针是灵活的,它可以指向任意类型的数据
18、什么是野指针和内存泄漏?
内存泄漏是指动态分配的内存由于某些原因未能释放,造成了内存的浪费
野指针是指向不可用内存区域的指针,未初始化或者释放的时候没有置NULL造成
19,const关键字

const 是C语言的一个关键字,const 关键字是把变量变为一个只读的变量(也就是不可以作为左值)不是将这个变量变为常量。经过const 修饰的变量成为只读的变量之后,这个变量就只能作为右值(只能赋值),绝对不能成为左值(不能接收赋值)。
作者:二月bloom
链接:https://www.jianshu.com/p/6ceb31ce8d24
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

二 java

牛客网八股文
javaGuide

三 测试

四 图像相关的

https://zhuanlan.zhihu.com/p/417457321
https://www.cvmart.net/community/detail/2924

Janet八股文集锦相关推荐

  1. 学生 老师都来看看吧 小学生作文评语集锦

    学生 老师都来看看吧 小学生作文评语集锦 2011年01月20日 转载自一起去留学http://www.177liuxue.cn转载请保留出处.不是本人小郑作 QQ627193860 天津北方网讯 近 ...

  2. GitHub:TensorFlow、PyTorch最全资料集锦

    给各位小伙伴们推出几个深度学习框架的资料集锦,统一命名为:XXX-From-Zero-To-One.下面po一幅深度学习框架发展的重要历史点: 从上图可知,TensorFlow和PyTorch是目前深 ...

  3. LAMP 关键数据集锦技术选项参考

    LAMP 关键数据集锦技术选项参考 源自日积月累自己的其他人的经验总结 负载均衡 LVS 工作在四层,内核态,性能极高,有VIP功能,配合 keepalived 做有效的 心跳检查和负载均衡安装配置 ...

  4. HEAD元素使用集锦

    作者:火焰鸟    文章来源:大众网络报 HTML文档由两部分组成:Head(主题部分,一般来说是不可见的)和Body(正文部分,在浏览器中是可见的).随着FrontPage及Dreamweaver( ...

  5. Unity 4.x游戏开发技巧集锦(内部资料)

    2019独角兽企业重金招聘Python工程师标准>>> Unity 4.x游戏开发技巧集锦(内部资料) 淘宝书店地址:http://item.taobao.com/item.htm? ...

  6. Centos系统上安装php遇到的错误解决方法集锦

    Centos系统上安装php遇到的错误解决方法集锦 1.configure: error: xml2-config not found. Please check your libxml2 insta ...

  7. 常用MySQL的命令集锦

    常用MySQL的命令集锦 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再 ...

  8. 创建响应式布局的优秀网格工具集锦《系列五》

    在这篇文章中,我们为您呈现了一组优秀的网格工具清单.如果网页设计和开人员采用了正确的工具集,并基于一个灵活的网格架构,以及能够把响应图像应用到到设计之中,那么创建一个具备响应式的网站并不一定是一项艰巨 ...

  9. J2EE面试题集锦(附答案)

    转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案) 一.基础问答 1.下面哪些类可以被继承? java.lan ...

最新文章

  1. 大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解
  2. python简单代码画曲线图教程-用Python画论文折线图、曲线图?几个代码模板轻松搞定!...
  3. 对3.0 版本的python依赖无法满足_解决yum对python依赖版本问题
  4. LaTeX - 填充图中的阴影部分
  5. m3u直播源_教你创建电视直播源
  6. 带你入门SpringCloud 之 服务网关 Zuul
  7. ios 添加条纹背景
  8. spring源码:实例化bean的准备工作
  9. 机械结构设计经验之谈
  10. 如何建立强有力的人脉关系
  11. vba 输出文本 m linux,VBA使用FileSystemObject将读取或写入文本文件(一)
  12. Fisher判别式(LDA)
  13. idea 如何修改主题
  14. python拼音四线格书写格式_Python 中拼音庫 PyPinyin 的用法
  15. linux在拥有/etc/xdg的自启动方式
  16. DBLINK使用的思考
  17. [重装系统] windows 10 重装系统记录
  18. 【windows】系统主机名、IP地址、Mac 地址、硬盘序列号
  19. 基于深度学习的聊天机器人在网易严选智能客服中的应用
  20. 帝国cms刷新内容页提示_ecms_news_data_' doesn't exist不存在问题

热门文章

  1. 剑指offer,靠谱分析及牛客网可AC代码,c++(11~20)
  2. vector的erase失效问题
  3. hisi3559AV100开发之系统移植
  4. mysql数据库连接过多_轻松解决MYSQL数据库连接过多的错误
  5. java 方法命名规范_Java命名规范
  6. mapperscan扫描不到包问题
  7. Android常见开源项目的原理及使用方法
  8. 堆排序-HeapSort
  9. 没有拆不散的情侣!只有不努力的小三!
  10. python实现三层神经网络 (BP)