【面试】5道JAVA笔试算法题
生活随笔
收集整理的這篇文章主要介紹了
【面试】5道JAVA笔试算法题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
5道JAVA筆試算法題
開始準備面試刷題咯~
1.數(shù)據(jù)里有{1,2,3,4,5,6,7,8,9},請隨機打亂順序,生成一個新的數(shù)組(請以代碼實現(xiàn))
import java.util.Arrays;//打亂數(shù)組 public class Demo1 {//隨機打亂public static int[] srand(int[] a) {int[] b = new int[a.length];for(int i = 0; i < a.length;i++) {//隨機獲取下標int tmp = (int)(Math.random()*(a.length - i)); //隨機數(shù):[ 0 ,a.length - i ) b[i] = a[tmp];//將此時a[tmp]的下標移動到靠后的位置int change = a[a.length - i - 1];a[a.length - i - 1] = a[tmp];a[tmp] = change;}return b;}public static void main(String[] args) {int[] a = {1,2,3,4,5,6,7,8,9};System.out.println(Arrays.toString(srand(a)));} }2.寫出代碼判斷一個整數(shù)是不是2的階次方(請代碼實現(xiàn),謝絕調(diào)用API方法)
import java.util.Scanner;//判斷整數(shù)是不是2的階次方 public class Demo2 {public static boolean check(int sum) {boolean flag = true; //判斷標志while(sum > 1) {if (sum % 2 == 0) {sum = sum/2;} else {flag = false;break;}}return flag;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入一個整數(shù):");int sum = scanner.nextInt();System.out.println(sum + " 是不是2的階次方:" + check(sum));} }3.假設(shè)今日是2015年3月1日,星期日,請算出13個月零6天后是星期幾,距離現(xiàn)在多少天(請用代碼實現(xiàn),謝絕調(diào)用API方法)
import java.util.Scanner;//算出星期幾 public class Demo4 {public static String[] week = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};public static int i = 0;public static int[] monthday1 = {0,31,28,31,30,31,30,31,31,30,31,30,31};public static int[] monthday2 = {0,31,29,31,30,31,30,31,31,30,31,30,31};//查看距離當前天數(shù)的差值public static String distance(int year,int month,int day,int newMonth,int newDay) {int sum = 0; //設(shè)定初始距離天數(shù)if (month + newMonth >= 12) {if (((year + 1) % 4 == 0 && (year + 1) % 100 != 0)||(year + 1) % 400 == 0) {sum += 366 + newDay;for(int i = 0;i < newMonth - 12;i++) {sum += monthday1[month + i];}} else {sum += 365 + newDay;for(int i = 0;i < newMonth - 12;i++) {sum += monthday1[month + i];}}} else {for(int i = 0;i < newMonth;i++) {sum += monthday1[month + i];}sum += newDay;}return week[sum%7];}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入當前年份");int year = scanner.nextInt();System.out.println("請輸入當前月份");int month = scanner.nextInt();System.out.println("請輸入當前天數(shù)");int day = scanner.nextInt();System.out.println("請輸入當前是星期幾:以數(shù)字表示,如:星期天 為 0");int index = scanner.nextInt();System.out.println("今天是:" + year + "-" + month + "-" + day + " " + week[index]);System.err.println("請輸入相隔月份");int newMonth = scanner.nextInt();System.out.println("請輸入剩余天數(shù)");int newDay = scanner.nextInt();System.out.println("經(jīng)過" + newMonth + "月" + newDay + "天后,是" + distance(year,month,day,newMonth,newDay));} }4.有兩個籃子,分別為A 和 B,籃子A里裝有雞蛋,籃子B里裝有蘋果,請用面向?qū)ο蟮乃枷雽崿F(xiàn)兩個籃子里的物品交換(請用代碼實現(xiàn))
//面向?qū)ο笏枷雽崿F(xiàn)籃子物品交換 public class Demo5 {public static void main(String[] args) {//創(chuàng)建籃子Basket A = new Basket("A");Basket B = new Basket("B");//裝載物品A.load("雞蛋");B.load("蘋果");//交換物品A.change(B);A.show();B.show();} }class Basket{public String name; //籃子名稱private Goods goods; //籃子中所裝物品public Basket(String name) {// TODO Auto-generated constructor stubthis.name = name;System.out.println(name + "籃子被創(chuàng)建");}//裝物品函數(shù)public void load(String name) {goods = new Goods(name);System.out.println(this.name + "裝載了" + name + "物品");}public void change(Basket B) {System.out.println(this.name + " 和 " + B.name + "中的物品發(fā)生了交換");String tmp = this.goods.getName();this.goods.setName(B.goods.getName());B.goods.setName(tmp);}public void show() {System.out.println(this.name + "中有" + goods.getName() + "物品");} }class Goods{private String name; //物品名稱public String getName() {return name;}public void setName(String name) {this.name = name;}public Goods(String name) {// TODO Auto-generated constructor stubthis.name = name;} }5.請寫出一個 J.U.C — ForkJoin 測試的 Example 繼承 RecursiveTask
import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.Future; import java.util.concurrent.RecursiveTask;public class ForkJoinTaskExample extends RecursiveTask<Integer>{public static final int threshold = 2;private int start;private int end;public ForkJoinTaskExample(int start,int end) {// TODO Auto-generated constructor stubthis.start = start;this.end = end;}@Overrideprotected Integer compute() {// TODO Auto-generated method stubint sum = 0;boolean canCompute = (end - start) <= threshold;if (canCompute) {for(int i = start;i <= end;i++) {sum += i;}} else {int middle = (start + end)/2;ForkJoinTaskExample leftTask = new ForkJoinTaskExample(start, middle);ForkJoinTaskExample rightTask = new ForkJoinTaskExample(middle + 1, end);leftTask.fork();leftTask.fork();rightTask.fork();int leftResult = leftTask.join();int rightResult = rightTask.join();sum = leftResult + rightResult;}return sum;}public static void main(String[] args) {ForkJoinPool forkJoinPool = new ForkJoinPool();ForkJoinTaskExample task = new ForkJoinTaskExample(1, 100);Future<Integer> result = forkJoinPool.submit(task);try {System.out.println("result:" + result.get());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ExecutionException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}總結(jié)
以上是生活随笔為你收集整理的【面试】5道JAVA笔试算法题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux上安装与启动Elastics
- 下一篇: 汇编语言--DOSBox 0.74的安装