Java编程题,都是比较经典的面试题…详解
1. 求 2/1+3/2+5/3+8/5+13/8…..前20项之和? class Sum{ public static void main(Sting[] args){ double sum=0; double fenZi=2.0, fenMu=1.0; //初始的分子 (fenZi)=2,分母(fenMu)=1 for(int i=1; i<=20; i++){ sum += fenZi / fenMu ; fenMu = fenZi; //下一项的分母 = 上一项的分子 fenZi += fenMu; //下一项的分子 = 上一项的分子加分母 } System.out.println(“sum= “sum); } }
2、利用程序输出如下图形: * * * * * * * * * * * * * * * * * * * * * * * * *
class Asterisk{ public static void main(String[] args){ for (int i=1; i<=13; i+=2){ for(int j=1; j<=i && i+j<= 14; j++){System.out.print(“* “);} System.out.println(); // 换行 } } }
3、计算圆周率 PI=4-4/3+4/5-4/7……. 打印出第一个大于 3.1415小于 3.1416的值
class Pi { public static void main(String[] args){ double pi =0; //定义初始值 double fenZi = 4; //分子为4 double fenMu = 1; //第一个4,可看作分母为1 的分式,以后的分母每次递增2 for (int i = 0; i < 1000000000; i++){ //运行老久,减少循环次数会快很多,只是精确度小些
pi += (fenZi/fenMu) ; fenZi *= -1.0; //每项分子的变化是+4,-4,+4,-4 …. fenMu += 2.0; //分母的变化是1,3,5,7, …. 每项递加2 } System.out.println(pi); } } 输出结果为pi = 3.1415926525880504,应该不精确
4、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和 //计算斐波那契数列(Fibonacci)的第n个值 public class Fibonacci{ public static void main(String args[]){ int n = Integer.parseInt(args[0]); int n1 = 1;//第一个数 int n2 = 1;//第二个数 int sum = 0;//和 if(n<=0){ System.out.println(“参数错误!”); return; } if(n<=2){ sum = 1; }else{ for(int i=3;i<=n;i++){ sum = n1+n2; n1 = n2; n2 = sum; } } System.out.println(sum); } }
//计算斐波那契数列(Fibonacci)的第n个值 //并把整个数列打印出来 public class FibonacciPrint{ public static void main(String args[]){ int n = Integer.parseInt(args[0]); FibonacciPrint t = new FibonacciPrint(); for(int i=1;i<=n;i++){ t.print(i); } } public void print(int n){ int n1 = 1;//第一个数 int n2 = 1;//第二个数 int sum = 0;//和 if(n<=0){ System.out.println(“参数错误!”); return; } if(n<=2){ sum = 1; }else{ for(int i=3;i<=n;i++){ sum = n1+n2; n1 = n2; n2 = sum; } } System.out.println(sum); } }
5、求1-1/3+1/5-1/7+1/9……的值。 a,求出前50项和值。 b,求出最后一项绝对值小于1e-5的和值。
6、在屏幕上打印出n行的金字塔图案,如,若n=5,则图案如下: * *** ***** ******* *********
//打印金字塔图案 public class PrintStar{ public static void main(String args[]){ int col = Integer.parseInt(args[0]); for(int i=1;i<=col;i++){//i表示行数 //打印空格 for(int k=0;k System.out.print(” “); } //打印星星 for(int m=0;m<2*i-1;m++){ System.out.print(“*”); } System.out.println(); } } }
7、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和 打印出所有的可能 //任何一个大于六的偶数可以拆分成两个质数的和 //打印出所有的可能 public class Gedebahe{ public static void main(String args[]){ int num = Integer.parseInt(args[0]); if(num<=6){ System.out.println(“参数错误!”); return; } if(num%2!=0){ System.out.println(“参数错误!”); return; } Gedebahe g = new Gedebahe(); //1不是质数,2是偶数,因此从3开始循环 for(int i=3;i<=num/2;i++){ if(i%2==0){//如果为偶数,退出本次循环 continue; } //当i与num-i都为质数时,满足条件,打印 if(g.isPrime(i) && g.isPrime(num-i)){ System.out.println(i+” + “+(num-i)+” = “+num); } } } 共有7 条 关于 “Java编程题,都是比较经典的面试题”的评论 1 小肉包:
第一个程序编写的有问题,是错的 2 小肉包:
2.0/1.0+4.0/2.0+8.0/4.0+16.0/8.0。。。这是你的输出,你的分母的赋值不对哦!~~应该是 public static void main(String args[]) { double sum=0.0; double fenzi=2.0; double fenmu=1.0; for(int i=1;i<=20;i++){ sum+=fenzi/fenmu; System.out.print(fenzi +"/"+fenmu+"+"); double tmp=fenzi; fenzi=fenzi+fenmu; fenmu=tmp; } System.out.println("="+sum);
} 3 cc:
dasdas 4 七夕:
public static void pi(){ double pi =4.0; for(int i=1 ;;i++){ pi+=Math.pow(-1, i)*(4.0/(2*i+1)); if(pi>3.1415&&pi<3.1416){ System.out.println(pi); break; } } } 5 Anonymous:
第一道题写的有问题 for(int i=1; i<=20; i++){ sum += fenZi / fenMu ; a=fenMu fenMu = fenZi; //下一项的分母 = 上一项的分子
fenZi += a; //下一项的分子 = 上一项的分子加分母 } 6 焦静:
第二道题目有问题 在for循环的第一句加上 if (pi > 3.1415 && pi < 3.14160) break; 7 simple-zhaojl:
package com.mkyong.core.el; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) { // TODO Auto-generated method stub //ApplicationContext context=new ClassPathXmlApplicationContext(“SpringBeans.xml”);
8年经验java面试题
以下是一些常见的Java面试题,适用于具有8年经验的Java开发者:
⚫什么是Java的多态性?如何实现多态性?
⚫解释Java中的抽象类和接口的区别。
⚫什么是Java中的异常处理?列举一些常见的异常类型。
⚫解释Java中的线程和进程的区别,并介绍线程同步的方式。
⚫什么是Java的反射(Reflection)?它的应用场景是什么?
⚫解释Java中的集合框架,并列举一些常见的集合类和它们的特点。
⚫什么是Java中的序列化(Serialization)?如何实现对象的序列化和反序列化?
⚫解释Java中的IO流和NIO的区别。
⚫介绍Java中的设计模式,例如单例模式、工厂模式和观察者模式。
⚫解释Java中的内存管理机制和垃圾回收(Garbage Collection)算法。
这些问题旨在评估您对Java核心概念、语言特性和开发经验的理解。
在准备面试时,可以参考这些问题,并结合自己的经验进行深入的思考和准备。
此外,还建议查阅更多的Java面试指南和常见问题,以便全面准备面试。
java模拟面试题目(3篇)
第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
Java开发工程师招聘面试题与参考回答(某大型央企)2025年
2025年招聘Java开发工程师面试题与参考回答(某大型央企)(答案在后面)面试问答题(总共10个问题)第一题题目描述:您在简历中提到曾经参与过一个大型电商平台的开发项目,负责了用户模块的设计与实现。
请详细描述一下您在这个项目中遇到的技术挑战,以及您是如何解决这些挑战的。
第二题题目:请描述一下你对Java内存模型的理解,以及在实际开发中如何利用这一模型来优化程序性能。
第三题题目描述:您在简历中提到曾经参与过一个大型项目,负责模块的开发工作。
请详细描述一下该项目的主要功能、您的角色以及在这个项目中遇到的最大挑战和您的解决方案。
第四题题目:请简述Java中四种基本类型的内存分配情况以及它们与引用类型的区别。
第五题题目描述:作为Java开发工程师,您在项目开发过程中遇到一个性能瓶颈问题,系统在高并发情况下响应速度变慢。
请详细描述您如何定位问题、分析原因,并提出解决方案。
第六题题目:在Java开发中,什么是JVM(Java虚拟机)?请简述JVM的作用以及它在Java 程序运行过程中的重要性。
第七题题目描述:在Java开发中,阐述你对“单例模式”的理解,并举例说明在Java中如何实现一个线程安全的单例模式。
第八题题目:请描述一下你对Java内存模型的理解,并解释在多线程环境下如何保证线程安全?第九题题目描述:请描述一次你遇到的技术难题,以及你是如何解决这个问题的。
在这个过程中,你学到了什么,如何将这次经历应用到未来的工作中?第十题题目:请描述一次你在Java项目中遇到的技术难题,以及你是如何解决这个问题的。
2025年招聘Java开发工程师面试题与参考回答(某大型央企)面试问答题(总共10个问题)第一题题目描述:您在简历中提到曾经参与过一个大型电商平台的开发项目,负责了用户模块的设计与实现。
请详细描述一下您在这个项目中遇到的技术挑战,以及您是如何解决这些挑战的。
参考回答:回答:在参与大型电商平台用户模块的开发项目中,我遇到了以下几个主要的技术挑战:1.高并发处理:电商平台在高峰时段用户访问量极大,需要保证用户模块的稳定性和响应速度。
java中高级面试题整理及参考答案
java中⾼级⾯试题整理及参考答案⾯试问题:⼀、Java基础⽅⾯:1、Java⾯相对象的思想的理解(主要是多态):2、集合:ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap,HashTable,HashSet的底层源码实现原理3、Java虚拟机(1)组成以及各部分作⽤:(2)类加载器——ClassLoader:(3)类加载器的⽗亲委托机制深度详解:(4)JVM调优:(5)垃圾回收:4、异常5、String,StringBuffer,StringBuilder区别6、值传递与引⽤传递:7、Java中的equals和hashCode⽅法详解8、TCP的三次握⼿和四次挥⼿9、多线程(1)实现线程同步:(2)⽣产者消费者问题:(3)线程安全(4)线程死锁(5)Synchronize实现原理(7)happen-before规则:(8)线程池(9)DCL失效原因以及解决办法:(10)线程实现⽅式:Thread,Runable,Callable的区别10、IO11、NIO12、⽹络编程13、Java内存模型⼆、数据库(MySql)1、⾯试题:2、sql优化:3、搜索引擎三、设计模式单例模式,⼯⼚模式,建造者模式,观察者模式,适配器模式,代理模式等等四、数据结构与算法:1、链表,栈,队列,⼆叉树:2、⼋⼤排序算法:3、查找算法五、⾼并发与海量数据1、⼤型⽹站应⽤之海量数据解决⽅案2、⼤型⽹站应⽤之⾼并发情况下的解决⽅案3、在⼀个千万级的数据库查寻中,如何提⾼查询效率?六,Struts,Spring,Hibernate,Mybatis,Springmvc 七、前端:javascript,Jquery⼋、Jsp+Servlet九、linux操作命令(重点服务器⽅⾯操作)⼗、tomcat调优⼗⼀、Redis/MongoDB等NoSql⼗⼆、Nginx的配置与使⽤。
java编程笔试面试题
java编程笔试面试题java编程笔试面试题引导语:应聘技术类的岗位都是需要经过笔试考察这一个环节的,以下是店铺整理的java编程笔试面试题,欢迎参考阅读!简答题:01、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?答:在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。
显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
02、short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错?答:对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于+= 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
03、简述Java中构造方法的概念及特点。
答:构造方法:构造方法是一种特殊的方法,用于初始化对象。
特点:① 构造方法与类同名,可以有参数,也可无参数。
② 构造方法没有返回值,在方法前也不需要写void。
③ 创建对象时,系统自动调用构造方法。
④ 用户在程序中不能直接调用构造方法,只能通过new操作符调用。
⑤ 一个类可以有多个同名构造方法,但参数必须不同。
⑥ 类中可以不定义构造方法,此时Java提供一个默认的无参数构造方法04、简述Java中接口的概念及接口的性质?答:Java语言规定,类只能实现单继承,但接口可以实现多重继承。
常见java面试题
常见java面试题Java作为目前最热门的编程语言之一,在面试中也成为了必问的一个议题,以下是常见的Java面试题:一、Java基础知识1. Java的特点和优势;2. JDK和JRE有何区别?3. Java语言中final、finally、finalize有何不同?4. 面向对象的三大特性是什么?5. 什么是多态?如何实现多态?6. 如何实现Java程序的多线程?二、Java集合框架1. Java集合框架是什么?它都包含哪些集合类?2. ArrayList和LinkedList的区别是什么?3. HashMap和HashTable有何区别?4. ConcurrentHashMap的实现原理是什么?三、Java高级特性1. 接口和抽象类的区别是什么?2. 如何理解反射机制?3. Java中的注解是什么?它有何作用?4. 如何进行Java的序列化和反序列化?四、Web开发相关1. 什么是Servlet?2. 什么是JSP?它和Servlet的区别是什么?3. Spring框架的特点有哪些?4. 如何进行Java Web的部署?五、数据库相关1. JDBC是什么?2. 如何使用Java连接MySQL数据库?3. 什么是ORM(对象关系映射)?Hibernate是ORM的一个框架,你熟悉它吗?六、常见问题与优化1. 何时使用ArrayList和LinkedList?2. Java中的异常机制是什么?如何处理异常?3. 如何进行Java程序的优化和调优?4. 如何进行Java内存泄漏的排查和修复?以上是常见的Java面试题,希望对有Java求职意向的朋友能够有所帮助,也建议大家对以上问题进行深入的学习和练习,巩固Java基础知识,提升自己的技能水平。
黑马程序员面试题目(3篇)
第1篇第一部分:Java基础知识1. Java基础- Java的内存模型:请解释Java内存模型,包括堆、栈、方法区、本地方法栈和程序计数器的作用及区别。
- Java的访问控制:描述Java中的访问控制符(public, private, protected, default),并说明它们如何影响类的成员访问。
- Java的继承:解释Java中的继承机制,包括单继承和多继承的优缺点。
- Java的多态:说明Java中的多态概念,并举例说明如何实现多态。
- Java的封装:解释Java中的封装概念,并说明如何通过访问控制符实现封装。
2. Java集合框架- ArrayList和LinkedList的区别:比较ArrayList和LinkedList在性能、内存使用、迭代器使用等方面的区别。
- HashMap和HashSet的区别:分析HashMap和HashSet在数据结构、性能、使用场景等方面的差异。
- Java集合的遍历:描述Java集合的几种遍历方式,如for循环、迭代器、forEach等。
3. Java异常处理- Java异常的分类:解释Java中的检查型异常(checked exceptions)和非检查型异常(unchecked exceptions)。
- try-catch-finally语句:说明try-catch-finally语句的使用场景和执行顺序。
- 自定义异常:解释如何自定义异常类,并举例说明。
4. Java泛型- 泛型的概念:描述Java泛型的概念,并说明泛型的使用优势。
- 泛型的限制:分析Java泛型的使用限制,如泛型类型擦除。
- 泛型通配符:解释泛型通配符(?)的作用和使用场景。
第二部分:Java高级特性1. Java并发编程- 线程和进程的区别:比较Java中的线程和进程,包括它们的创建方式、调度方式等。
- 线程的创建方法:列举并解释Java中创建线程的几种方法,如继承Thread类、实现Runnable接口、使用Callable接口等。
java高级开发场景程序设计面试题
java高级开发场景程序设计面试题
以下是一些Java高级开发场景程序设计面试题,这些问题可以帮助你了解应聘者的技能和经验:
1. 请描述一下您对Java内存模型的理解,以及它在并发编程中的应用。
2. 请解释一下Java中的垃圾回收机制,以及如何优化垃圾回收性能。
3. 请解释一下Java中的线程和进程的区别,以及如何在Java中实现多线程编程。
4. 请描述一下您如何使用Java中的并发工具类(例如,ExecutorService,Semaphore,CyclicBarrier等)来解决实际问题。
5. 请解释一下您如何处理高并发情况下的系统性能问题,以及您所使用的方法和工具。
6. 请描述一下您如何使用Java中的设计模式来解决实际问题,以及您所使用的设计模式的优缺点。
7. 请解释一下您如何进行单元测试和集成测试,以及您所使用的测试框架(例如,JUnit,TestNG等)。
8. 请解释一下您如何进行代码优化和重构,以及您所使用的工具和技术。
9. 请描述一下您如何使用Java中的版本控制工具(例如,Git),以及您所使用的分支策略。
10. 请解释一下您如何进行系统性能调优,以及您所使用的工具和技术。
这些问题可以帮助你了解应聘者的技能和经验,以及他们如何解决实际问题。
当然,这些问题只是面试题的一部分,你可以根据实际情况进行适当的修改和补充。
JAVA面试经典试题及答案1
9. String s = new String("xyz"); 创建了几个 String Object. 2个
10. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
24. 启动一个线程使用 run() 还是 start() ? 启动线程是用 start()方法
25. 构造器 Constructor 是否可以被 override? 构造器不可以被 override
26. 是否可以继承 String 类? 不可以
27. 当一个线程进入一个对象的 synchronized 方法后, 其他线程是否可以进入此对象的其 他方法? 当 线 程 进 入 一 个 对 象 的 synchronize 方 法 后 , 其 他 线 程 可 以 访 问 这 个 对 象 的 非
36. 什么是 Web Service? Web Service 就是为了是原来孤立的站点之间的信息能够相互通讯、共享而提出的一种
接口
37. 多线程有几种实现方法?都是什么?同步有几种实现方法? 多线程有两种实现方法:分别是实现 Thread 类和 Runnable 接口 同步有两种实现方法:分别是 synchronized, wait 和 notify
30. 两个对象值相同(x.equals(y) = = true), 但却有不同的 hashCode, 这句话对不对? 不对,equal 方法必须和 hashCode 方法保持一致,如果实现者没有做到这一点,编译器
也不会报错,但这是一个严重的隐患
31. 当以对象被当做参数传递一个方法后, 此方法可改变这个对象的属性, 并可返回变化的 结果, 那么这里到底是值传递还是引用传递?
java中级面试题及答案整理
java中级面试题及答案整理 一、单项选择题(每题 2 分,共 20 分) 1. Java中,哪个关键字用于声明一个类? A. `final` B. `static` C. `class` D. `interface` 答案:C 2. 下列哪个选项是Java中的垃圾回收机制? A. 手动释放对象 B. 程序员控制内存分配和回收 C. 系统自动回收不再使用的对象 D. 以上都不是 答案:C 3. 在Java中,哪个类提供了基本的数学运算方法? A. `Math` B. `System` C. `Runtime` D. `BigDecimal` 答案:A 4. Java中,哪个关键字用于抛出异常? A. `throws` B. `throw` C. `catch` D. `finally` 答案:B 5. 在Java中,`==`和`equals()`方法有什么区别? A. `==`用于比较对象的值,`equals()`用于比较对象的引用 B. `==`用于比较对象的引用,`equals()`用于比较对象的值 C. 两者都用于比较对象的值 D. 两者都用于比较对象的引用 答案:B 6. Java中,哪个关键字用于实现多态? A. `final` B. `static` C. `abstract` D. `interface` 答案:D 7. 在Java中,`ArrayList`和`LinkedList`有什么区别? A. `ArrayList`基于数组实现,`LinkedList`基于链表实现 B. `ArrayList`基于链表实现,`LinkedList`基于数组实现 C. 两者都基于数组实现 D. 两者都基于链表实现 答案:A 8. Java中,`HashMap`和`Hashtable`有什么区别? A. `HashMap`是线程安全的,`Hashtable`不是线程安全的 B. `HashMap`不是线程安全的,`Hashtable`是线程安全的 C. 两者都是线程安全的 D. 两者都不是线程安全的 答案:B 9. 在Java中,`try`块后面可以跟哪些块? A. `catch`和`finally` B. `catch`或`finally` C. `finally`和`catch` D. `finally`或`catch` 答案:A 10. Java中,`String`类是可变的还是不可变的? A. 可变的 B. 不可变的 C. 有时可变,有时不可变 D. 以上都不是 答案:B 二、多项选择题(每题 2 分,共 20 分) 1. Java中,哪些是合法的变量名? A. `2variable` B. `variable2` C. `_variable` D. `variable$` 答案:BC 2. 下列哪些是Java中的集合框架? A. `List` B. `Set` C. `Map` D. `Queue` 答案:ABCD 3. Java中,哪些是线程安全的集合? A. `Vector` B. `Hashtable` C. `Collections.synchronizedList` D. `ConcurrentHashMap` 答案:ABCD 4. 下列哪些是Java中的异常类型? A. `RuntimeException` B. `IOException` C. `SQLException` D. `Exception` 答案:ABCD 5. Java中,哪些是垃圾回收的优点? A. 自动内存管理 B. 减少内存泄漏 C. 提高程序性能 D. 减少程序员的工作量 答案:ABD 6. Java中,哪些是泛型的主要优点? A. 类型安全 B. 代码重用 C. 编译时类型检查 D. 运行时类型检查 答案:ABC 7. Java中,哪些是IO流的分类? A. 字节流 B. 字符流 C. 对象流 D. 文件流 答案:ABC 8. Java中,哪些是多线程的创建方式? A. 继承`Thread`类 B. 实现`Runnable`接口 C. 实现`Callable`接口 D. 使用线程池 答案:ABCD 9. Java中,哪些是设计模式的分类? A. 创建型模式 B. 结构型模式 C. 行为型模式 D. 并发型模式 答案:ABC 10. Java中,哪些是JVM的主要组成部分? A. 类加载器 B. 运行时数据区 C. 执行引擎 D. 垃圾回收器 答案:ABCD 三、判断题(每题 2 分,共 20 分) 1. Java中,`null`是一个关键字,表示空值。(对/错) 答案:对 2. Java中,`==`和`equals()`方法在比较字符串时行为相同。(对/错)
