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 <stdio.h>
#include <stdlib.h>
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命名管道:
消息隊列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章