2019.10.1秋招笔试题面试题

2019.9.26

面试希捷软件工程师

JD:
负责测试厂内硬盘的failelure test,需要python脚本
负责EFA的工具测试,需要会c语言
负责machine learning相关的projects
C部分:
①大端小端,并画图解释
大端模式:即高地址存放在内存的低地址端,低地址存放在内存的高地址端。
小端模式:即低地址存放在内存的低地址端,高地址存放在内存的高地址端。
例如存放0x12345678
小端模式(litter-endian):
低地址---------------------------------------->高地址
0x78 | 0x56 | 0x34 | 0x12
大端模式(big-endian):
低地址---------------------------------------->高地址
0x12 | 0x34 | 0x56 | 0x78
优势和劣势:
litter-endian:不用强制转换数据不需要更改内存内容,按1,2,3,4存放
big-endian:符号位存放在字节,便于正负的判断
为什么会有大小端之分?
计算机以子节为单位,每个地址单元对应这一个子节,但c语言中了8bit的char,还有16bit的short,还有32bit的long。所有就存在多个内存存放的问题,所以就会产生大端和小端。常用的X86用小端模式,ARM和DSP使用小端模式,Keil C51使用大端模式。
如何判断字节序?

void big_litter_decision()
{
     int a=1;
     char *p=(char *)&a;
      if(*p==1)
       return 1;
      else
      return 0;
}
void main()
{
    if(big_litter_decision()==1)
    printf("litter_endian");
    else
    printf("big_endian");
}

②结构体子节对齐
内存的对其方式
1)变量(结构体变量)的起始位置能被对其值对其,结构体的对其方式按对其值最宽的大小
2)结构体的每个成员变量起始地址能被对齐值整除,如果不能整除则在前一个变量补充子节
3)结构体变量能被最宽的子节整除,不如不能则在结构体后补充变量
结构体对齐的优势:
1)减少内存
2)提升数据的读取速率
③unsigned 的考察

usigned char a=100
while(a-->=0)
{
    do something
}
printf("%d",a);

因为unsigned为无符号数char型,最大为255;
当a减到0时会再减为255,则while是一个死循环
④函数传参及字符串考察
p = (int *)malloc(sizeof(int));

#include 
#include 
void fun(char **p)
{
	++p;
}
int main()
{
	char *p;
	p = (char *)malloc(11 * sizeof(char));
	char *s = p;
	s = "hello world";
	fun(&s);
	fun(&s);
	printf("%s", s);
}

指出输出值
⑤声明一个指针型整数函数,函数参数列表为指向整型的指针
int *fun(int *a);*
python部分
①python的创始人
Guido van Rossum
②指出下列的输出值
A=[range(5)]
B=A[:-1]
C=B //将B和C指向同一个地址 B的值改变 A的值也会发生改变
D=B[:] //将B的值拷贝到D,B的值发生变化,D不会发生变化
B[-1]=1
A=[0,1,2,3,4]
B=[0,1,2,-1]
C=[0,1,2,-1]
D=[0,1,2,3]
③python的垃圾回收机制
引用技术:记录该对象的引用次数,每当被引用时,ob_ref就会加1,当引用失效时ob_ref就会减1,知道引用次数为0,便会释放该对象
标记清除,第一段 标记所有的活动的对象,第二段清楚非活动的对象
分代回收:根据内存的存活时间分配不同的集合
,将内存分为年轻带、中年代、老年代,年轻代的内存最先被回收
机器学习相关 略


**

无锡中科微至有限公司

面试嵌入式软件工程师
**
C语言简单的面试题题
①考察宏定义
②考察
③考察 switch case语句
④考察大小端,小端是低数据位存储到高位
大端是数据位存储到地位
⑤c/c++存放变量的内存
堆区(head):由程序员自己申请并释放,如果没有释放在可能在程序结束后会进行回收。
栈区(stack):
全局未初始化区:int *p;
全局初始化区 int a=0;
全局静态区:
文字常量区:存放字符常量
程序段区:存放程序的二进制
⑥rs232的3根线常用的bit率9600,8bit 起始位数据位停止位:1:8:1
⑦进程间的通信
信号量
管道 :半双工
FIFO命名管道:
消息队列

你可能感兴趣的:(个人成长日记)