JAVA面试经典的一些编程题(含代码 更新中..,,,)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAVA面试经典的一些编程题(含代码 更新中..,,,)

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

 2013/8/19 0:28:06  sungang_1120  程序员俱乐部  我要评论(0)
  • 摘要:1,子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次代码实现如下:publicclassThreadCommunicationDemo{//main函数是一个主线程publicstaticvoidmain(String[]args){finalBusinessbusiness=newBusiness();//开启一个子线程newThread(newRunnable(){publicvoidrun(){for(inti=1;i<
  • 标签:经典 面试 Java面试 Java 代码 编程

?

?

class="p0" style="margin-bottom: 0pt; margin-top: 0pt;">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();
??? }
}

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];
??? }
}

发表评论
用户名: 匿名