嵌入式面试(笔试)笔记2
嵌入式面试(笔试)笔记2
本文是对于下面链接的B站系列视频的学习笔记
语言笔试题,C++笔试题,嵌入式笔试题,面试题,难点疑点解析(持续更新)
在另外一篇文章的基础上增加或者强调一些对自己更重点的知识
另一篇文章的链接:
【常见c语言笔试题嵌入式软件开发2】
P28:仿照字符串库函数strcpy,自己编写一个字符串拷贝函数,不允许使用C库函数,要求两个参数,第一个参数是要拷贝的目的地址,第二个参数是拷贝字符串的来源。
#include <stdio.h>
char * mystrcpy(char *des,const char*src)//加了const可以防止来源处值被改变
{char *temp = des;if(des == NULL ||src == NULL){return NULL ;}if(des == src){return des;}while(*des++ = *src++);//字符串结尾为"\0",ASCII码为NULL,所以不用加其他条件即可停止return temp;
}
第二种写法:
#include <stdio.h>
char * mystrcpy(char *des,const char*src)
{int delta = des-src;if(des == NULL ||src == NULL){return NULL ;}if(des == src){return des;}while(*(src+delta) = *src++);//这样写可以省略寻址dest和dest++的操作,节省时间return dest;//不再需要temp来返回,直接返回dest即可
}
P31:请说明下面这段代码的运行结果
#include <stdio.h>
int main(void)
{unsigned char *p1;unsigned long *p2;p1 = (unsigned char *)0x801000;p2 = (unsigned long *)0x801000;printf("p1 + 5 = 0x%x\n",p1 + 5);printf("p2 + 5 = 0x%x\n",p2 + 5);return 0;
}
p1 + 5 = 0x801005
p2 + 5 = 0x801028
char
类型的指针不代表只能表示8bit的地址,它可以表示所有的地址,只是它指向的那个地址里面存放的数据的数据类型是char
P32:下面的函数有什么错误:
int square(volatile int *pt)
{return (*pt)*(*pt);
}
编译器会对代码进行如下处理:
int square(volatile int *pt)
{int a,b;a = *pt;b = *pt;return (a)*(b);
}
此时a和b的值可能是不一样的
P34:指出下面代码的输出,并解释为什么?
#include <stdio.h>int main(void)
{int a[5] = {1,2,3,4,5};int *pt = (int *)(&a + 1);printf("%d %d\n",*(a+1),*(pt - 1));return 0;
}
a为a的第一个元素的地址,&a为把a作为整体的首地址,从取值上讲两者相等。
但是a+1为a的第二个元素的地址,而&a+1为在a的基础上再加一个a的大小,即加4*5=20,如果之后还有&a+2,则再加20.
此题中*(a+1)
为2,*(pt - 1)
为加了一个20之后减去4,即为a[5]的位置。
P39:阅读下面代码以下说法正确的是:
int main(void)
{char aChar;int aInt;aInt = aChar = -120;printf("%d\n",aInt);return 0;
}
A.一定输出-120
B.一定不能输出-120
C.可能输出-120
存疑
视频中说要考虑大端小端的问题,所以char赋值给int时可能会赋到高位导致结果不是-120,所以选C。
但是小数据类型给大数据类型赋值时不是会先进行符号位扩展吗,这种情况真的会发生吗?
P45:请问如下语句是什么意思:typedef int (*funcptr)();
定义了一个新的类型:funcptr,该类型为:一个无输入,返回值为int的函数指针
关于typedef与函数指针,可以参考这篇文章:typedef函数指针用法
P46:C和C++中const的区别
在C中,const虽然名称上是定义一个常量,但实际上并不是常量,他是可以用指针来修改的,而且我们不可以用const定义的变量来初始化数组维度。
const int n = 5;
int a[n];
在C中这是不可以的,但是在C++中,这是可以的。
P49:构造函数可以不通过类的对象来调用
C++的知识点,简单记录
P60:查看下面代码,看有无问题,如果有问题怎么修改
void GetMemory(char *p);
int main(void)
{char *str = NULL;GetMemory(str);strcpy(str, "Hello World");printf("%s\n",str);
}
GetMemory(char *p);
{p = (char*)malloc(100);
}
GetMemory
的输入是指针,那么只是形参,是”按值传递”,在给p申请完地址离开函数GetMemory
之后,str还是指向空。
所以GetMemory
的输入应该是指针的地址,即指针的指针。
改正后代码:
void GetMemory(char **p);
int main(void)
{char *str = NULL;GetMemory(&str);strcpy(str, "Hello World");printf("%s\n",str);
}
GetMemory(char **p);
{*p = (char*)malloc(100);
}
嵌入式面试(笔试)笔记2相关推荐
- 嵌入式面试(笔试)笔记1
嵌入式面试(笔试)笔记1 本文是对于下面链接的B站系列视频的学习笔记 语言笔试题,C++笔试题,嵌入式笔试题,面试题,难点疑点解析(持续更新) 在另外一篇文章的基础上增加或者强调一些对自己更重点的知识 ...
- 程序员面试笔试宝典学习笔记(一)
以下是一些著名互联网企业的部分面试笔试真题以及考察知识点 本文的内容是对一些网址上的知识点介绍做了相应的整理 1.extern的作用 自己理解:应该需要区分extern在C语言中和C++语言中的作用, ...
- 【深度学习笔记】神经网络模型及经典算法知识点问答巩固(算法工程师面试笔试)
文章目录 前言 一.前馈神经网络模型 1.请说说你对前馈神经网络中"前馈"二字的理解. 2.记忆和知识是存储在_____上的.我们通常是通过逐渐改变_____来学习新知识. 3.在 ...
- 我的新书——《PHP程序员面试笔试宝典》
你好,是我琉忆. 一个文艺的PHP开发工程师. 很荣幸能够在这里带来我的第一本新书--<PHP程序员面试笔试宝典>. 一.创作过程 <PHP程序员面试笔试宝典>是我的第一本书, ...
- 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)
###你好!这里是风筝的博客, ###欢迎和我一起交流. 前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶补知识,找了些资料,希望下次能答出个满意答案. Linux早期时候,一个驱 ...
- 【建议珍藏】校招社招面试指导笔记
就我个人而言,由于四月初来到广州之后开始投递简历 还蛮顺利的,收到了第一家面试的offer,没有多对比几家就去了 对于加班情况,团队氛围这些都不是很了解,是十分不好的事情. 这阵子,我用了几天的时间从 ...
- 前端面试笔试错题指南(四)
嗯,上次写blog已经是几周前的事情了,其实已经积攒了很多小问题需要记录和分享了.但是在8月底,VK我一次经历了了携程.拼多多.腾讯.网易等多轮面试轰炸,忙得不可开交,有喜有忧的同时,还是赶快记录了不 ...
- java面试笔试资料 百度网盘
面试宝典:微软.谷歌.百度.腾讯等各大公司笔试面试题整理全版 /面试宝典:微软.谷歌.百度.腾讯等各大公司笔试面试题整理全版 分享时间:2014-11-07 09:01分享用户:东东***07文件大小 ...
- 【书】《数据库面试笔试宝典系列》简介
[系列书]<数据库面试笔试宝典>相关内容 本文档说明 本文档主要是给数据库笔试面试系列书籍 < Oracle 数据库笔试面试宝典> . <数据库 程序员 面试笔试宝典&g ...
最新文章
- html链接伪类设置鼠标悬停,链接伪类可以控制超链接的样式吗?是怎样实现的?...
- 他曾创造多门编程语言,还被比尔·盖茨以300万美元挖角
- 【解决VMWare中新建虚拟机不支持centos64位的方法】
- python的优点-Python语言的优势有哪些?
- 第 171 章 vagrant - Tool for building and distributing virtualized development environments
- java获得网页的编码方式_求一段代码,可以获得编码格式是gb2312的网页的页面源码,java实现!...
- 表单和字都居中_APP 分享 | 6 款黑科技工具,低调收藏,每一款都很强大!
- 虽然现在用APACHE COMMONS DBCP可以非常方便的建立数据库连接池,
- pt-query-digest分析mysql日志
- 深度数据对接 链接服务器 数据传输
- 常用的做网站软件、网站制作软件分享
- Appium原理分析
- 如何离线加载全国2.48TB天地图
- 三极管做开关管的总结(理解三极管)
- 计算机被限制压缩包打不开怎么办,【解决】压缩文件打不开,压缩文件损坏怎么修复?...
- 2014matlab精度设置,matlab设置数据精度
- Python入门刷题第三天(类和对象和继承)
- 微信小程序实现单选、全选、反选、取消全选功能
- 解决时间差太大导致Windows无法同步时间
- 神经网络的持续终身学习综述论文