最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在 多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
43.描述一下JVM加载class文件的原理机制? 44.试举例说明一个典型的垃圾回收算法? 45.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来.
46.请写一个java程序实现线程连接池功能?
47.给定一个C语言函数,要求实现在java类中进行调用。
48、编一段代码,实现在控制台输入一组数字后,排序后在控制台输出; 49、列出某文件夹下的所有文件;
50、调用系统命令实现删除文件的操作; 51、实现从文件中一次读出一个字符的操作; 52、列出一些控制流程的方法; 53、多线程有哪些状态? 54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入\为止,让你写出客户端的程序;
55、作用域public,private,protected,以及不写时的区别 答:区别如下:
作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly
56、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 57、char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
58、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify 59、垃圾回收机制,如何优化程序? 希望大家补上,谢谢
60、float型float f=3.4是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 61、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 答:Collection FrameWork如下: Collection ├List
│├LinkedList │├ArrayList │└Vector │ └Stack └Set Map
├Hashtable ├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射
62、Java中异常处理机制,事件机制? 11、JAVA中的多形与继承? 希望大家补上,谢谢 63、抽象类与接口?
答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。
华为从事通信网络技术与产品的研究、开发、生产与销售,是中国电信市场的主要供应商之一,并已成功进入全球电信市场。每年华为都要在各大高校招聘大批的应界生,特别是华中科技大学。公司网址是:http://www.huawei.com 下面据说是华为公司的笔试题,其实我想它一次笔试不可能出这么多题,也许是多年笔试题的合集,或者也包括了其他公司的笔试内容。最近国际商用工程集团(http://www.ibegroup.com/)的网管告诉我这是他们的题目,是网上以讹传讹的说成是华为的题目了,我想应该是这样的,毕竟题目中赫然出现了他们公司的网址呢(见题2),希望大家转贴的时候也能写上这段声明。
另外我发现白云黄鹤有人不声不响的贴出我做的答案,还没有声明出处,俺很严肃的告诉他,俺很生气angry,后果很严重。
个人答案,仅供参考。呵呵,不过保证绝大多数答案的准确性。
1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++); a = ?
答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a; 改后答案依次为9,10,10,11
2.某32位系统下, C++程序,请计算sizeof 的值(5分). char str[] = “www.ibegroup.com” char *p = str ; int n = 10; 请计算
sizeof (str ) = ?(1) sizeof ( p ) = ?(2) sizeof ( n ) = ?(3) void Foo ( char str[100]){ 请计算
sizeof( str ) = ?(4) }
void *p = malloc( 100 ); 请计算
sizeof ( p ) = ?(5)
答:(1)17 (2)4 (3) 4 (4)4 (5)4
3. 回答下面的问题. (4分)
(1).头文件中的 ifndef/define/endif 干什么用?预处理
答:防止头文件被重复引用
(2). #include 和 #include “filename.h” 有什么区别?
答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。 (3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern \修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是? 答:实型
4. 回答下面的问题(6分) (1).
Void GetMemory(char **p, int num){ *p = (char *)malloc(num); }
void Test(void){ char *str = NULL; GetMemory(&str, 100); strcpy(str, \printf(str); }
请问运行Test 函数会有什么样的结果? 答:输出“hello” (2).
void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”); free(str); if(str != NULL){ strcpy(str, “world”); printf(str); } }
请问运行Test 函数会有什么样的结果?
答:输出“world”,因为free(str)后并未改变str所指的内存内容。 (3).
char *GetMemory(void){ char p[] = \return p; }
void Test(void){ char *str = NULL; str = GetMemory(); printf(str); }
请问运行Test 函数会有什么样的结果? 答:无效的指针,输出不确定
5. 编写strcat函数(6分)
已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc); 其中strDest 是目的字符串,strSrc 是源字符串。 (1)不调用C++/C 的字符串库函数,请编写函数 strcat 答: VC源码: