JAVA笔试算法题及答案
java 经典笔试算法题

java 经典笔试算法题一、排序算法1. 实现一个基于Java的快速排序算法。
答:快速排序是一种常用的排序算法,其核心思想是分治法。
首先选择一个基准元素,将数组分成两部分,一部分小于基准元素,一部分大于基准元素。
然后递归地对这两部分继续进行快速排序,直到整个数组有序。
2. 实现一个稳定的冒泡排序算法。
答:冒泡排序是一种简单的排序算法,通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
稳定的冒泡排序算法是指在排序过程中,相同元素的相对位置不会改变。
3. 实现一个选择排序算法。
答:选择排序是一种简单直观的排序算法。
其工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
二、字符串操作算法1. 实现一个函数,将一个字符串反转。
答:可以使用StringBuilder类的reverse()方法来实现字符串的反转。
2. 实现一个函数,将一个字符串中的所有大写字母转换为小写字母,其余字符保持不变。
答:可以使用String类的replaceAll()方法和toLowerCase()方法来实现。
3. 实现一个函数,将一个字符串按空格分割成单词数组,并删除空字符串和null字符串。
答:可以使用split()方法和Java 8的流来处理。
三、数据结构算法1. 实现一个单向链表,并实现插入、删除、查找和打印链表的功能。
答:单向链表是一种常见的数据结构,可以通过定义节点类和链表类来实现。
插入、删除、查找和打印链表的功能可以通过相应的方法来实现。
2. 实现一个二叉搜索树(BST),并实现插入、查找、删除节点的功能。
答:二叉搜索树是一种常见的数据结构,它具有唯一的高度特性。
插入、查找和删除节点的功能可以通过相应的方法来实现,如左旋、右旋、递归等。
3. 实现一个哈希表(HashMap),并实现插入、查找和删除键值对的功能。
答:HashMap是一种基于哈希表的映射数据结构,它通过哈希码的方式将键映射到对应的值上。
Java笔试题共23题(附答案)

