VIA笔试收集与解答
1.静态数据函数和非静态数据函数的区别,如何调用静态数据函数?
静态数据、函数属于整个类,为该类所有对象共享;
调用:可以用对象,也可以直接用类名
2.多态,继承,数据封装的概念。
多态:
继承:
数据封装:
3.动态,静态类型转换的概念,显示和隐式类型转换得概念
4.STL的概念,写一个LIST类
Standart Template Library
Template <Typename T>
class LIST
{
//...
}
5.访问一个数据库的文件,写一个访问数据库文件的CACHE机制。
6.C++中的struct和C中的struct有什么不同,C++的结构和类有什么不同
C++中struct增加了访问权限,且可以和类一样有成员函数
C++的结构体和类,除了默认的访问权限不同外,无任何不同
7. 为什么C++中调用C编译后的函数,必须使用EXTERN C
这是因为name mangling的问题
8. 数据对齐的概念
9. bss.text,data段的概念
机器码的分段存储
.bss 未初始化的数据段
.text 代码段
.data 初始化的数据段
10.描述new和delete的实现流程和机制
11.是否写过shell script程序,写一个简单示例
写过
File="VIA"
read line < $File
sum=0
for num in $File; do
sum=$(expr $num + $sum)
done
echo $sum
12.什么是framework,写出你熟悉的frame机制,写出MFC中的message_map的message/event的实现机制.
13.看一些递归程序的结果
14,UNION,嵌套struct,struct中还有char b:4, char a:2之类的东西,然后UNION test =[b=(char)(OX55)]结果
!!!复习UNION
15.虚基类的概念,有什么作用,举出一个平时设计的例子来
只提供接口,不可实例化
16.快速排序算法的原理,简述流程或者编程说明
using namespace std;
int split(int arr[], int lo, int hi)
{
int pivot = arr[lo];
int pivot_pos = lo;
int i = lo+1;
while(i <= hi)
{
if(arr[i] < pivot)
{
pivot_pos++;
swap(arr[i], arr[pivot_pos]);
}
i++;
}
swap(arr[pivot_pos], arr[lo]);
return pivot_pos;
}
void QuickSort(int arr[], int lo, int hi)
{
if(lo >= hi)
return;
//divide
int pivot_pos = split(arr, lo, hi);
//conquare
QuickSort(arr, lo, pivot_pos-1);
QuickSort(arr, pivot_pos+1, hi);
//combine
//no need
}
int main()
{
int arr[10] = { 20, 5 , 9, 13, 10, 56, 8, 4, 65, 15};
QuickSort(arr, 0, 9);
for(int i=0; i<10; i++)
{
cout << arr[i] << " ";
}
system("PAUSE");
return 0;
}
17.是否知道函数指针,写出一个排序的模板,里面调用函数指针用来实现比较的功能.
template <Typename T>
void sort(T *arr, size_t len, bool (*pfCompare)())
{
//...
}
18.打印出100以内的所有质数.
#include <cmath>
using namespace std;
bool IsPrime(int n)
{
assert(n>0);
for(int i=2; i <=static_cast<int>(sqrt(n)); i++)
{
if(n%i == 0)
return false;
}
return true;
}
void print_prime(int n)
{
for(int i=1; i<=n; i++)
{
if(IsPrime(i))
cout << i << " " ;
}
}
int main()
{
print_prime(100);
system("PAUSE");
return 0;
}
19.你熟悉哪种RTOS,并指出RTOS的特点.
uC/OS2
-----------------------------------------------------------------------------------
1, 三组程序,找出错误,如果有的话.
1> a.c long temp[255];
b.c extern *temp;
2>a.c long temp[255];
b.c extern temp[256];
3>a.c long temp[255];
b.c extern temp[];
2, 在第一个声明处编译出了奇怪的错误,为什么?
#include <stdio.h>
#include "myfun1.h"
#include "myfun2.h"
int myInt1;
int myInt2;
3, printf("0x%x", (&0)[-1]); 请问打印了什么?
4, #define offset(s,c) 同intel的题.
5, 汇编,用ax,bx,cx,dx, 求1000*1000/30(四舍五入), 结果放在ax中.
6, 编最优化Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果有序,需
要最优.
7, 1,2,3,4,5,6,7,8,9从栈里出来的可能性. (略)
8, 求一个struct的sizeof.(略)
这两题没太大难度.