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程序,写一个简单示例
写过

#!/bin/sh

File
="VIA"
read line < $File
sum
=0
for num in $Filedo
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.快速排序算法的原理,简述流程或者编程说明

#include <iostream>
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= { 205 , 9131056846515};
    QuickSort(arr, 
09);
    
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 <iostream>
#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%== 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.(略)
这两题没太大难度.

 

posted @ 2007-10-26 00:00  中土  阅读(785)  评论(0编辑  收藏  举报
©2005-2008 Suprasoft Inc., All right reserved.