集合的元素,如果不包含就向集合一添加元素
5、打印集合1,就是想要的结果
*/
//导包
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
class Test {
import java.io.File;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
System.out.println(str+"---"+map.get(str));
}
System.out.println("----------------------");
//获取map的键值对集合
Set<Entry<String, String>> mset = map.entrySet();
}
}
System.out.println(list1);
}
}
/////////////////////////////////////////////////////////////////////
"3
/*
题目:
已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容,
//高效字符输入流得到数据源
Java 笔试题含答案

班级:_______________ 学号:______________ 姓名:___________Java 笔试题(可多选)1. 下面哪些是Thread类的方法(ABD)A start()B run()C exit()D getPriority()2. 下面关于类的说法正确的是(A)A 继承自ThrowableB SerialableC 该类实现了Throwable 接口D 该类是一个公共类3. 下面程序的运行结果是(false )String str1 = "hello";String str2 = "he" + new String("llo");== str2);4.下列说法正确的有(C)A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor5. 指针在任何情况下都可进行>, <, >=, <=, ==运算(true )6. 下面程序的运行结果:(B)public static void main(String args[]) {Thread t = new Thread() {public void run() {pong();}};();"ping");}static void pong() {"pong");}A pingpongB pongpingC pingpong和pongping都有可能D 都不输出7. 下列属于关系型数据库的是(AB)A. Oracle B MySql C IMS D MongoDB8. GC(垃圾回收器)线程是否为守护线程(true )9. volatile关键字是否能保证线程安全(false )10. 下列说法正确的是(AC)A LinkedList继承自ListB AbstractSet继承自SetC HashSet继承自AbstractSetD WeakMap继承自HashMap11. 存在使i + 1 < i的数吗(存在)12. 的数据类型是(B)A floatB doubleC FloatD Double13. 下面哪个流类属于面向字符的输入流(A )ABufferedWriterBFileInputStreamCObjectInputStreamD InputStreamReader14. Java接口的修饰符可以为(CD)A privateB protectedC finalD abstract15. 不通过构造函数也能创建对象吗(A)A 是B 否16. ArrayList list = new ArrayList(20);中的list扩充几次(A)A 0B 1C 2D 317. 下面哪些是对称加密算法(AB)A DESB AESC DSAD RSA18.新建一个流对象,下面哪个选项的代码是错误的(B)A)new BufferedWriter(new FileWriter(""));B)new BufferedReader(new FileInputStream(""));C)new GZIPOutputStream(new FileOutputStream(""));D)new ObjectInputStream(new FileInputStream(""));19. 下面程序能正常运行吗(yes )public class NULL {public static void haha(){"haha");}public static void main(String[] args) { ((NULL)null).haha();}}20. 下面程序的运行结果是什么()class HelloA {public HelloA() {"HelloA");}{ "I'm A class"); }static { "static A"); }public class HelloB extends HelloA {public HelloB() {"HelloB");}{ "I'm B class"); }static { "static B"); }public static void main(String[] args) {new HelloB();}}Static AStatic BHello AI’m A classHelp BI’m B Class21.getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果(A)public void getCustomerInfo() {try {下面代码的运行结果为:(C)import .*;import .*;public class foo{public static void main (String[] args){String s;"s=" + s);}}A代码得到编译,并输出“s=”B代码得到编译,并输出“s=null”C由于String s没有初始化,代码不能编译通过D代码得到编译,但捕获到NullPointException异常23. "5" + 2);的输出结果应该是(A)。
java简单算法笔试题

java简单算法笔试题一、选择题(每题2分,共20分)1.以下哪个是Java中的基本数据类型?()a)intb)charc)doubled)boolean2.以下哪个算法是时间复杂度为O(n)的排序算法?()a)冒泡排序b)快速排序c)插入排序d)归并排序3.Java中,可以使用哪个关键字声明一个数组?()a)newint[5]b)int[]arr=newint[5]c)int[]arr={1,2,3}d)newint[][]4.在Java中,如何判断一个字符串是否为回文字符串?()a)使用charAt方法逐个比较字符b)使用equals方法比较字符串长度和内容c)使用循环遍历字符串并逐个比较字符和字符的ASCII码值d)使用charAt方法在字符串的首尾位置比较字符5.Java中,如何使用递归算法求解斐波那契数列的前n项?()a)使用循环嵌套实现递归调用b)使用循环迭代实现递归调用c)使用递归函数直接求解斐波那契数列的前n项d)使用循环迭代直接求解斐波那契数列的前n项。
二、简答题(每题10分,共40分)6.请描述一下Java中的递归算法,并举一个实际的例子说明其应用。
答:递归算法是一种基于自我调用的算法,它通过将问题分解为更小的子问题来解决更大的问题。
在Java中,递归算法的应用非常广泛,例如求斐波那契数列、二叉树遍历等。
以二叉树遍历为例,我们可以使用递归算法实现前序、中序和后序遍历。
7.请解释Java中的ArrayList和LinkedList的区别,并举一个使用它们的实际例子。
答:ArrayList和LinkedList是Java中的两种常见数组列表实现,它们的主要区别在于元素的插入和删除方式。
ArrayList使用数组来存储元素,具有随机访问速度快的优点,适合存储小到中等大小的数据集。
而LinkedList使用双向链表来存储元素,具有插入和删除操作效率高的优点,适合存储需要频繁添加或删除元素的数据集。
java考试编程题库及答案

java考试编程题库及答案Java考试编程题库及答案1. 基础语法题- 题目:编写一个Java程序,实现两个整数的加法运算,并打印结果。
- 答案:```javapublic class Addition {public static void main(String[] args) {int num1 = 5;int num2 = 10;int sum = num1 + num2;System.out.println("The sum is: " + sum);}}```2. 控制结构题- 题目:编写一个Java程序,判断一个整数是否为素数,并打印结果。
- 答案:```javapublic class PrimeCheck {public static void main(String[] args) {int number = 29;if (isPrime(number)) {System.out.println(number + " is a primenumber.");} else {System.out.println(number + " is not a prime number.");}}public static boolean isPrime(int n) {if (n <= 1) return false;for (int i = 2; i <= Math.sqrt(n); i++) {if (n % i == 0) return false;}return true;}}```3. 数组与循环题- 题目:编写一个Java程序,打印数组中所有元素的平方。
- 答案:```javapublic class SquareElements {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) {int square = numbers[i] * numbers[i];System.out.println("Square of " + numbers[i] + " is " + square);}}}4. 面向对象题- 题目:定义一个名为`Car`的类,包含属性`color`和`speed`,以及一个方法`increaseSpeed(int increment)`来增加速度。
正式应聘的JAVA笔试题和答案

正式应聘的JAVA笔试题和答案一:选择题1:List, Set, Map是否继承自Collection接口A:都是,B 都不是 C:List, Set 是 D:Set, Map 是正确答案 C2:下面描述哪个是正确的A:构造器Constructor可被overrideB:可以继承String类C:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code不会被执行D:两个对象值相同(x.equals(y) == true),那么也有相同的hash code正确答案 D3 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized A:都能 B:都不能 C:可以为static D:可以为native正确答案 A4:下面的程序中,temp的最终值是什么?long temo=(int)3.9;temp%=2;A: 0 B :1 C :2 D : 3正确答案 B5、请在以下选项中选出非基本数据类型的选项 ( )A: int B:byte C: boolean D:String正确答案 D6、阅读下面代码段, 给出以下代码的输出结果public class Test{public static void main(String args[]){String str1 = "abc";String str = "abc;String str2 = new String("abc");System.out.println(str1 == str2);System.out.println(str1.equals(str2));System.out.println(str == str1);}}A:true,true,true B:true,false,true C:true,true,false D:false,true,true正确答案 D7、阅读下面代码段, 给出以下代码的输出结果:int i=1;switch (i) {case 0:System.out.println("zero");break;case 1:System.out.println("one");case 2:System.out.println("two");default:System.out.println("default");}A: B::D:default 正确答案 C8、阅读下面代码段, 给出以下代码的输出结果public class MyClass{static int i;public static void main(String argv[]){System.out.println(i);}}A: Error Variable i may not have been initialized B:null C:D:0 正确答案 D9、阅读下面代码段, 给出以下代码的输出结果:class A{static{System.out.print( “A1”);}public A(){System.out.print( “A2”);}}class B extends A{static{System.out.print( “B1”);}public B(){System.out.print( “B2”);}}public class Hello{public static void main(String[] args){A ab = new B();ab = new B();}}A:A1B1A2B2B1B2 B:A1B1A2B2A2B2 C:A1B1A2B2B1B2 D:A1A2B1B2A2B2正确答案 B10、阅读下面代码段, 给出以下代码的输出结果public class TestData {public String getValue () {String value = "";try{value = "test1";return value;}catch(Exception e){e.printStackTrace();}finally{value = "test2";}return value;}public static void main(String args[]){ TestData test = new TestData();String a = test.getValue();System.out.println(a);}}A.test1B.test2C.nullD.””正确答案 A二、改错题,如果有错误,请指出并修正。
java软件研发笔试题及答案

java软件研发笔试题及答案1. Java基础问题1:请解释Java中的“==”和equals()方法的区别。
答案1:在Java中,“==”用于比较两个基本数据类型的值是否相等,或者两个引用是否指向同一个对象。
而equals()方法是一个Object类的方法,用于比较两个对象的内容是否相等。
默认情况下,equals()方法的行为与“==”相同,但是可以被覆写以实现自定义的比较逻辑。
问题2:Java中,什么是接口(Interface)?答案2:接口是Java中的一种引用类型,它是一种完全抽象的结构,可以包含常量、抽象方法和默认方法。
接口不能直接实例化,必须由实现该接口的类来实现其方法。
接口是一种规范,用于规定类必须实现哪些方法。
2. Java集合框架问题3:List接口和Set接口有什么区别?答案3:List接口允许元素重复,并且元素有序,即元素的插入顺序是保持不变的。
Set接口不允许元素重复,并且元素无序,即元素的存储顺序不保证。
问题4:HashMap和Hashtable有什么区别?答案4:HashMap是非线程安全的,允许一个null键和多个null 值;Hashtable是线程安全的,不允许null键和null值。
HashMap通常比Hashtable的性能要好,因为它不是线程安全的,所以没有线程同步的开销。
3. Java多线程问题5:请解释synchronized关键字的作用。
答案5:synchronized关键字用于在Java中实现同步,它可以用来修饰方法或者代码块。
当一个方法或者代码块被synchronized修饰时,同一时刻只能有一个线程执行该段代码,从而保证了线程安全。
问题6:如何创建线程?答案6:创建线程有两种方式:继承Thread类和实现Runnable接口。
继承Thread类需要重写run()方法,然后创建Thread类的实例并调用start()方法。
实现Runnable接口需要实现run()方法,然后创建Thread类的实例,将Runnable对象作为参数传入构造函数,最后调用start()方法。
Java开发工程师招聘笔试题及解答2024年

2024年招聘Java开发工程师笔试题及解答(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、以下哪个不是Java中的基本数据类型?A、intB、floatC、StringD、boolean2、在Java中,以下哪个关键字用于声明一个类?A、classB、structC、enumD、interface3、关于Java中的String类,以下描述正确的是:A. String类是final类,无法继承。
B. String类是可变的,可以对其进行修改。
C. String类是可变的,每次对String对象的操作都会创建新的对象。
D. String类是不可变的,每次对String对象的操作都会创建新的对象。
4、关于Java中的垃圾回收机制,以下描述不正确的是:A. 垃圾回收器可以自动回收不再使用的对象占用的内存空间。
B. 垃圾回收机制是Java自动管理内存的一种方式,程序员无需手动释放内存。
C. 垃圾回收器会定期检查并回收那些不再有引用的对象。
D. 堆内存中的所有对象在不再有引用后,会自动关联到垃圾回收机制中,即成为垃圾,等待垃圾回收器来回收。
5、以下哪个Java版本正式支持模块化系统“Java Platform Module System”(JPMS)?A、Java 8B、Java 9C、Java 10D、Java 116、在Java中,以下哪个关键字用来声明一个线程?A、threadB、runC、ThreadD、start7、以下哪个关键字是Java中用于实现多线程的同步机制?A. synchronizedB. transientC. volatileD. static8、以下哪个选项不是Java中的访问修饰符?A. privateB. publicC. protectedD. friendly9、在Java中,以下哪个选项不是访问修饰符?A. publicB. privateC. protectedD. friend 10、下列关于Java异常处理的说法中,哪一个是正确的?A. Java程序必须捕获并处理所有抛出的异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int pivotIndex=(low+high)/2;
swap(data,pivotIndex,high); int k=partition(data,low-1,high,data[high]);
while (data[++low]<pivot) ; while (high!=0 && data[--high]>pivot); swap(data,low,high); } while (low<high) ; swap(data,low,high); return low; } public static void swap(int[] data int low,int high){ int tmp=data[low]; data[low]=data[high]; data[high]=tmp; } public static void main(String[] args){ int[] data = new int[]{89,32,425,32,78,1,53,92}; sort(data);
result[i] = commaToker.nextToken(); i++; } return result; } public static void main(String args[]){ String[] s = splitStringByComma("5,8,7,4,3,9,1"); int[] ii = new int[s.length]; for(int i = 0; i<ii.length;i++){
System.out.println(""+ subString("我 ABC 汉 DEF",6)); } 3、排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序。 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排 序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 / /使用快速排序方法对 a[ 0 :n- 1 ]排序从 a[ 0 :n- 1 ]中选择一个元素作为 m I d d l e,该 元素为支点把余下的元素分割为两段 left 和 r I g h t,使得 l e f t 中的元素都小于等于支点, 而 right 中的元素都大于等于支点递归地使用快速排序方法对 left 进行排序递归地使用快速 排序方法对 right 进行排序所得结果为 l e f t + m I d d l e + r I g h t //以下为 java 程序实现的快速排序算法: public static void sort(int[] data) {
} 4.试用递归的方法写一下计算菲波那契数列的通项 f(n),已知 f1=1,f2=1,以后每项都是前 两项的和。
.............. public static long fibonacci(long m){ if (m==0 || m==1) return m; else return fibonacci(m-1)+fibonacci(m-2); } 5. 写一个 Singleton 出来。 Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。 我的评论:第一种形式是饿汉式单例类,第二种是懒汉式单例类;可以如此速记,饿汉 式太饿了,所以迫不及待在内部 new 出一个实例,而懒汉式太懒了,所以知道应用时才检 查有没有实例存在,如不存在才 new 一个实例出来。 一般 Singleton 模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为 private 的,它有一个 static 的 private 的该类 变量,在类初始化时实例话,通过一个 public 的 getInstance 方法获取对它的引用,继而调用 其中的方法。
int k=0X80; return c/k==0?true:false;
}
public static int lengths(String strSrc){ if (strSrc==null){
return 0; } int len=0; char[] strChar=strSrc.toCharArray(); for (int i=0;i<strChar.length;i++){
test(a); } }
7、假设字符串类似这样的 aba 和 aab 就相等,现在随便给你二组字符串,请编程比较 他们看是否相等
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = null; try { s = br.readLine();
} catch (IOException e) { e.printStackTrace(); } StringTokenizer st = new StringTokenizer(s); String s1 = st.nextToken(); String s2 = st.nextToken(); byte[] sa1 = s1.getBytes(); byte[] sb2 = s2.getBytes(); Arrays.sort(sa1); Arrays.sort(sb2); String ss1 = new String(sa1); String ss2 = new String(sb2); if(ss1.equals(ss2)) System.out.println("equal"); else System.out.println("not equal");
return ""; } if (len>lengths(origin)){
return origin; } byte[] strByte=new byte[len]; System.arraycopy(origin.getBytes(),0,strByte,0,len); int count=0; for (int i=0;i<len;i++){
} 其他形式: 定义一个类,它的构造函数为 private 的,所有方法为 static 的。 一般认为第一种形式要更加安全些 6、创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所 实现的方法名(华为笔试最后一道编程) import ng.reflect.*; public class Test{ public static void test(Object obj){
lቤተ መጻሕፍቲ ባይዱn++; if (!isLetter(strChar[i])) len++; } return len; }
public static String subString(String origin,int len){ if (origin==null || origin.equals("")|| len<1){
return instance; }
} 第二种形式:
public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; }
ii[i] =Integer.parseInt(s[i]); } Arrays.sort(ii); //asc for(int i=0;i<ii.length;i++ ){ System.out.println(ii[i]); } //desc for(int i=(s.length-1);i>=0;i--){ System.out.println(ii[i]); } } }
int value=(int)strByte[i]; if (value<0) count++; } if (count % 2 !=0){
//len=(len==1)?++len:--len; --len;
} return new String(strByte,0,len); } public static void main(String[] args) {
2.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符 串。 但是要保证汉字不被截半个,如"我 ABC"4,应该截为"我 AB",输入"我 ABC 汉 DEF", 6,应该输出为"我 ABC"而不是"我 ABC+汉的半个"。
代码: public static boolean isLetter(char c){
StringTokenizer commaToker = new StringTokenizer(source,","); String[] result = new String[commaToker.countTokens()];
int i=0; while(commaToker.hasMoreTokens()){
Class clazz=obj.getClass(); //System.out.println("类名:"+clazz.getName()); Method[] ms=clazz.getDeclaredMethods(); long len=Array.getLength(ms);