我在网上找个一套题,嗯随便做做,如果有什么不对的地方,欢迎指出。

试卷网址是http://www.doc88.com/p-3897512002389.html

1.给定一个数组,用冒泡和选择排序

package exam1;/*** 给定一个数组,用冒泡和选择排序*/
public class exam1one {public static void main(String[] args) {int[] arr = {12,5,648,34,1,8,44,9441};bubbleSort(arr);for(int a:arr){//数组遍历System.out.print(a+"-");}System.out.println();int[] arr2 = {56465,5645,21,321,85,3,6594};selectSort(arr2);for(int a:arr2){System.out.print(a+"-");}}public static void bubbleSort(int[] arr){for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length-i-1; j++) {if (arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}public static void selectSort(int[] arr){for (int i = 0; i < arr.length-1; i++) {for (int j = i+1; j < arr.length; j++) {if (arr[i] > arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}
}

2.给定数组,去最大最小,然后求平均值

package exam1;/*** 给定数组,去最大最小,然后求平均值*/
public class exam1two {public static void main(String[] args) {int[] arr = {99,60,35,88,85,96,100};int result=0,ave;for (int i = 0; i < arr.length; i++) {if (arr[i] != max(arr) && arr[i] != min(arr)){result += arr[i];}}ave = result/(arr.length-2);System.out.println(ave);}public static int max(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i] > max){max = arr[i];}}return max;}public static int min(int[] arr){int min = arr[0];for (int i = 0; i < arr.length; i++) {if (arr[i] < min){min = arr[i];}}return min;}
}

3.给定一个由数字组成的字符串,如“451564613216546546849843651065168”,统计每个数字出现的次数

