江苏诚迈科技笔试题2013

int,long 都是4个字节,char 一个字节

1. OSI七层模型

物理层,链路层,网络层,会话层,表示层,应用层

2.进程和线程的通信方式

线程:进程变量,临界区,事件,消息,信号量,端口通信,管道,共享内存

进程:信号,消息,信号量,端口通信,管道,共享内存

3.列出手机操作系统有哪些

android,ios,symban,window phone

4.你对诚迈有哪些了解

5.常用的数据结构

数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构;

集合结构:除了同属于一种类型外,别无其它关系

线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入,删除操作.

树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等)

图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意

C/C++

1.请指出下列程序是否存在问题,如由请指出

void Test(){
 char string[10],strl[10];
 int i;
 for(i=0;i<10;i++){
    strl[i] = 'a';
 }
 strcpy(string,strl);
}
 strcpy内存溢出,字符串没有以‘\0’结尾,可以用strncpy

2.写一个“标准”宏min,返回两个数中较小的那个,如果在你写的代码的基础上,用代码“least=min(*p++,b)”,会发生什么事?

#define min(x,y) ((x)<=(y)?(x):(y))

int p[2]={1,5}; int b=3;min(*p++,b) 返回的将是5,只要操作数复杂的就会容易出错


3.指出问题

void Test(){
  char *str=(char*)malloc(1024);
  strcpy(str,"hello");
  free(str);
}
对str使用之前要进行判空


4.typedef union{long i;int k[5];char c;} DATE

struct data{int  a;DATE now;double d;}tmp;

DATE m;

语句printf("%d",sizeof(data)+sizeof(m))的输出?

联合DATE的大小是5*4=20,结构体的大小是4+20+8=32,输出52


5. static,const 和 volatile由什么用途?

static:

1. 函数体内的static变量只被初始化一次,下次访问将维持上次的结果。改变了变量的储存域。

2. 全局的static变量能被模块内的所有函数访问,同样也是被初始化一次。非static全局变量能被其他的模块访问,改变了变量的作用域。

3. static函数,只能被声明它的模块内调用,其他模块不能调用。与上面相同。

4. 类的static变量只被初始化一次,类的所有的对象只有一个static变量的拷贝。

5. 类的static函数,这个函数没有this参数,无法访问类中非static变量。

const:

1.修饰变量,表示这个变量是常量,初始化后无法修改。

2.修饰类函数,表示类函数不改变类的变量的值。

3.修饰函数返回值,表示返回的结果不能被修改。

4.修饰函数的参数,表示参数在函数体内不能被修改。

volatile:

1.修饰变量,表示这个变量随时都有可能变化,让编译器不要进行代码优化。

比如 int* a; int b=*a**a,代码优化: int c,d;c = *a;d=*a;b=c*d;

当*a的值经常变化的时候,c与d就不相同,得到的b将不是一个数的平方。

改为:volatile int* a, int c=*a;d=c*c;这样结果就是一个数的平方。

6.下面代码的输出结果

#include<stdio.h>
main(){
 int a,b,c,d;
 a=10;
 b=a++;
 c=++a;
 d=10*a++;
 printf("b,c,d=%d,%d,%d",b,c,d);
 return 0;
}

b=10,c=12,d=120


7.指出下列程序会由什么错误或者效果

#define MAX 255
int main(){
  unsigned char A[MAX],i;
  for(i=0;i<=MAX;i++)
       A[i]=i;
}
A[MAX]内存溢出

8.引用与指针有什么区别?

1. 引用必须初始化,指针可以不用。

2. 引用初始化后就不能改变它的指向,指针可以改变。

3. 引用不可以指向空,指针可以指向空。


9.堆和栈的区别是什么?后面的这些变量哪些在堆上,哪些在栈上,如函数参数,malloc内存,new内存,变量?

区别:

1.堆由程序员申请和释放,而栈是操作系统。

2.堆是零星的内存区域,通过链表链接在一起,一般没有大小限制,而栈是连续的内存区域,有大小限制(2M)。

函数参数,变量在栈上,通过malloc和new分配的在堆上。


10. c和c++中的struct有什么不同,c++中的struct和class有什么不同?

c++的struct不仅包括c的功能,还有class功能。

c++的struct变量默认访问权限是public,而class是private。


11. 已知strcpy函数的原型是:

(1)不使用库函数,实现strcpy函数。

char* strcpy(char* strDest,char* strSrc){
  assert(strDest!=NULL && strSrc!=NULL);
  char* d = strDest;
  char* s = strSrc;
  while(*d++=*s++ !='\0');
  return strDest;
}

(2)解释为什么要返回char*

便于链式操作,比如 char *p=strcpy(d,s);


JAVA

1. 下列哪个说法是正确的? A

A 被final修饰的域可被看作是常量,完全用大写字母表示。

B 静态初始化器是构造函数之前加上static修饰符。

C 数组是用来存放一批相同类型的对象或数据,当数据的顺序和个数经常变动时就要用到向量来存放。

D Java语言设计C/S程序时,应注意服务器使用Socket类来处理客户机的连接请求。


2. 不使用static修饰符限定的方法称为对象(或实例)方法,下列哪个说法是正确? B

A 实例方法可以直接调用父类的实例方法。

B 实例方法可以直接调用父类的类方法。

C 实例方法可以直接调用其他类的实例方法。

D 实例方法不可以直接调用本类的类方法。


3. 漫谈final,finally,finalize的区别。

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的


4. GC是什么?为什么要GC?

http://www.cnblogs.com/jasonteststudy/archive/2011/08/01/2123619.html


5. sleep()和wait()有什么区别?

sleep是当前线程还占用着CPU时间,不过什么事都不做。

wait是当前线程释放CPU占用,给其他线程运行,等待下次CPU的调度。


6.error和exception的区别?

Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。

Exception(异常)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。


7. 同步和异步区别?在什么情况下会使用到它们,举例说明?

http://blog.chinaunix.net/uid-21411227-id-1826898.html


8. short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?

s1+1会将结果提升为int,在JAVA中,无法隐式的将结果转换为short,前者编译不通过。在C++中是可以编译通过的。

s1+=1,java会将等号右边的结果隐式的强制转换为等号左边的类型,后者编译通过。


9. ArrayList 和vector的区别?

http://www.cnblogs.com/muzongyan/articles/1782788.html


10. 什么时候用assert?

http://blog.csdn.net/wguoyong/article/details/6909828


11. 数组和String是否都由length()这个方法?

数组是length属性


12. switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

不过JDK1.7版本以上,支持String。


13. 编写一个Singleton;

class singleton{
  private static singleton instance = NULL;
  public singleton getInstance(){
     if(instance==NULL){
        instance = new singleton();
     }
      return intance;
  }
}


你可能感兴趣的:(java,C++,android,笔试,诚迈)