1、 编写一段程序实现以下功能:
输入一个整数n ;
A、 如果n是一位整数,则输出n,否则将各个位上的数加起来得到结果n,
B、 继续步骤A
例子:输入n=45699
1、 各位之和为4+5+6+9+9=33 不是一位数,则n=33
2、 继续各位之和为:3+3=9;结果为一位数,得到最后结果为9
2、输入一个整数N,和一个整数M,则由1到N的各个整数围成一个圆,现要求你从1开始数到M并将第M个数从此列中去掉,并存入已给出的数组,继续从你取出的数的后一位从1开始数,再次数到M为止,从此列中去掉,并存入已给出的数组,一直这样数,直到剩余一个数,最后把你存入数组的数和最后一个数分别打印出来。
例子:
N=10,M=3;
A、1 2 3 4 5 678910
3、从1开始数数到M(3)则将3取出,并存入数组,剩余数为
B、1 2 4 5 678910
4、从下一位(4)作为1开始数,数到M(3)即6,则将6取出,并存入数组,剩余数为
C、1 2 4 5 78910
(依此规律继续,直到剩余最后一个数为止)……………………
最后打印结果为:
从圆中一次取出的数据为:3692718510
最后剩余的数位:4
funA(int *x,int a,int b){
return a*b;
}
funB(int*x,int a,int b){
return a%b;
}
funC(int (*t)(), , int x ,int y){
return (*t)(y,x);
}
Main(){
Int x,a,b;
A = 9;
B = 3;
X = funa(b,a);
X += funC(funB,a,b);
Printf(“%d”,x);
}
求输出结果
下列哪种定义方式是错误的
Char w[2][40];w[1]=”string1”;
Char *w[2];w[1] = “string2”;
Char w[][40] = “string3”;
Char w[] = “string4”;
Java
求结果
Public Test{
Public void do(){
Static int I;
++I;
}
Public static void main(String[] args){
Test test = new Test();
test.do();
system.out.println(i);
}
}
数据库的题目也有一些,比如某个数据库,三个值 A B score
要查找score的平均成绩,按B分组,如果分数相同,按B的降序显示,还要按平均Score的升序显示
5、内存和指针使用的理解
Linux系统(核心技术点)
1、进程有独立的地址空间
2、进程间通信的机制
3、描述OSI分层结构
———————————————————————————————————————
1、存储区有哪些,static int a存在哪个区
2、二维数组指针定义,int指针定义,行指针定义,返回int型方法的指针带char型参数
3、合法的ip地址选择
4、在局部变量是否可以和全局变量同名
5、strcpy的实现
6、const char * p ,char const *p,char * const p的区别
7、堆和栈的区别
8、heap和stack的区别
9、判断程序错误有一条程序 printf(str);(str是char型)
10、写出程序运行结果里有一条程序 x &=....(不知道&=是什么)
11、写出你接触过最复杂的数据处理
12、写了一个链表插入节点的方法
13、比较注重线程的操作
——————————————————————————————————————
单选题
1. 以下程序的输出结果是_____a
Main( )
{
Int n=4;
While (n- -)
Printf(“%d”,- -n);
}
a.) 2 0 b.) 3 1 c.) 3 2 1 d.) 2 1 0
2. 设有以下宏定义:
#define N 4
#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/
则执行语句:Y(5+1)为_____c
a.) 30 b.) 28 c.) 26 d.) 24
3. enum ENUM_A
{
X1
Y1
Z1=5
A1
B1
};
enum ENUM_A enumA=Y1;
enum ENUM_A enumB=B1;
请问 enumA=( ); enumB=( ); b
a.) 1,4 b.) 1,7 c.) 2,4 d.) 1,5
4.若有函数max(a,b),并且函数指针变量p已指向函数,当调用该函数时正确的调用方法:______c
a.) (*p)max(a,b); b.) *pmax(a,b); c.) (*p)(a,b); d.) *p(a,b);
5. 对栈S进行下列操作:push(1),push(5),pop(),push(2),pop(),pop()。则此时栈顶元素是______ d
a.) 1 b.) 2 c.) 0 d.) 不确定
6.在一个32位的操作系统中,设void *p=malloc(100)。请问sizeof(p)的结果是___b_
a.) 100 b.) 4 c.) 2 d.) 6
7. 若已定义:int a[9],*p=a,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是_____c
a.) p+1 b.) a+1 c.) a++ d.) ++p
8.设有如下定义:
Unsigned long pulArray[]={6,7,8,9,10}
Unsigned long *pulPtr;
则下列程序段的输出结果为______d
{
pulPtr=pulArray;
*(pulPtr+2)+=2;
Printf(“%d,%d\n”,*pulPtr,*(pulPtr+2));
}
a.) 8,10 b.) 6,8 c.) 7,9 d.) 6,10
9.以下程序运行后,输出结果是 d(c)
Void main( )
{
Char *szStr=”abcde”;
szStr +=2
printf(“%lu\n”,szStr);//printf(“%d\n”, *szStr);
return;
}
a.) cde b.) 字符c的ASCLL码值 c.) 字符c的地址 d.) 出错
10. 给出以下定义: C
Char X[ ]=”hello”;
Char Y[ ]={‘h’,’e’,’l’,’l’,’o’};
则正确的叙述为______
a.) 数组X和数组y等价 b.) 数组X和数组Y的长度相同
c.) 数组X的长度大于数组Y的长度 d.) 数组X的长度小于数组Y的长度
11. 在32位X86下,有下列程序
#include{
Union
{
Int k;
Char i[2];
}*s,a;
S=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf(“%x\n”,a.k);
}
输出结果是______a(d)
a.) 3839 b.) 3938 c.) 380039 d.) 不可预知
12.有如下函数定义:
Unsigned long MyFunc(unsigned long ulKey)
{
return ( ((ulKey &0x000000ffUL)<<24)
|((ulKey &0x00000ff00UL)<<8)
|((ulKey &0x00ff0000UL)>>8)
|((ulKey &0xff000000UL)>>24)
}
MyFunc(0x12345678)的返回值_____c
a.) 0x12345678 b.) 0x87654321 c.) 0x78563412 d.) 0x12563478
13. ((a>b)?a:b)代表什么含义______b
a.) 代表a,b之中较小的那个值 b.) 代表a,b之中较大的那个值
c.) 代表a是否比b大 d.) 语法错误
14.某系统总线的一个总线周期包含3个时钟周期,每个总线周期可以传送32位数据。若总线的时钟频率为33MHz,则总线带宽为_____MB/s。d(33*32)/3= 44
a.) 11 b.) 22 c.) 33 d.) 44
15.如下定义,则s在内存中占多大空间______a
#pragma pack (1)
Union
{
Struct
{
Unsigned char aa:4;
Unsigned char ab:4;
} a;
Unsigned char c;
Unsigned char d;
} s;
a.) 1byte b.) 2byte c.) 3byte d.) 4byte
16. 如下定义:
Union tagAAAA
{
Struct
{
Char ucFirst;
Short usSecond;
Char ucThird;
}half_a;
Long li
}number;
在按1字节对齐情况下:sizeof(union tagAAAA)大小是____a
在按4字节对齐情况下:sizeof(union tagAAAA)大小是_____c
a.) 4byte b.) 6byte c.) 8byte d.) 12byte
17. 0x12345678在采用BigEndian中内存的排列顺序是__a___,在采用LittleEndian内存中的排列顺序是_c____(答案从左到右内存地址依次增加)
a.) 12 34 56 78 b.) 34 12 78 56 c.) 78 56 34 12 d.) 56 78 12 34
18.关于静态变量,下面说法“不正确”的有_______a
a.) 静态变量在堆栈中分配;
b.) 静态变量的作用域一定是局部的,例如在一个文件内或一个函数内;
c.) 静态变量可分为静态局部变量和静态全局变量;
d.) 静态变量存在于数据段中;
19. 下面正确的有_____a
a.) 在中断中,不能同步获取信号量,但可以释放信号量;
b.) 在中断中,可以使用系统调用sleep函数来等待一会儿;
c.) 每一个进程有自己的独立地址空间,每一个线程也有自己的独立地址空间;
d.) CPU占有率为60%,意思是CPU有60%时间在运行指令;40%时间没有运行指令;
20.设有如下定义:int(*ptr)( );则以下叙述中正确的是_____c
a.) ptr是指向一维组数的指针变量;
b.) ptr是指向int型数据的指针变量;
c.) ptr是指向函数的指针,该函数返回一个int型数据;
d.) ptr是一个函数名,该函数的返回值是指向int型数据的指针;
21.在Windows95环境下,定义数组:int **a[2][4];则数组a所占用的内存单位为_____b
a.) 8字节 b.) 32字节 c.) 64字节 d.) 不能确定
22.由国际标准化组织(ISO)和国际电信联盟(ITU-T)共同提出的开放系统互连(OSI)参考模型中共有__b_层,参考模型的最高层则为___c__层。
a.) 4 b.) 7 c.) 应用 d.) 会话
23.关于以太网中的ARP协议,描述错误的是_____a_
a.) 根据IP地址查询其对应的MAC地址;
b.) 根据MAC地址查询其对应的IP地址,便于IP通信;
c.) 通过ARP协议产生的IP和MAC地址的映射,超时会淘汰;
d.) ARP请求中的MAC地址为广播地址;
24.关于TCP、UDP及其上层的应用,描述错误的是____b___
a.) TCP协议时面向连接的,UDP协议是面向无连接的;
b.) UDP不保证数据的可靠传送,而文件的传递时要求必须无错传送的,因而所有基于文件传递的应用都不能基于UDP,如TFTP;
c.) telnet是基于TCP的终端应用,连续输入的多个字符可能会被封装到一个TCP包中;
d.) 在同一节点上,基于TCP和UDP的应用端口号可以重叠;
25、下面合法的IP地址是:(c )。
A. 129,1,150,115
B. 211.260.218.244
C. 192.168.192.1
D. 24.128.12
改错题
1. 请指出下面程序的错误
Unsigned char i=10;// int i = 10;
Char b=100;
Char *p;
Void f( void )
{
//p = &b;
While(- -i >=0)
{
*(p++)=d;// (*p)++;//*p = d
}
}
2.下面函数要实现打印hello world的功能,请问程序中有何错误?
Void *GetMemory(void)
{
Char str[ ] =”hello world”;// char *str = ”hello world”;
Return str;
}
Void Test(void)
{
Char *str = NULL;
Str = (char *) GetMemory();
Printf(str);//printf(“%s”, str);
}
3.请问如下代码有什么错误
#define MAX_SIZE 1000
#define NULL 0//不要
#define TRUE 1
#define FALSE 0
Struct XXX
{
Unsigned short a;
Unsigned short b;
};
Int demo (struct XXX *p, unsigned long size)
{
Struct XXX *temp;
Temp=(struct XXX *)malloc(sizeof(struct XXX) *MAX_SIZE);
If(NULL==temp)
{
Return FALSE;
}
Memcpy(temp,p, sizeof(struct XXX)*size);
。 。 。(其他正常操作)
Free(temp);
//temp = NULL;
Return TRUE;
4.如下程序用于把“blue”字符串返回,请指出其中的错误:
Char *GetBLUE(void)
{
Char* pcColor;
Char* pcNewColor;
pcColor=”blue”;
pcNewColor=(char*)malloc(strlen(pColor));//pcNewColor=(char*)malloc(strlen(pColor)+1)
//memset(pcNewColor, 0, strlen(pColor)+1);
strcpy(pcNewColor,pcColor);
return pcNewColor;
}
5.请问如下程序段有什么错误
Main( )
{
Unsigned long i = 0,*p,*p1;
P=(unsigned long *)malloc(10000);// P=(unsigned long *)malloc(10000*4)
P1=p;
For (i=0;i<9999;i++)
{
*p1=0x100;
P1++;
}
。 。 。(其他操作)
free(p);
//p = NULL:
编程题
对称数判断问题
请编写一段程序,判断一个正整数是否为对称数(对称数即左右对称数字,如3、22、121、1331、34543等),不允许利用C语言将数字转换为字符串的库函数。
BOOL JudgeNumberSymmetry(unsigned long ulNumber)
排队队列问题
n个人,排成1对,(p1,p2,p3….pn)从第1个人开始从1报数,报数到3的人离开队列,队列里的下一个人继续从1开始报数,依次反复,当数到队列尾时,从队列头部继续报数,这样周而复始,直到队列剩一人。
给一个简单例子:
1,2,3,4,5,6,7,共7人
报数结果如下:
1,2,4,5,7,第一轮,3,6离开队列,7报数1,然后从队列头部继续报数,那么第1个人报数2,如此
1,4,5这样第二轮,位置2和位置7离开队列,并且从队列头部继续报数,第1个人报数1,因为对队列尾部的7恰好报数到3。
1,2这样第3轮,5淘汰,
然后开始位置1的人报数1,最后位置1正好报数3,于是离开队列,最后剩下的人是2。
这样给定7个人,原始位置2的人是剩下的人。
请实现一个简单程序,实现上述问题,程序输入n,输出那个最后剩下的人的原始位置。
———————————————————————————————————————
基础题
1.196.183.27.0要划分为2个网段,子网掩码是多少
2.A类网址最多可以包含多少个网络
3.栈的定义 题目为英文,选择题
4.队列的定义题目为英文,选择题
5、
funA(int *x,int a,int b){
return a*b;
}
funB(int*x,int a,int b){
return a%b;
}
funC(int (*t)(), , int x ,int y){
return (*t)(y,x);
}
Main(){
Int x,a,b;
A = 9;
B = 3;
X = funa(b,a);
X += funC(funB,a,b);
Printf(“%d”,x);
}
求输出结果
6、
下列哪种定义方式是错误的
Char w[2][40];w[1]=”string1”;
Char *w[2];w[1] = “string2”;
Char w[][40] = “string3”;
Char w[] = “string4”;
Java
求结果
Public Test{
Public void do(){
Static int I;
++I;
}
Public static void main(String[] args){
Test test = new Test();
test.do();
system.out.println(i);
}
}
7、数据库的题目也有一些,比如某个数据库,三个值 A B score
8、要查找score的平均成绩,按B分组,如果分数相同,按B的降序显示,还要按平均Score的升序显示
9、Arraylist和linklist的区别
10、方法重载和隐藏的区别
11、在不同版本下INT的大小会不会改变
12、关于GC内存回收系统什么时候回收资源
13、==和equal的区别
14、接口和抽象类的区别和优点
15、关键字
16、Static的用法
———————————————————————————————————————
题目1:在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
题目2:New delete 与malloc free 的联系与区别?
题目3:static有什么用途?
题目4:引用与指针有什么区别?
题目5:请实现排序函数。
void sort(int data[],int size)
{
}
题目 6:
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test 函数会有什么样的结果?
题目7:已知strncmp 函数的原型是
int strncmp(char *str1, char *str2, int maxlen);
比较字符串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0,maxlen指的是str1与str2的比较的字符数。此函数功能即比较字符串str1和str2的前maxlen个字符。
不调用C++/C 的字符串库函数,请编写函数实现
题目8:查错,请找出如下API的错误。
/*函数功能,从传入的字符串查找某个特定字符 0x47f1 ,如果找到,返回1,如果没找到,返回0*/
int FindSpecialString(char* pString)
{
char i = 0;
char tmpString[5000];
memcpy(&tmpString, pString,sizeof(pString));
for( i = 0; i < 5000; i ++)
{
if( 0x47f1 == tmpString[i])
{
return 1;
}
}
}
——————————————————————————————————————
什么是预编译
何时需要预编译:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
char*constp;
charconst*p
constchar*p
上述三个有什么区别?
char*constp;//常量指针,p的值不可以修改
charconst*p;//指向常量的指针,指向的常量值不可以改
constchar*p;//和charconst*p
charstr1[]="abc";
charstr2[]="abc";
constcharstr3[]="abc";
constcharstr4[]="abc";
constchar*str5="abc";
constchar*str6="abc";
char*str7="abc";
char*str8="abc";
cout
2、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。
while(1){}或者for(;;)
3、关键字static的作用是什么?
定义静态变量
4、关键字const有什么含意?
表示常量不可以修改的变量。
5、关键字volatile有什么含意?并举出三个不同的例子?
提示编译器对象的值可能在编译器未监测到的情况下改变。
——————————————————————————————————————
1、 编写一段程序实现以下功能:
输入一个整数n ;
A、 如果n是一位整数,则输出n,否则将各个位上的数加起来得到结果n,
B、 继续步骤A
例子:输入n=45699
1、 各位之和为4+5+6+9+9=33 不是一位数,则n=33
2、 继续各位之和为:3+3=9;结果为一位数,得到最后结果为9
2、输入一个整数N,和一个整数M,则由1到N的各个整数围成一个圆,现要求你从1开始数到M并将第M个数从此列中去掉,并存入已给出的数组,继续从你取出的数的后一位从1开始数,再次数到M为止,从此列中去掉,并存入已给出的数组,一直这样数,直到剩余一个数,最后把你存入数组的数和最后一个数分别打印出来。
例子:
N=10,M=3;
A、1 2 3 4 5 678910
从1开始数数到M(3)则将3取出,并存入数组,剩余数为
B、1 2 4 5 678910
从下一位(4)作为1开始数,数到M(3)即6,则将6取出,并存入数组,剩余数为
C、1 2 4 5 78910
(依此规律继续,直到剩余最后一个数为止)……………………
最后打印结果为:
从圆中一次取出的数据为:3692718510
最后剩余的数位:4
———————————————————————————————————————
1、存储区有哪些,static int a存在哪个区
2、二维数组指针定义,int指针定义,行指针定义,返回int型方法的指针带char型参数
3、合法的ip地址选择
4、在局部变量是否可以和全局变量同名
5、Strcpy的实现
6、const char * p ,char const *p,char * const p的区别
7、堆和栈的区别
8、heap和stack的区别
9、判断程序错误有一条程序 printf(str);(str是char型)
10、写出程序运行结果里有一条程序 x&=....(不知道&=是什么)
11、写出你接触过最复杂的数据处理
12、写了一个链表插入节点的方法
13、比较注重线程的操作
14、有一些C++和通讯协议方面
———————————————————————————————————————
选择题:(每题3分)
1.8673849483768,从两边度一样吗?
A、是B、否
2.工工人人工工人相对于2211221,那么工工人人工人人相对于
A.2211211 B.1122122 c.2222111 d.1111222
3.有红白黑三种球各三个,取三个球都是白色的概率是:
A.1/84 B.3/14C.1/14D.1/7
4.电灯开关,要是开关X1坏了不能通过,则从开关X2,X3通过,设每个开关坏了的概率是0.1那么灯泡不亮的概率是:(圆形为灯泡)
X3
X2
X1
开始
A 7.280B.0.981C.0.990D.1.000
还有一些图形逻辑题
编程题:(每题20分)
1.100个数,按照二分法查询一个数,要是有,就输出这个数的位置(数组的下标),没有,就输出NA。
用熟悉的语言写一个程序。
2.求指数平均
股市开市,每日都有指数平均,pt是收盘数。X是一个常数。
t是时间(天)
指数平均:当t = 1时EMAt = pt
当t > 1时EMAt = x*pt+(1-x)EMAt(这个EMAt为前一天的时间)
用熟悉的语言写一个程序。
——————————————————————————————————————
1. 数组中包含N个整数,从其中找出K个最小的数,写出你能想出的最快的方法。
2. 求Fiboncacci数列的第N项的值,1、1、2、3、5、8、13、21........,写出用循环的方法,写出用递归的方法,如果你还想到其他的方法,写下来吧。
3. 用数组实现一个栈(先进后出),只需简单的PUSH和POP操作,如果你还有空,加上栈满了自动扩容1倍的功能。
4. 输入一个整形数组,数组里有整数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值以及数组的开始位置和结束位置。要求时间负责度为0(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出该子数组的和为18,数组开始位置和结束位置是2和6。
5. 输入一串不重复的字符串,;列出所有可能的组合,例如:输入字符串 abc 输出 abc acb bac bca cab cba
6.
1) 自己写一个二叉树的类。
2) 假设你初始化了一个数,树里的数据如上图所示,请你用代码遍历这个二叉树,使用方式只要前序,后序与中序遍历中的一个,并描述另外两个和你使用方式的区别。
3)假设你选择用代码写了中序遍历,那你还需要描述 前序,后序遍历与中序遍历的区别