1, 简述以下命令作用 ls,cd,rm,mv,grep,apt-get,make menuconfig,nm; 用你熟悉的语言实现memcpy,并说明memcpy存在什么问题,怎样改进效率
ls: 查看当前目录下所有文件
cd : 打开目录或者
rm :删除文件
mv: 转移文件
grep:筛选
apt-get: 安装软件
make menuconfig : 图形化的内核配置
nm: 可以用来查询可执行文件和库文件的符号
mencpy 的实现:
void *mencpy(void *dest,void *src , int count)
{
char *ret = (char *)dest;
char dest_t = ret;
char source_t = (char *)src;
while(count --)
{
dest_t++ = source_t++;
}
return ret;
}
注意:memcpy没有考虑到重叠情况,使用过程中会出意想不到的后果
改进方案:
void *memcpy(void *dest, void *src,count)
{
char *ret = (char *)dest;
char *dest_t ;
char *src_t ;
if(src == NULL || dest == NULL)
return -1 ;
if ((unsigned char *)dest <= (unsigned char *)src || (unsigned char *)dest >= (unsigned char *)src + count )
{
dest_t = (char *)dest ;
src_t = (char *)src ;
while(count --)
{
*dest_t ++ = *src_t ++;
}
}
else
{
dest_t = (char *)dest + count - 1;
src_t = (char *)src + count - 1;
while(count --)
{
*dest_t -- = *src_t --;
}
}
return ret ;
}
2, 一个led灯,int led(void)为已经实现了读取它的状态,返回非零点灯,返回0灭灯,
A, 写一个程序,实现1s读取一次灯的状态
B, 采集10次结果,打印结果
int led_situation()
{
int ret;
ret = led();
sleep(1);
return ret ;
}
int led_print()
{
int count = 10;
int temp ;
while(count --)
{
temp = led_situatio();
printf(“led situation is %d\n”,temp);
}
}
3, 打算做一个系统取代12306火车订票系统,写出保存订票信息的结构体
struct _ticket_reservation {
char name[10];
char sex;
int id;
char local_time[12];
char departure_time[12];
char origin[12];
char destination[12];
char seat_type[10];
float ticket_price;
}TICKET;
4, 简述cache的作用,画出cpu,cache,dma,一致性的图
cache为高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。
5, Linux中声请内存的方法和特点
物理内存的分配, 在内核中最终都要调用__alloc_pages().它是最核心的分配函数,申请大小最大不超过2的MAX_ORDER次幂,在现在好像最大定义为4MB。 用户空间的虚拟内存, malloc之类的, 最终在内核中都是do_map()和do_brk()。实际上也只是建立了一块虚拟空间,最终的物理内存还是在缺页异常时分配的。
6,
1) A,B,C器件的名称是(图上画分别是电阻,三极管,二极管的符号),C起什么作用
2) 当EN置高时电路的情况
C是二极管,作用是防止线圈断电产生的高压烧毁三极管。
EN置高时,三极管导通工作在导通区,线圈得电吸合。
7, i2c,uart,spi……..请你选择一种熟悉的器件,写出管脚并注明作用
1) 的一款芯片:24C02
VCC: 1.8V~6.0V工作电压
VSS:地
A0、A1、A2:同时使用时设置区分器件地址,悬空时默认为0,同一总线中最多可使用8个24C02,若只有一个24C02被寻址则这这三个管脚可以悬空或者接地
SDA:双向串行数据/地址管脚,用于器件所有数据的接收和发送
SCK:串行时钟引脚,用于产生器件所有数据发送和接收的时钟,这是一个输入管脚
WP:写保护引脚,当WP接VCC时,芯片只能进行读操作不能进行写操作,当WP接VSS时,芯片能进行正常的读/写操作。
2)UART的一款芯片:SP3232EEA
EN:接收器使能控制,正常情况下该管脚为低电平,该管脚为高电平时接收器禁止输出
V+:电荷泵产生的+5.5V电压
V-:倍压电荷泵电容的负极
C2+:反向电荷泵电容的正极
C2-:反向电荷泵电容的负极
T1OUT:RS232驱动器输出
T2OUT:RS232驱动器输出
R1IN:RS232接收器输入
R2IN:RS232接收器输入
R1OUT:TTL/CMOS接收器输出
R2OUT:TTL/CMOS接收器输出
T1IN:TTL/COMS驱动器输入
T2IN:TTL/COMS驱动器输入
GND:地
VCC: +3.0~5.0V
SHDN:关断控制输入,正常模式下该管脚为高电平,为低电平时关闭驱动器和片内电荷泵电源
3)SPI的一款芯片:M25PXX
C:串行时钟
D:串行数据输入
Q:串行数据输出
S:片选
W:写保护
HOLD:hold
VCC:5V电源
VSS:地
11,有27个运动员买饮料,3个空瓶可以换1瓶饮料,问买多少瓶保证每个人有一瓶,除了用空瓶换,还有什么办法可以喝到饮料(当时我很邪恶,27个运动员,吓也可以把店小二吓得举手投降,还有什么困难弄饮料喝)
买19瓶饮料,可保证每人喝一瓶;
12,西天取经,分别阐述4个徒弟的作用和特点,谁的作用最有用(此题很坑爹,差点答boss僧哥了,看清题意是4徒第)
悟空的作用最有用,每次遇到困难,都是悟空挺身而出,除妖降魔,保师徒平安。因此,任何一个团队若没有一个非常有魄力的人,这个团队很难坚持下去
14,假如你是外科医生助理,你们正在动手术,最后发现纱布不够用一块,问你怎么办(当时我也很邪恶,竟然想到了不管它,死不了)
纱布虽小却关乎病人的安危,应叫医院护士再去找一块即可
————————————————
版权声明:本文为CSDN博主「xiaopangzi313」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaopangzi313/article/details/9076237