博流智能科技面嵌入式开发工程师面经

暑假时学校研电赛召开的招聘会,当时投了8,9家公司,收到面试邀请两家,一家江苏苏美达(由于当时在实习就没去),一家今天这家。

 

今天面博流智能科技,内心倍遭打击,特此记录,引以为戒。

约的3点,早到了一个钟头,失误了,结果下午精神没有达到最佳状态。

抵达孵鹰大厦,先做一套笔试题,笔试题一共4题:

1、比较简单,但是自己犯了一个错误,一会面试官给我检查时指出

void func(int a[4])

{

printf("%d",sizeof(a));      4,这里我有答出是4;

}

 

char *s = "hello world!",

printf("%d",sizeof(s));              这里我竟然写13,真是蠢到没朋友

 

char *ptr;

ptr = malloc(1204);

printf("%d",sizepf(ptr));            这里我竟然写1024,真是活该我单身

 

2、也比较简单,但自己仍犯弱智型错误

主要考变量和数据的内存分布,这个我明明总结过得,却还是总结的不到位

 

char *ptr;

ptr = malloc(1024);                ptr是存在栈上的,1024是存在堆上的,我竟然。。。

 

还有问我RW区和ZI区,直接懵逼。。。。。。没见过这两个区啊,回来后查资料才知道只是不知道它的英文缩写是这个。。。。。就是全局区的初始化区和未初始化区,附资料如下:

 

如上图,Code是程序代码所占的字节,即代码区;

RO-data 代表只读数据,程序中所定义的常量数据和字符串等都位于此处,即常量区;

RW-data 代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处,一部分静态区(全局区);

ZI-data 代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处,另一部分的静态区(全局区)。ZI英语是zero initial,就是程序中用到的变量并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。

Total ROM Size (Code + RO Data + RW Data)这样所写的程序占用的ROM的字节总数,也就是说程序所下载到ROM flash 中的大小。

 

为什么Rom中还要存RW,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在Rom中的,为什么不包含ZI段呢,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可,包含进去反而浪费存储空间。

 

实际上,ROM中的指令至少应该有这样的功能:

1. 将RW从ROM中搬到RAM中,因为RW是变量,变量不能存在ROM中。

2. 将ZI所在的RAM区域全部清零,因为ZI区域并不在Image中,所以需要程序根据编译器给出的ZI地址及大小来将相应得RAM区域清零。ZI中也是变量,同理:变量不能存在ROM中。

在程序运行的最初阶段,RO中的指令完成了这两项工作后C程序才能正常访问变量。否则只能运行不含变量的代码。

 

 

然后又问了我一个我现在还是不理解的问题:

全局变量

int a = 2;

面试官:这个2存在哪里?

我:不是在常量区吗?

面试官:怎么把它给a 的?

我:。。。。。。

面试官:是在编译运行那个阶段怎么给a的?你可以写一个接口取到这个值吗?

我:。。。。。。

 

3、第三题是编程填空,我又没做对(我他吗怎么可以这么菜)

具体题目默不下来了,反正是给你一个结构体

struct Node

{

int32 a;

int32 b;

int8 c;

};

struct Node * L;

现在有一个指针ptr指向c的值,让你求结构体的指针。

我的意思的ptr这个地址值左移64位,即可求结构体的指针地址值,结果我写成了 ptr >>= 64;

我真是,这是把ptr的地址值扩大2的64次方倍,

应该写成 (char *)ptr -= 64;

唉,后面我还给面试官吹我读过C和指针。。。。。。。也是心大。

 

 

4、第四题是一道大题,分析题,大概意思就是从键盘打开Chrome输入www.baidu.com到浏览器弹出网页你所知道的技术有哪些?

。。。。。。

我。。。。。。。强答了一波键盘的防抖技术松手检测,tcp/ip的四层网络结构

 

 

 

面试:

实习那部分答得也还行,聊天室部分又是整段垮掉。。。。。。

唉!我好难啊

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值