范文无忧网面试笔试面试回答

JAVA数组集合题目组助!

08月28日 编辑 fanwen51.com

[Java类面试题目]1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j...+阅读

JAVA数组集合题目组助!

import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class ListTest { /* 这是一个JAVA的数组集合的练习中的题目,助!设计一个Java程序,要能完成以下功能:1) 程序要能够存储任意多个学生的信息。2) 学生的信息有:学号、姓名、性别、年龄等相关字段。3) 可以增加学生的信息,如果学号相同就不能添加4) 根据用户输入的学号信息,可以删除相应的学生信息5) 如果用户输入学号和其它信息,那么可以更改相应学生的信息 6) 在测试类里面进行相应的操作,可以完成上面的任务。7) 采用List接口中的具体类实现 */ Liststudents=new ArrayList(); public void insertStudent(Student student) { if(getStudentById(student.id)==null){ students.add(student); }else { students.remove(getStudentById(student.id)); students.add(student); } } public void delStudentById(int id) { for(Student student:students){ if(student.id==id){ students.remove(student); System.out.println("修改成功\n"); return; } } System.out.println("所要删除的学生信息不存在!!!\n"); } public Student getStudentById(int id) { for(Student student:students){ if(student.id==id){ return student; } } System.out.println("查询的学生信息不存在"); return null; } public static void main(String[] args) { ListTest listTest=new ListTest(); while (true) { System.out.println("在下行输入要执行的指令(i:增加、d:删除、u:修改、d:退出):"); Scanner ins=new Scanner(System.in); String choose=ins.next(); if (choose.equalsIgnoreCase("u")) { Scanner in=new Scanner(System.in); System.out.println("在下行输入学生:学号、姓名、性别、年龄,以空格区分:"); Student student=new Student(); student.id=in.nextInt(); student.name=in.next(); student.sex=in.next(); student.age=in.nextInt(); listTest.students.add(student); System.out.println("修改成功\n"); continue; } if (choose.equalsIgnoreCase("d")) { Scanner in=new Scanner(System.in); System.out.println("在下行输入要删除的学生学号:"); listTest.delStudentById(in.nextInt()); //System.out.println("删除成功\n"); continue; } if (choose.equalsIgnoreCase("i")) { Scanner in=new Scanner(System.in); System.out.println("在下行输入学生:学号、姓名、性别、年龄,以空格区分:"); Student student=new Student(); student.id=in.nextInt(); student.name=in.next(); student.sex=in.next(); student.age=in.nextInt(); listTest.students.add(student); System.out.println("增加成功\n"); continue; } if(choose.equalsIgnoreCase("e")){ break; } System.out.println("操作指令输入错误!!!\n"); } } } class Student{ int id;//学号 String name; String sex; int age; }//我只想说你们老师太操蛋了,这真不是一个初学者能做出来的

面试题list和vector的区别

vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取(即使用[]操作符访问其中的元素),但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝(复杂度是O(n)),另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。

list是由数据结构中的双向链表实现的,因此它的内存空间可以是不连续的。因此只能通过指针来进行数据的访问,这个特点使得它的随机存取变的非常没有效率,需要遍历中间的元素,搜索复杂度O(n),因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。

请说明数组和指针的联系与区别越详细越好面试用的条理清晰

这种题目真的很无趣,感觉没有任何意义啊。只要知道它们最本质的含义就可以了,万变不离其质。数组:定义了一块连续的内存区域。指针:就是一个普通变量,如果非要说点特殊的,那么就是它指向某一块内存区域的首地址。根本不相关的2个概念,硬要扯什么区别和联系,实在是费解。都是被应试教育给害得啊。总是听到有人说指针搞不懂,很难。实在难以理解,我怀疑他们都是学文科的。指针没有任何特别之处,本质就是一普通变量,在32位系统中占4个字节,和int类型一样。既然你这么问了,就随便说点。1.当作为函数参数传递的时候,数组可以当指针用,本质就是取数组第一个元素的内存地址传过去。【你可以当这个是联系】2.指针虽然可以当数组用,但本质上是完全不一样的。

给你举个例子:int *p = null;int buff[10];以下都在32位系统下考虑sizeof(p) 永远等于4,请看上面的2点核心定义,指针就是一普通变量,和int一样,所以大小是4.sizeof(buff)等于10*4=40.原因就是:此数组内存结构是连续的10个int变量,每个int变量占4个字节。【你可以当这个是区别】说来说去,都是围绕最核心的2点。搞明白了那2点。可无忧!...

一道面试算法题

这是典型的桶排序算法,

假设有9个桶,每个桶里存放N个数字。桶应该是唯一的。

所以推出结论:

1。桶是唯一的(我们因此可以利用Hashtable的唯一性来做到);

2。桶内成员可以不排序,因此可以利用数组或者Vector来做到;

3。Hashtable需要主键key来唯一标识,正好数字1~9是不重复的,是唯一的;

3。把每个数值的第一位取出来,以第一位值做为key找到hashtable中的相应vector,再将vector.addElements(该数值);

4。完成;

具体做法:

1.生成桶,9个桶,每个桶以数字1~9做为主键命名

Hashtable table=new Hashtable();

for(int i=1;iVector vector=new Vector();

table.put(new String(i), vector);

}

2. 遍历每个数字,将当前数字的第一位分解出来,办法有很多种,比如除十法,这里说明直接转字符串再取第一位法:

假设你的要处理的数字们放在数组里面int[] tmp;

for(int i=0;iint num=tmp[i];

String str=new String(num);

char ch=str.charAt(0);

//压入到桶里,先把想要的桶找到,利用主键

Vector vect=(Vector)table.get(""+ch);

//找到桶后再把数值压到桶里

vect.addElements(new Integer(num));

}

//取出来的时候,有多种方法,一种是利用key取出Vector,再遍历Vector,得到其中元素,元素的key为String, 内容为Integer

另一种方法是先遍历hashtable再遍历vector

同样的应用还有给一幅被洗过的扑克牌进行升或降排弃,因此可以建13个桶(A~K),每个桶内的牌再按花色排序(相当于对Vector排序,也可以不用Vector而直接用数组或者ArrayList等等)

我看了你的修改提问,现回答如下:

即使不能使用java己经封装好的Hashtable类,自己也可以很轻易地利用代码编写出类似于Hashtable的集合类,用来包容其它对象,并以主键key来唯一标识.

如果你不想这样思考,那么直接用数组来实现桶排序也很方便,外层数组长度是固定的,即1~9共9个数组元素 Elements e=new Elements[9]。

这九个数组元素不是数字,必须是你自定义的类。并用这个类形成链表结构

比如:

public class Element{

int data;//存数字

Element next=null;//下一个元素是谁

}

比如有数字 51,52,53 这三个数都是以5打头,那么他们应该放在一个桶里面,即第五号桶,也就是外层数组的第个元素中。

if( 判断该数字,是否应该放在5号桶){

Elements tmp=new Elements();

tmp.data=该数字;

Elements current=e[4];

if(current==null){current=tmp;}//如果该桶以前从未放过数字,则放进去的就是头部,直接引用就行了,比如51应该放在头部

else{//如果该桶以前己经放过数字,如51,己经放了,现在放52。52就应该做为51的next元素,而53就是52的next就行了

while(current!=null){current=current.next;}//遍历,从而取到最后一个元素的引用

//取到最后一个元素后,current=tmp;即可,这样就形成了链表结构

}

}

通过上述代表形成的结果是, 外层结构是9个元素组成的数组

每个数组元素是Elements类对象形成的链表结构,有头有层通过next字段串连起来。

如果要排序,只需要对每个链表内部进行排序就可以了

延伸阅读:

java面试题目最全的ja面试题目,请您对此进行阅读与参考:JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目...

中软Java笔试题目Ja笔试题目 (一) 一、判断题(30分) 1.Ja程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。 2.对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属...

关于集合的问题。题目如下含有4个元素的集合, 可以构成15个等价关系. 对zhangzhuxueli的回答修改补充如下: 4个元素互不等价, 有C(0,4)=1种情形; [C(m,n)表示n中取m的组合数] 4个元素分为3个等价类 (分别...

Java集合测试题public class CharCount { /** * 计算字符串中每个字符出现的个数 * param str * return */ public static MapgetCharCountOfString(String str){ Mapmap = null; if(str =...

java基础题目public class TestEmployee { public static void main(String[] args) { // 在这里面可以测试 } } class Employee{ private String name; private int birthMonth; public...

java经典编程题目import java.util.*; import javax.swing.JOptionPane; class abc { public static void main(String args[]) { for(int i=10;i>0;i++) { max(); } } public static void y...

java编程题目楼上正解,很好的面向对象的思想^-^ 这里从另外的一个角度来实现: 分析一下,这道题是比较圆面积,而圆面积=PAI * r^2,只与半径r有关,所以,这道题的本质是比较,三个圆的半径大小。 pub...

Java上机题目public class Book { private String title; private int pageNum; public String getTitle() { return title; } public void setTitle(String title) { this.title = titl...

JAVA面试题目JAVA面试题:3道问答题!一、抽象策略角色: public interface SuperCash { public double acceptCash(); } 二、具体策略角色: a..策略角色1(普通时间) public class NormalCash imple...

推荐阅读
图文推荐
栏目列表