嵌入式面試題2016最新
嵌入式系統一般指非PC系統,通常完成一種或多種特定的計算機功能。那麼嵌入式C語言難不難,下面yjbys小編為大家分享最新嵌入式C語言面試試題,歡迎參考學習!
1. 以下三條輸出語句分別輸出什麼?[C易]
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 輸出什麼?
cout << boolalpha << ( str3==str4 ) << endl; // 輸出什麼?
cout << boolalpha << ( str5==str6 ) << endl; // 輸出什麼?
13. 非C++內建型別 A 和 B,在哪幾種情況下B能隱式轉化為A?[C++中等]
答:
a. class B : public A { ……} // B公有繼承自A,可以是間接繼承的
b. class B { operator A( ); } // B實現了隱式轉化為A的轉化
c. class A { A( const B& ); } // A實現了non-explicit的'參數為B(可以有其他帶默認值的參數)構造函數
d. A& operator= ( const A& ); // 賦值操作,雖不是正宗的隱式類型轉換,但也可以勉強算一個
12. 以下代碼中的兩個sizeof用法有問題嗎?[C易]
void UpperCase( char str[] ) // 將 str 中的小寫字母轉換成大寫字母
{ for( size_t i=0; iif( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
} char str[] = "aBcDe";
cout << "str字符長度為: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;
7. 以下代碼有什麼問題?[C難]
void char2Hex( char c ) // 將字符以16進製表示
{ char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);
char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);
cout << ch << cl << ' ';
} char str[] = "I love 中國";
for( size_t i=0; ichar2Hex( str[i] );
cout << endl;
4. 以下代碼有什麼問題?[C++易]
struct Test
{ Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{ Test a(1);
();
Test b();
();
}
5. 以下代碼有什麼問題?[C++易]
cout << (true?1:"1") << endl;
8. 以下代碼能夠編譯通過嗎,為什麼?[C++易]
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
9. 以下代碼中的輸出語句輸出0嗎,為什麼?[C++易]
struct CLS
{ int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{ CLS(0);
} };
CLS obj;
cout << obj.m_i << endl;
10. C++中的空類,默認產生哪些類成員函數?[C++易]
答:
class Empty
{ public:
Empty(); // 缺省構造函數
Empty( const Empty& ); // 拷貝構造函數
~Empty(); // 析構函數
Empty& operator=( const Empty& ); // 賦值運算符
Empty* operator&(); // 取址運算符
const Empty* operator&() const; // 取址運算符 const
};
3. 以下兩條輸出語句分別輸出什麼?[C++難]
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什麼?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什麼?
2. 以下反向遍歷array數組的方法有什麼錯誤?[STL易]
vector array;
_back( 1 );
_back( 2 );
_back( 3 );
for( vector::size_type i=()-1; i>=0; --i ) // 反向遍歷array數組
{ cout << array[i] << endl;
}
6. 以下代碼有什麼問題?[STL易]
typedef vector IntArray;
IntArray array;
_back( 1 );
_back( 2 );
_back( 2 );
_back( 3 );
// 刪除array數組中所有的2
for( IntArray::iterator itor=n(); itor!=(); ++itor )
{ if( 2 == *itor ) e( itor );
}
11. 寫一個函數,完成內存之間的拷貝。[考慮問題是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
char* pdest = static_cast( dest );
const char* psrc = static_cast( src );
if( pdest>psrc && pdest{
for( size_t i=count-1; i!=-1; --i )
pdest[i] = psrc[i];
}
else
{
for( size_t i=0; ipdest[i] = psrc[i];
}
return dest;
}
int main( void )
{
char str[] = "0123456789";
mymemcpy( str+1, str+0, 9 );
cout << str << endl;
system( "Pause" );
return 0;
}
-
2017嵌入式軟件工程師筆試題及答案
一、選擇題1:設floata=2,b=4,c=3;,以下C語言表達式與代數式(a+b)+c計算結果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.c/2*(a+b)參考答案:B,因為a,b,c三個變量都是浮點數,所以在B答案中其結果是0,因為在計算1/2是就是0,如果改成1/2.0就正確了。2:為了向二...
-
學嵌入式電腦配置要求
嵌入式仍舊是一門非常熱門的技術,每年依舊有很多同學投入到嵌入式學習的大軍中來。從簡單的8位單片機,例如51系列,到32位的arm,mips系列,甚至現在的64位cpu;從簡單的電子鬧鐘到我們人手一台的智能手機,嵌入式性能越來越強大,應用越來越廣泛。那麼就有好多同學問,學習嵌...
-
嵌入式處理器體系結構
從應用對象上加以定義,嵌入式系統是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。下面是小編整理的關於嵌入式處理器體系結構,歡迎大家參考!這個階段課程淵源已久。上世紀90年代時單片機的大行其道是計算機單芯片化的開端。隨着集成電路技術的發展,單芯片上集成...
-
嵌入式系統特點
嵌入式系統是面向用户、面向產品、面向應用的,它必須與具體應用相結合才會具有生命力、才更具有優勢。因此可以這樣理解上述三個面向的含義,即嵌入式系統是與應用緊密結合的,它具有很強的專用性,必須結合實際系統需求進行合理的裁減利用。嵌入式系統是將先進的計算...