`
sungang_1120
  • 浏览: 323593 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

JAVA面试经典的一些编程题(含代码 更新中..,,,)

阅读更多

 

 

1, 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50

代码实现如下:

 

public class ThreadCommunicationDemo {
    // main函数 是一个主线程
    public static void main(String[] args) {

        final Business business = new Business();

        // 开启一个 子线程
        new Thread(new Runnable() {
            public void run() {
                for (int i = 1; i <= 50; i++) {
                    business.sub(i);
                }
            }
        }) {
        }.start();
        //
        for (int i = 1; i <= 50; i++) {
            business.main(i);
        }
    }
}

//
class Business {
    private boolean isShouldSub = true;

    // 子线程
    public synchronized void sub(int i) {
        // 如果不是子线程要执行 则处于等待状态
        while (!isShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 否则执行子线程循环
        for (int j = 1; j <= 10; j++) {
            System.out.println("子线程:" + j + ",循环次数:" + i);
        }
        // 结束之后 将boolean 改为flase
        isShouldSub = false;
        // 同时 要唤醒线程等待状态
        this.notify();

    }

    // 主线程
    public synchronized void main(int i) {
        // 如果是子线程正在执行 则主线程处于等待状态
        while (isShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 否则 执行主线程循环
        for (int j = 1; j <= 100; j++) {
            System.out.println("主线程:" + j + ",循环次数:" + i);
        }
        // 结束之后 将boolean 改为 true
        isShouldSub = true;
        // 同时 要唤醒线程等待状态
        this.notify();
    }
}

JAVA1.5并发库实现:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class ThreadTest {
	private static Lock lock = new ReentrantLock();
	private static Condition subThreadCondition = lock.newCondition();
	private static boolean bBhouldSubThread = false;

	public static void main(String[] args) {
		ExecutorService threadPool = Executors.newFixedThreadPool(3);
		threadPool.execute(new Runnable() {
			public void run() {
				for (int i = 1; i <= 50; i++) {
					lock.lock();
					try {
						if (!bBhouldSubThread)
							subThreadCondition.await();
						for (int j = 1; j <= 100; j++) {
							System.out.println("主线程:" + j + ",循环次数:" + i);  
						}
						bBhouldSubThread = false;
						subThreadCondition.signal();
					} catch (Exception e) {
					} finally {
						lock.unlock();
					}
				}
			}

		});
		threadPool.shutdown();
		for (int i = 1; i <= 50; i++) {
			lock.lock();
			try {
				if (bBhouldSubThread)
					subThreadCondition.await();
				for (int j = 1; j <= 10; j++) {
					System.out.println("子线程:" + j + ",循环次数:" + i);  
				}
				bBhouldSubThread = true;
				subThreadCondition.signal();
			} catch (Exception e) {
			} finally {
				lock.unlock();
			}
		}
	}
}
 


 2,验证一个字符 是否在一个数组中包含 代码实现如下: /** * 验证一个字符 是否在一个数组中包含 * @author * */ public class Check1 { public static int check(String[] strArr,String str) throws IllegalAccessException{ int location = -1; int len = strArr.length; if (strArr == null) { throw new IllegalAccessException(); } for (int i = 0; i < len; i++) { if (str.equals(strArr[i])) { location = i; break; } } return location; } // public static void main(String[] args) { String strArr[] = {"a","b","c","d","e"}; String str = "b"; int location ; try { location = check(strArr, str); if (location == -1) { System.out.println("查找的字符:" + str+ "没有在数组中"); }else { System.out.println("字符在数组中出现的位置是:"+location); } } catch (IllegalAccessException e) { System.out.println("请不要输入null数组."); e.printStackTrace(); } } }
 

3,java分解一个整数

代码实现如下:

 

import java.util.Scanner;
/**
 * 分解一个数字
 *
 * 请输入一个整数数字:
    3435
    您输入的数字是:3435
    3 * 5 * 229
 * @author
 *
 */
public class Decomposition {
   
    private static int k = 2;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数数字:");
        int number = scanner.nextInt();
        System.out.println("您输入的数字是:" + number);
        fenJie(number);
    }
    public static void fenJie(int number){
        if (k == number) {
            System.out.println(k);
            return;
        }else if(number % k == 0){
            System.out.print(k+ " * ");
            fenJie(number / k);
        }else {
            k++;
            fenJie(number);
        }
    }
}

 
4,
将输入的一个字符串 拆开  分类

代码实现如下:

 

import java.util.Scanner;

/**
 * 将输入的一个字符串 拆开  分类
 *
 * 请随便输入一个字符串
    sdf34#$%%多发点4353
    number : 6
    space : 0
    letter : 3
    other : 7
 * @author
 *
 */
public class Fenlei {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请随便输入一个字符串");
       
       
        String str = scanner.nextLine();
       
        char [] c = str.toCharArray();
       
        int number = 0;//数字
        int space = 0;//空
        int letter = 0;//字母
        int other = 0;
       
        for (int i = 0; i < c.length; i++) {
            if (((c[i] > 'a') && (c[i] < 'Z')) || ((c[i] > 'A') && (c[i] < 'z'))) {
                letter ++;
            }
            else if ((c[i] > '0')&&(c[i] < '9')){
                number ++;
            }
            else if (String.valueOf(c[i]).equals("")) {
                space ++;
            }
            else{
                other ++;
            }
        }
       
        System.out.println("number : " + number);
        System.out.println("space : " + space);
        System.out.println("letter : " + letter);
        System.out.println("other : " + other);
    }
}

 
5,计算100 到 200中  共有多少个素数

代码实现如下:

 

/**
 * 100 到 200中  共有多少个素数
 * @author Administrator
 *
 */
public class SushuTest {
        public static void main(String[] args) {
           
           
            int count = 1;
           
            for (int i = 100; i <= 200; i++) {
                if (isSuShu(i)) {
                    count++;
                }
            }
            System.out.println("素数一共是:" + count + "个");
        }
       
        public static boolean isSuShu(int i){
            boolean isSuShu = true;
            for(int j = 2; j < Math.sqrt(i); j++){
                if (i % j == 0) {
                    isSuShu = false;
                }
            }
            return isSuShu;
        }
}

 
6,一个整数,大于 0,不用循环和本地变量,按照 n,2n,4n,8n 的顺序递增, 当
值大于 5000 时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,

代码实现如下:

 

public class TestPrint1 {
    public static void main(String[] args) {
        printOne(1237);
    }
   
    private static void printOne(int n) {
        System.out.println(n);
        if (n < 5000) {
            printOne(n * 2);
        }else {
            System.out.println(n);
            printTwo(n/2);
        }
    }
   
    private static void printTwo(int n){
        if (n >= 1237) {
            System.out.println(n);
            printTwo(n/2);
        }
    }
} 

   
7,java打印 

*
***
*****
*******
*****
***
*
代码实现如下:

public class Test1 {
    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();  // 换行
        }
    }
}
8,用迭代的方法,判断是不是一个回文字符串,如”abdba”

代码实现如下:


public class Test2 {

    /**
     * @param args
     * 用迭代的方法,判断是不是一个回文字符串,如”abdba”
     * @author BZ70000910
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test2 t = new Test2();
        System.out.println(t.idAbcbA("abcba"));
    }
   
    public boolean idAbcbA(String str){
        while(str.length() > 1){
            int strLen = str.length();
            char first = str.charAt(0);
            char last = str.charAt(strLen - 1);
            if (first == last) {
                String str2 = str.substring(1,strLen-1);
                System.out.println(str2);
                idAbcbA(str2);
            }else {
                return false;
            }
            //不加break,就会进入死循环,因为退出循环也是一层一层的。
            break;
        }
        return true;
    }
}
 

9,java来获取一个list集合里面 最大值、中间值、最小值格式多少?

代码实现如下:

 

import java.util.ArrayList;
import java.util.Arrays;

public class Test5 {
    private ArrayList<Integer> arrayList; 
   
   
    public Test5(ArrayList<Integer> arrayList) {
        this.arrayList = arrayList;
    }


    /**
     * @param args
     */
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        Test5 t = new Test5(arrayList);
        t.addElement(4);
        t.addElement(2);
        t.addElement(1);
        t.addElement(3);
        t.addElement(7);
        t.addElement(6);
        t.addElement(5);
        System.out.println("最大值是:"+t.maxi());
        System.out.println("中间值是:"+t.middlei());
        System.out.println("最小值是:"+t.mini());
    }
   
    public int length(){
        return arrayList.size();
    }
   
   
    public void addElement(int element){
        arrayList.add(element);
    }
   
   
    public int maxi(){
        int max = arrayList.get(0);
        for(int i = 1; i < arrayList.size();i++){
            if (max < arrayList.get(i)) {
                max = arrayList.get(i);
            }
        }
        return max;
    }
   
    public int mini(){
        int min = arrayList.get(0);
        for (int i = 1; i < arrayList.size(); i++) {
            if (min > arrayList.get(i)) {
                min = arrayList.get(i);
            }
        }
        return min;
    }
   
    public int middlei(){
        int middle = 0;
        int size = length();
        Integer[] i = arrayList.toArray(new Integer[size]);
        Arrays.sort(i);
        return i[size/2];
    }
}

 

 

10,题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
 * 则表明此数不是素数,反之是素数。

 

代码实现如下:

 

/**
 * 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
 * 则表明此数不是素数,反之是素数。
 *
 * @author
 *
 */
public class LianXiang {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i < 200; i += 2) {
            boolean b = false;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    b = false;
                    break;
                } else {
                    b = true;
                }
            }
            if (b == true) {
                count++;
                System.out.println(i);
            }
        }
        System.out.println("素数个数是: " + count);
    }
}

11,设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

 

代码实现如下:


/**
 * 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
 * @author
 *
 */
public class ThreadTest1 {
    private int j ;
    public static void main(String[] args) {
        ThreadTest1 t = new ThreadTest1();
        Inc inc = t.new Inc();
        Dec dec = t.new Dec();
       
        for (int i = 0; i < 2; i++) {
            Thread tt = new Thread(inc);
            tt.start();
            tt = new Thread(dec);
            tt.start();
        }
    }
   
    private synchronized void inc(){
        j++;
        System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    }
   
    private synchronized void dec(){
        j--;
        System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    }
   
    class Inc implements Runnable{
        @Override
        public void run() {
            for(int i = 0; i < 100; i++){
                inc();
            }
        }
       
    }

    class Dec implements Runnable{
        @Override
        public void run() {
            for(int i = 0; i < 100; i++){
                dec();
            }
        } 
    }
}

 




12打印九九乘法表

 代码如下:

package com.sg.test;

public class Jiujiu {
	public static void main(String[] args) {
		for(int i = 1, j =1; j <= 9; i++){
			System.out.print(i + "*" + j +" = "+i*j+" ");
			if(i == j){
				i=0;
				j++;
				System.out.println();
			}
		}
	}
}

 

 

分享到:
评论

相关推荐

    Java面试代码与编程题

    Java面试是评估程序员技术能力的重要环节,而Java面试代码与编程题则是衡量候选人对语言掌握程度、解决问题能力和逻辑思维的关键标准。以下是一些基于Java面试的常见知识点,这些知识点不仅适用于面试,也是日常开发...

    Java经典面试题库.zip

    包含: 120个Java经典面试题和答案(上).pdf 120个Java经典面试题和答案(下).pdf Java程序员面试笔试宝典.pdf ...代码与编程题.pdf 程序员面试宝典.pdf JAVA面试题集锦1.pdf JAVA面试题集锦2.pdf

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解java.docx Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx ...

    java面试题之代码与编程题

    在这篇文章中,我们将讨论Java面试题中的一些代码与编程题,涵盖Singleton模式、继承时类的执行顺序问题、内部类的实现方式等几个方面。 Singleton模式 Singleton模式是一种常用的设计模式,主要作用是保证在Java...

    java面试题之编程题

    在Java面试中,编程题通常是评估应聘者编程能力、逻辑思维以及问题解决技巧的重要环节。以下是一些从给定文件中提取的编程题知识点: 1. **菲波拉契数列**: - 题目1涉及到经典的菲波拉契数列,它是一个序列,每个...

    java常见的面试编程题

    在Java面试中,编程题是评估候选人技术能力的重要环节。本压缩包文件包含了一系列常见的Java编程题目,旨在帮助学习者巩固基础,提高解决问题的能力。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解java.docx Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx ...

    JAVA编程面试题全集(100题及答案).zip

    14. **算法与数据结构**:虽然Java面试中可能不会深入到算法实现,但对基础算法(如排序、搜索)的理解,以及常见数据结构(如栈、队列、树、图)的掌握是非常重要的。 15. **Java 8及更高版本的新特性**:比如...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx JavaEE学习笔记.pdf java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁.docx Java在游戏服务器开发中的应用...

    java面试题之代码纠错

    java面试题中有一种代码纠错问题,现总结了几道代码错误问题

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188).zip

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188) 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring...

    java经典面试题

    ### Java经典面试题知识点 #### Java数据结构容器 - **核心知识点**:Java集合框架,包括List、Set、Map等接口及其实现类。List接口代表有序的集合,例如ArrayList和LinkedList;Set接口代表不允许重复元素的集合,...

    非常全的java面试题+编程题(2个文档)

    这份压缩包包含的“JAVA编程题全集(50题及答案).doc”和“Java面试题(附答案).doc”是针对Java程序员准备的面试资源,涵盖了广泛的知识点,旨在帮助求职者提升面试技能和深化技术理解。 1. **基础语法**:Java的...

    Java面试之——代码与编程题

    【Java面试之——代码与编程题】是Java程序员在求职过程中常常遇到的面试环节,主要考察应聘者对Java语言的理解和实际操作能力。面试中,面试官可能会提出各种类型的编程题目,包括但不限于设计模式、继承机制、内部...

    java面试笔试题库java笔试题大集合及答案互联网公司面试资料Java面试问题集大全合集(200个).zip

    java面试笔试题库java笔试题大集合及答案互联网公司面试资料Java面试问题集大全合集(200个): JavaEE学习笔记.pdf java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁....

    java经典算法90题含源码及答案.rar

    这份压缩包包含了三份文档:JAVA经典算法40题.doc、最新JAVA编程题全集_50题及答案.doc、50道JAVA基础编程练习题.doc。这些文档提供了不同难度级别的问题,适合不同层次的Java学习者进行学习和实践。 首先,让我们...

    java软件工程师面试题

    代码与编程题.doc 华为Java笔试题.txt 单元测试、集成测试、系统测试、验收测试、回归 某公司java笔试题.(超难).txt 白盒测试.txt 软件开发工程师试题---答案.doc 软件测试.doc 软件测试面试题.txt 黑盒测试、白盒...

    Java面试笔试题大汇总(最全+详细答案)

    以上是Java面试笔试题的常见内容,每个主题都包含丰富的理论和实践细节,需要通过大量的练习和项目经验来深入掌握。通过学习和复习这些知识点,不仅能为面试做好准备,也能提升自身的编程技能和问题解决能力。

    2021最新java面试合集pdf.rar

    拼多多2021部分编程题合集.docx 数据库面试专题及答案.pdf 正则表达式.pdf 消息中间件面试专题及答案.pdf 深入浅出Redis.pdf 爱奇艺2021Java方向笔试题.docx 爱奇艺2021Java方向笔试题(第一场).docx 看透springMvc...

    JAVA编程题全集(100题).doc

    Java 编程题全集(100 题) 本资源摘要信息涵盖了 Java 编程的基础语法、线程练习和经典编程程序,涵盖了字符串拼接、类的创建、线程练习、经典编程程序等多方面的知识点。 基础语法 1. Java 程序设计总复习题 1:...

Global site tag (gtag.js) - Google Analytics