package exam1;/*** 给定一个由数字组成的字符串,如“451564613216546546849843651065168”,统计每个数字出现的次数*/
public class exam1three {public static void main(String[] args) {String nums = "451564613216546546849843651065168";char[] chars = nums.toCharArray();for (int i = 0; i < 10; i++) {int count = 0;for (int j = 0; j < chars.length; j++) {//将字符串变换为字符数组后,将字符串转变为ASCII码与数字0-9进行比较if (i == chars[j]-48){count++;}}System.out.println(i+"->"+count);}}
}

4.百钱买百鸡

package exam1;/*** 百钱买百鸡*/
public class exam1four {public static void main(String[] args) {for (int i = 0; i <= 33; i++) {for (int j = 0; j <= 50; j++) {if (3*i+2*j+(100-i-j)/3 == 100){System.out.println("公鸡="+i+",母鸡="+j+",小鸡="+(100-i-j));}}}}
}

5.十五只猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,
 直到最后一个猴子成为大王,问那个猴子成为大王【】【】【】

package exam1;/*** 十五只猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,* 直到最后一个猴子成为大王,问那个猴子成为大王*/
public class exam1five {public static int King(int n,int m){int r = 0;for(int i=2;i<=n;i++) {r = (r + m) % i;}return r+1;}public static void main(String[] args) {int key = exam1five.King(15,7);System.out.println("猴王是:"+key);}
}/*//true为王,false淘汰public static void main(String[] args){boolean[] a = new boolean[15];for(int i=0;i<15;i++){a[i] = true;}System.out.println("第"+isKing(select(a))+"个猴子成为大王");}//淘汰掉14只猴子public static boolean[] select(boolean[] a){int n = 0;int e;do{e = 0;for(int j=0;j<15;j++){if(a[j]==false){continue;}n++;if(n%7==0){a[j]=false;}if(a[j]==true){e++;}}}while(e!=1);return a;}//获取猴王的位置此时n==99public static int isKing(boolean[] array){int i=0;for(;i<array.length;i++){if(array[i]==true){i++;break;}}return i;}
}*/

6.

package exam1;public class exam1six {public static void main(String[] args) {exam1sixEmployee e[] = new exam1sixEmployee[4];e[0] = new exam1sixSaleriedEmployee("董一康",2,10000);e[1] = new exam1sixHourlyEmployee("董二康",3,100,200);e[2] = new exam1sixSalesEmployee("董三康",8,10000, (float) 0.8);e[3] = new exam1sixBasePlusSalesEmployee("董四康",11,30000, (float) 0.8,10000);for (int i = 0; i < e.length; i++) {System.out.println(e[i].getName()+"的工资是"+e[i].getSalary(2));}}
}
package exam1;
public class exam1sixEmployee {private String name;private Integer month;public float getSalary(int month){int salary = 0;if (this.month == month){return 100;}else{return 0;}}public exam1sixEmployee() {}public exam1sixEmployee(String name, Integer month) {this.name = name;this.month = month;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package exam1;public class exam1sixSaleriedEmployee extends exam1sixEmployee {private float monthlySalary;public exam1sixSaleriedEmployee(String name, Integer month, float monthlySalary) {super(name, month);this.monthlySalary = monthlySalary;}@Overridepublic float getSalary(int month) {return monthlySalary + super.getSalary(month);}
}
package exam1;public class exam1sixHourlyEmployee extends exam1sixEmployee {private float hourlySalaly;private int monthToHours;public exam1sixHourlyEmployee(String name, Integer month, float hourlySalaly, int monthToHours) {super(name, month);this.hourlySalaly = hourlySalaly;this.monthToHours = monthToHours;}@Overridepublic float getSalary(int month) {if (monthToHours > 160){return (float) (hourlySalaly*160 +(monthToHours-160)*hourlySalaly*1.5 + super.getSalary(month));}else{return hourlySalaly*monthToHours + super.getSalary(month);}}
}
package exam1;public class exam1sixSalesEmployee extends exam1sixEmployee {private float num;//月销售额private float tcl;//提成率public exam1sixSalesEmployee(String name, Integer month, float num, float tcl) {super(name, month);this.num = num;this.tcl = tcl;}@Overridepublic float getSalary(int month) {return num*tcl + super.getSalary(month);}
}
package exam1;public class exam1sixBasePlusSalesEmployee extends exam1sixSalesEmployee{private float baseSalary;//底薪public exam1sixBasePlusSalesEmployee(String name, Integer month,float num, float tcl,float baseSalary) {super(name, month, num, tcl);this.baseSalary = baseSalary;}@Overridepublic float getSalary(int month) {return baseSalary + super.getSalary(month);}
}

7.简述重载(Overloading)和覆盖(Overriding)的区别
    重载(Overloading):发生在同一个类中,方法名相同,参数列表不同,返回值无关。
    覆盖(Overriding):发生在子父类中,方法名相同,参数列表相同,返回值相同,子类的访问修饰符要大于或等于
父类的访问修饰符,子类的异常声明必须小于或等于父类的异常声明,如果方法被privete,static,final修饰,那么不能
被覆盖。

8.简述HashMap和Hashtable的区别
    HashMap实现原理:
    1.继基于哈希表(数组+链表+二叉树(红黑树))1.8JDK。
    2.默认加载因子为0.75,默认数组大小为16。
    3.把对象存储到哈希表中,如何存储? 把key对象通过hash()方法计算hash值,然后对这个hash值对数组
长度取余数(默认16),来决定该对KEY对象在数组中存储的位置,当这个位置有多个对象时,以链表结构存储,JDK1.8
后,当链表长度大于8时,链表将转换为红黑树结构存储。这样的目的是为了取值更快,存储的数据量更大,性能的表现更
明显。
    4.扩充原理:当数组的容量超过75%,那么表示该数组需要扩充,扩充算法为:当前数组容量<<1(相当于乘以2),扩
大1倍,扩充次数越多,会影响性能,每次扩充表示哈希表重新散列(重新计算每个对象的存储位置),我们在开发中尽量
减少扩充次数带来的性能问题。
    5. 线程不安全,适合在单线程中使用
    Hashtable:
    1.JDK1.0开始
    2.基于哈希表实现(数组+链表)
    3.默认数组大小为11,加载因子0.75
    4.扩充方式:原数组大小<<1
    5.线程安全的,用在多线程访问时使用
    HashMap和Hashtable都实现Map接口,因此很多特性非常相似。但是他们有以下不同点:HashMap允许键和值是
null,而Hashtable不允许键和值是null。   Hashtable是同步的,而HashMap不是。因此Hashmap更适合单线程
环境,而Hashtable适合于多线程环境。    HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。
另一方面,Hashtable提供了对键的列举(Enumeration)。   一般认为Hashtable是一个遗留的类。

9.简述接口和抽象类的区别
    (1)抽象类可以有构造方法,接口中不能有构造方法。
    (2)抽象类可以有普通成员变量,接口中是公开静态变量
    (3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
    (4)抽象类中的抽象方法的访问类型可以使public,protected和默认类型,接口中的抽象方法只能是public static
final类型的,并且默认为public abstract 类型。
    (5)抽象类中可以包含静态方法,接口中不能包含静态方法。
    (6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能
是public static final类型,并且默认即为public static final类型。

10.简述JAVA中的异常分类和异常处理机制
    异常分类:大致分为三类:Error、Exception、RuntimeException,Error类体系描述了Java运行系统中的内部错误
以及资源耗尽的情形,该类错误是由Java虚拟机抛出的,如果发生,除了尽力使程序安全退出外,在其他方面是无能为力的。
Exception类体系包括RuntimeException类体系和其他可查异常,可查异常是由于环境造成的,因此将是捕获处理的重点,
即表示是可以恢复的。RuntimeException类体系包括错误的类型转换、数组越界访问和试图访问空指针等,当Runtime-
-Exception出现时,即表示程序员设计时的时候出错。

异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个
封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异
常处理机制会将代码执行交给异常处理器。

11.简述实现线程的两种方式
    (1)继承Thread类:编写简单,如果需要访问当前线程,则无需使用Thread.currentThread()方法,直接使用this
即可获得当前线程。但线程类已经继承了Thread类,所以不能再继承其他父类。
    (2)实现Runnable接口:避免由于Java单继承带来的局限性。但编程稍微复杂,如果要访问当前线程,则必须使用
Thread.currentThread()方法。

12.简述TCP协议和UDP协议的区别
    UDP将数据及源和目的封装成数据包中,不需要建立连接,每个数据报的大小在限制在64k内,因无连接,所以是不可靠
协议,效率高;TCP需要通过三次握手完成连接,是可靠协议,在连接中能进行大数据量传输,传输前需要建立连接, 所以效率低。

13.简述类加载的概念和类加载的过程
    类加载概念:首先,是种机制!代码要运行须得先经过编译,编译后在工程目录中会产生一堆*.class文件(这种文件是
二进制流文件);而当JVM把这些*.class文件(里面包含类的描述数据,这个描述数据暂且可理解为JVM识别的一种约定规范)
加载到内存中,并且伴随对数据进行校验、转换解析、初始化,最终成为被JVM直接使用的Java类型,这个过程叫Java的类记载
机制。
    类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。
    1.加载阶段的作用
    通过类的全限定名来获取定义此类的二进制字节流,将此二进制字节流所代表的静态存储结构转化成方法区的运行时数据结构,
在内存中生成代表此类的java.lang.Class对象,作为该类访问入口.
    2.验证阶段的作用
    连接阶段第一步.验证的目的是确保Class文件的字节流中信息符合虚拟机的要求,不会危害虚拟机安全,使得虚拟机免受恶意
代码的攻击.大致完成以下四个校验动作:文件格式验证,源数据验证,字节码验证,符号引用验证
    3.准备阶段的作用
    正式为类变量分配内存并设置变量的初始值.(这里比较特殊,如我们在类中定义了 public static a = 1,在准备阶段
时候,为a分配了内存,但是这里初始化为0)。
    4.解析阶段的作用
    将类中的字符引用替换换位直接引用。个人理解是 str=“abc” ,这时候System.out.println(str)str为符号引用;
System.out.println("abc")直接相当于直接引用;
    5.初始化阶段的作用
    对类的静态变量,还有类的静态块进行初始化如(public static a = 1,在准备阶段给a分配内存,a初始化为0,在初始化
阶段时,a呗初始化为1)。

14.实现一个Worker对象,将对象放入HashSet并遍历,保证元素内的内容不重复

package exam1;import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;/*** 实现一个Worker对象,将对象放入HashSet并遍历,保证元素内的内容不重复* <Set集合中元素是无序的、不可重复的></>*/
public class exam1fourteen {public static void main(String[] args) {Set<Worker> set = new HashSet<Worker>();set.add(new Worker("李冬",21,13000,new Address("河南开封","65100")));set.add(new Worker("李孟",21,13000,new Address("河南开封","65100")));set.add(new Worker("动力",21,13000,new Address("河南开封","65100")));set.add(new Worker("北极星",21,13000,new Address("河南开封","65100")));set.add(new Worker("钢铁侠",21,13000,new Address("河南开封","65100")));for(Worker o : set){System.out.println(o);}}
}
class Worker implements Serializable {private String name;private int age;private double salary;private Address address;@Overridepublic String toString() {return "Worker{" +"name='" + name + '\'' +", age=" + age +", salary=" + salary +"," + address +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public Worker(String name, int age, double salary, Address address) {this.name = name;this.age = age;this.salary = salary;this.address = address;}public Worker() {}
}
class Address implements Serializable {private String address;private String postCode;public Address() {}@Overridepublic String toString() {return "Address{" +"address='" + address + '\'' +", postCode='" + postCode + '\'' +'}';}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPostCode() {return postCode;}public void setPostCode(String postCode) {this.postCode = postCode;}public Address(String address, String postCode) {this.address = address;this.postCode = postCode;}
}

15.利用对象序列化,将Worker对象写入文件保存起来,并读取文件,复原Worker对象。

package exam1;import java.io.*;/*** 利用对象序列化,将Worker对象写入文件保存起来,并读取文件,复原Worker对象。*/
public class exam1fifteen {public static void main(String[] args) {Worker worker = new Worker("李冬",21,13000,new Address("河南开封","65100"));try {//创建文件输出流对象,将数据写入到student.txt文件FileOutputStream fos = new FileOutputStream("student.txt");//创建对象输出流对象ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(worker);//将worker序列化System.out.println("已将Worker对象写入文件");ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.txt"));Worker worker1 = (Worker) ois.readObject();System.out.println(worker1);System.out.println(worker1.getAddress());} catch (Exception e) {e.printStackTrace();}}
}

16.实现一个后进先出(LIFO)的栈类,方法:push(Object) pop() size()

package exam1;import java.util.Stack;/*** 实现一个后进先出(LIFO)的栈类,方法:push(Object) pop() size()*/
public class exam1sixteen {public static void main(String[] args) {Student student1 = new Student("李冬","男");Student student2 = new Student("董康","女");Stack<Object> stack = new Stack<>();stack.push(student1);stack.push(student2);System.out.println(stack.size());System.out.println(stack);System.out.println(stack.pop());}
}
class Student{private String name;private String sex;public Student() {}public Student(String name, String sex) {this.name = name;this.sex = sex;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", sex='" + sex + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

17.String s = new String("abc")创建了几个对象?分别是那几个?
    2个,String s和new String("abc");

18有一个Map<String,String>,将所有的键值对拼成一个完整的字符串,如key1:value1;key2:value2;key3:value3

package exam1;import java.util.*;/***  有一个Map<String,String>,将所有的键值对拼成一个完整的字符串,*  如key1:value1;key2:value2;key3:value3**  由题中看出键值对顺序未变,所以使用LinkedHashMap,迭代的顺序和键值对的插入顺序一致*  HashMap不保证映射顺序*/public class exam1eighteen {public static void main(String[] args) {Map<String,String> linkedHashMapmap = new LinkedHashMap<>();linkedHashMapmap.put("stu1","dk");linkedHashMapmap.put("stu2","dk");linkedHashMapmap.put("stu3","dk");linkedHashMapmap.put("stu4","dk");//System.out.println(map);     //{stu4=dk, stu2=dk, stu3=dk, stu1=dk}/*** 使用迭代器遍历Map* stu1:dk;stu2:dk;stu3:dk;stu4:dk;*/Set keySet = linkedHashMapmap.keySet();   //获取键的集合Iterator iterator = keySet.iterator();  //获取迭代器对象while(iterator.hasNext()){Object key = iterator.next();Object value = linkedHashMapmap.get(key);System.out.print(key+":"+value+";");}/*** 先获得集合中所有的映射关系* stu1:dk;stu2:dk;stu3:dk;stu4:dk;*/Iterator iterator1 = linkedHashMapmap.entrySet().iterator();while(iterator1.hasNext()) {//获取集合中键值对映射关系Map.Entry entry = (Map.Entry) iterator1.next();Object key = entry.getKey();Object value = entry.getValue();System.out.print(key+":"+value+";");}}
}

19.将上题中的字符串重新解析,并还原Map stu1:dk;stu2:dk;stu3:dk;stu4:dk;

package exam1;import java.util.HashMap;
import java.util.Map;/*** 将上题中的字符串重新解析,并还原Map* stu1:dk;stu2:dk;stu3:dk;stu4:dk;*/public class exam1nineteen {public static void main(String[] args) {String str = "stu1:dk;stu2:dk;stu3:dk;stu4:dk;";Map map = new HashMap();String[] kvs= str.split(";");for (int i = 0; i < kvs.length; i++) {String[] kv= kvs[i].split(":");map.put(kv[0],kv[1]);}System.out.println(map);}
}

Core-java面试题第一套上篇相关推荐

  1. 第一套数字电子计算机,计算机试题第一套

    <计算机试题第一套>由会员分享,可在线阅读,更多相关<计算机试题第一套(5页珍藏版)>请在人人文库网上搜索. 1.计算机试题第一套1.计算机之所以能自动运算,就是由于采用了工作 ...

  2. 计算机一级考试第一套题电子表格,计算机等级考试一级上机试题(第一套)

    计算机等级考试一级上机试题(第一套) 计算机等级考试一级上机考试题 (第一套) (请在D盘根目录下建立以自己的考号和姓名命名的文件夹,如考号为0001的考生王伟,应建立的文件夹名为"0001 ...

  3. 关于滑轮组的计算机知识点,计算机试题第一套.docx

    计算机试题第一套 1.计算机之所以能自动运算 ,就是由于采用了 工作原理. A.布尔逻辑. B 储存程序. C.数字电路. D,集成电路 答案选 B 2."长征"系列火箭利用计算机 ...

  4. 计算机考试第一套试题操作,计算机等级考试一级上机试题(第一套)

    计算机等级考试一级上机试题(第一套) 计算机等级考试一级上机考试题 (第一套) (请在D盘根目录下建立以自己的考号和姓名命名的文件夹,如考号为0001的考生王伟,应建立的文件夹名为"0001 ...

  5. 2010.4 计算机二级等级考试 vb上机试题 第一套 的答案,2010年4月计算机二级等级考试VB上机考试第一套.doc...

    2010.4 计算机二级等级考试 VB上机试题 第一套 注意事项:在电脑最后一个磁盘中建立考试文件夹.考试文件夹的命名规则为"学号+姓名",如"200910011001 ...

  6. 2010.4 计算机二级等级考试 vb上机试题 第一套 的答案,2010年4月计算机二级等级考试VB上机考试第一套.docx...

    2010.4 计算机二级等级考试VB 上机试题第一套 注意事项: 在电脑最后一个磁盘中建立考试文件夹. 考试文件夹的命名规则为 "学号 +姓名",如" 1001 杨军&q ...

  7. java 笔试题一套_软世通分享一套Java笔试题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7.以下程序段执行后的K值为( ). int x=20; y=30; k=(x>y)?y:x A. 20 B. 30 C.10 D.50 8.要想定 ...

  8. java jvm调优面试题_【Java面试题第一期】有没有jvm调优经验?调优方案有哪些?...

    ​1. 调优时机: a. heap 内存(老年代)持续上涨达到设置的最大内存值: b. Full GC 次数频繁: c. GC 停顿时间过长(超过1秒): d. 应用出现OutOfMemory 等内存 ...

  9. 1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (模拟试题第一套) 附答案

    由于经常分享失败,我上传github上了,先放上链接:https://github.com/Lydever/web-1-x.git 请礼貌,不要耍流氓哈哈,创作不易,下载的同时,请start一下,谢谢 ...

最新文章

  1. 我的第一个 JSP (SSH) 个人网站【开源】
  2. 关于微信小程序的尺寸关系
  3. cordova项目适配iPhoneX
  4. Android listview优化以及listview混合itemview
  5. Mybatis中Mapper动态代理方式
  6. python 字符串处理 字典_python 字符串和字典
  7. 使用Configuration Manager配置资产智能
  8. 网络(5)-应用层:了解常用协议使用的端口和底层协议
  9. linux 安装servlet环境_linux下一键搭建LAMP环境安装网站全教程
  10. 软件测试报告费计什么科目,软件记什么会计科目
  11. 网页如何设置背景图片
  12. 各大IT公司、软件公司员工等级(级别)及薪资
  13. 谢霆锋断言暂不再婚 赞张柏芝教子有方
  14. 刚注册好领了营业执照的公司可以申请软件著作权登记证书么?
  15. centos mysql部署_CentOS下MySQL 8.0安装部署,超详细!
  16. 全栈学习日记001--穿过黑色12月,在2021年第二周的开始见到曙光,朝着光一直走下去吧
  17. 2013驾考科目一理论知识重点归纳
  18. 压缩多张图片,解压后发现图片文件损坏的问题解决
  19. SIMQKE-GR 生成人工波注意事项
  20. Qt几个月的学习心得及展望

热门文章

  1. CodeForces - 577B Modulo Sum(dp+bitset优化)
  2. CodeForces - 1420D Rescue Nibel!(组合数学+离散化)
  3. UVA208Firetruck 消防车(图的路径搜索)
  4. 高精度乘法 c语言,很大的数相乘怎么办?
  5. java web转码_web/java实现多种格式视频上传、转码、截图、播放、下载等功能附源码(详细)...
  6. HDU1506(天然的笛卡尔树)
  7. HDU1756(判断点在多边形内外)
  8. 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
  9. KdPrint 在checked 和free版本的不同
  10. Windows 服务(附服务开发辅助工具)