java中级面试题及答案(Java面试题及答案)

古城微笑少年丶 2023-09-25 08:37 357阅读 0赞

JAVA面试题目

一、抽象策略角色:

public interface SuperCash {

public double acceptCash();

二、具体策略角色:

a..策略角色1(普通时间)

public class NormalCash implements SuperCash{

@Override

public double acceptCash() {

return 0.2;

b.策略角色2(5-8点)

public class MorningCash implements SuperCash{

@Override

public double acceptCash() {

return 0.4;

c.策略角色3(7-9点)

public class ForenoonCash implements SuperCash{

@Override

public double acceptCash() {

return 0.3;

三、环境角色

public class CashContext {

SuperCash superCash = null;

public CashContext(int time) {

if(time>=5&&time<=8){

superCash = new MorningCash();//策略2

}else if(time>=7&&time<=9){

superCash = new ForenoonCash();//策略3

}else{

superCash = new NormalCash ();//策略1

public double getResult() {

return this.superCash.acceptCash();

CashContext context = new CashContext(8);

System.out.println(“(策略模式)the result:”+context.getResult());

输出:0.3

import java.util.Scanner;

* 用JAVA编写,移动公司对每天打电话时间段收费不同,

* 假设5-8点每分钟4角,7-9点每分钟3角,其他时间2角,

* 输入打电话的时间段,判断收取费用,一定要用到策略模式。

public interface Strategy {

public double discout();

class DisStrategy1 implements Strategy{

@Override

public double discout() {

double price;

price=0.04;

return price;

class DisStrategy2 implements Strategy{

@Override

public double discout() {

double price;

price=0.03;

return price;

class DisStrategy3 implements Strategy{

@Override

public double discout() {

double price;

price=0.02;

return price;

//策略场景

class StrategyContext{

private Strategy strategy=null;

public Strategy getStrategy() {

return strategy;

public void setStrategy(Strategy strategy) {

this.strategy = strategy;

public double disGetPrice()

return strategy.discout();

class Text{

public static void main(String[] args)

Scanner in=new Scanner(System.in);

Strategy strategy=null;

StrategyContext strategyContext=new StrategyContext();

System.out.println(“请输入你打电话的时间段:”);

try {

int time=in.nextInt();

switch (time) {

case 5:

case 8:

strategy=new DisStrategy1();

break;

case 7:

case 9:

strategy=new DisStrategy2();

break;

case 1:

case 2:

case 3:

case 4:

case 6:

case 10:

case 11:

case 12:

strategy=new DisStrategy3();

break;

default:

break;

strategyContext.setStrategy(strategy);

System.out.println(“你此时每分钟是”+strategyContext.getStrategy()+”多钱”);

} catch (Exception e) {

e.printStackTrace();

import java.util.Scanner;

* 用JAVA编写,移动公司对每天打电话时间段收费不同,

* 假设5-8点每分钟4角,7-9点每分钟3角,其他时间2角,

* 输入打电话的时间段,判断收取费用,一定要用到策略模式。

public interface Strategy {

public double discout();

class DisStrategy1 implements Strategy{

@Override

public double discout() {

double price;

price=0.04;

return price;

class DisStrategy2 implements Strategy{

@Override

public double discout() {

double price;

price=0.03;

return price;

class DisStrategy3 implements Strategy{

@Override

public double discout() {

double price;

price=0.02;

return price;

//策略场景

class StrategyContext{

private Strategy strategy=null;

public Strategy getStrategy() {

return strategy;

public void setStrategy(Strategy strategy) {

this.strategy = strategy;

public double disGetPrice()

return strategy.discout();

class Text{

public static void main(String[] args)

Scanner in=new Scanner(System.in);

Strategy strategy=null;

StrategyContext strategyContext=new StrategyContext();

System.out.println(“请输入你打电话的时间段:”);

try {

int time=in.nextInt();

switch (time) {

case 5:

case 8:

strategy=new DisStrategy1();

break;

case 7:

case 9:

strategy=new DisStrategy2();

break;

case 1:

case 2:

case 3:

case 4:

case 6:

case 10:

case 11:

case 12:

strategy=new DisStrategy3();

break;

default:

break;

strategyContext.setStrategy(strategy);

System.out.println(“你此时每分钟是”+strategyContext.getStrategy()+”多钱”);

} catch (Exception e) {

e.printStackTrace();

public class my {

public my() {

// TODO Auto-generated constructor stub

* @param args

* @throws IOException

public static void main(String[] args){

// TODO Auto-generated method stub

float price;

int time;

time=4;

if(5<=time&&time<=8){

price=4;

else if(7<=time&&time<=9){

price=3;

else{

price=2;

System.out.println(“Time : “+time+” price : “+price);

可以用 if 判断 也可以用 switch。。。楼上的同志都说得蛮清楚了。。如果不懂再问我。。希望采纳!谢谢

java中级面试题及答案

java工程师面试问题及答案评分

1,abstract的method是否可同时是static,是否可同时是native,是否可同时是s

ynchronized?

都不能

2,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继

承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实

体类,但前提是实体类必须有明确的构造函数。

3,启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态

,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法

可以产生必须退出的标志来停止一个线程。

4,构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Ove

rloading。

5,是否可以继承String类?

String类是final类故不可以继承。

6,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此

对象的其它方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

7,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不

会被执行,什么时候被执行,在return前还是后?

会执行,在return前执行。

8,编程题: 用最有效率的方法算出2乘以8等於几?

有C背景的程序员特别喜欢问这种问题。

2 << 3

9,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话

对不对?

不对,有相同的hash code。

10,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并

可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传

递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中

改变,但对象的引用是永远不会改变的。

发表评论

表情:
评论列表 (有 0 条评论,357人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java面试答案 整理

    15个顶级Java多线程面试题及答案 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于