5道JAVA笔试算法题

开始准备面试刷题咯~

1.数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现)

import java.util.Arrays;//打乱数组
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)); //随机数:[ 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.写出代码判断一个整数是不是2的阶次方(请代码实现,谢绝调用API方法)

import java.util.Scanner;//判断整数是不是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("请输入一个整数:");int sum = scanner.nextInt();System.out.println(sum + " 是不是2的阶次方:" + check(sum));}
}

3.假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用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};//查看距离当前天数的差值public static String distance(int year,int month,int day,int newMonth,int newDay) {int sum = 0; //设定初始距离天数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("请输入当前天数");int day = scanner.nextInt();System.out.println("请输入当前是星期几:以数字表示,如:星期天 为 0");int index = scanner.nextInt();System.out.println("今天是:" + year + "-" + month + "-" + day + "  " + week[index]);System.err.println("请输入相隔月份");int newMonth = scanner.nextInt();System.out.println("请输入剩余天数");int newDay = scanner.nextInt();System.out.println("经过" + newMonth + "月" + newDay + "天后,是" + distance(year,month,day,newMonth,newDay));}
}

4.有两个篮子,分别为A 和 B,篮子A里装有鸡蛋,篮子B里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)

//面向对象思想实现篮子物品交换
public class Demo5 {public static void main(String[] args) {//创建篮子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 + "篮子被创建");}//装物品函数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 + "中的物品发生了交换");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();}}}

【面试】5道JAVA笔试算法题相关推荐

  1. Re: 一著名软件公司的java笔试算法题!

    主 题: Re: 一著名软件公司的java笔试算法题! 作 者:   szlhj () 等 级:   信 誉 值:   95 所属论坛:   Java J2SE / 基础类 问题点数:   20 回复 ...

  2. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!

    JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...

  3. java求最大公约数_10道java经典算法题,小白必备,每一题都能提升你的java能力...

    JAVA经典算法 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 更多java资料可以私信我领取! [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每 ...

  4. 著名软件公司的java笔试算法题!(含参考答案)

    原题如下:用1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234.412345等,要求:"4"不能在第三位,"3&quo ...

  5. 一著名软件公司的java笔试算法题的答案

    本文为原创,如需转载,请注明作者和出处,谢谢! 原题如下:用1.2.2.3.4.5这六个数字,用java写一个程序,打印出所有不同的排列,如:512234.412345等,要求:"4&quo ...

  6. Java面试一百道题目(第一题)-什么是面向对象,谈谈你对面向对象的理解

    Java面试一百道题目(第一题) 1,什么是面向对象,谈谈你对面向对象的理解. 思路:用面向过程和面向对象做对比来突出什么是面向对象. 答:高级语言分为,面向对象语言和面向过程语言,面向过程语言,距离 ...

  7. java经典问题算法大全_10道java经典算法!每一题都能提升你的java能力!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 10道java经典算法! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位. ...

  8. 用Java刷算法题的常用数据结构(C++转Java)

    文章目录 一:前言 1:为何刷题从C++转java 2:如何上手呢? 二:输入 1:常规的输入 2:关于其他输入符在nextLine()之前用吃掉回车符的问题解决 3:常见输入之我们输入一串数到容器中 ...

  9. 数据结构 - 二叉树 - 面试中常见的二叉树算法题

    数据结构 - 二叉树 - 面试中常见的二叉树算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图 ...

  10. 数据结构 - 链表 - 面试中常见的链表算法题

    数据结构 - 链表 - 面试中常见的链表算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图. ...

最新文章

  1. 那些大家情有独钟的好书,以后由你来推荐!
  2. [并发编程] - Executor框架#ThreadPoolExecutor源码解读03
  3. 一些WPF中的滤镜特效——Effect Library
  4. linux设备驱动模型之 kset原理与实例分析
  5. 加载dict_Python的dict实现原理和Java的HashMap之间的区别
  6. Ehab Fails to Be Thanos
  7. 【算法系列之六】两整数之和
  8. sql语句update中多个case/when的写法
  9. WSGI直观形象的了解一下
  10. python numpy修改数据维度
  11. linux两文件对比,linux对比两个文件的差异
  12. 中国水蛭素产品行业市场供需与战略研究报告
  13. 字节大牛教你手撕Java学习,大厂直通车!
  14. 思科CEO自爆:G20虚拟会议用的我家技术
  15. h5.v2.php,最新H5影视双端PHP源码 可封装APP
  16. 不变扩展卡尔曼滤波(IEKF)
  17. < 知识拓展:CSS 中常用的计量单位有哪些? >
  18. ps制作设计网站登录界面
  19. 屏幕坐标系转为笛卡尔坐标系
  20. rstudio找不到r低版本_R语言安装新版本后旧版本安装包的迁徙问题

热门文章

  1. 基于PHP的大学生兼职网站的设计与实现
  2. foobar2000 用了那么久 才学会设置 好音质设置
  3. Grasshopper and Rhino: Python Scripting Grasshopper和Rhino:Python脚本 Lynda课程中文字幕
  4. nodejs的socket网络编程
  5. JetbrainsCrack-3.1-release-enc.jar 下载
  6. com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
  7. 如何拦截Windows键而不屏蔽它参与的组合键(如win+d等)
  8. 从零开始学习Android开发-Android概览
  9. 动软代码生成器生成数据库文档问题
  10. qq2018旧版本7.3.1下载_qq音乐2018老版本下载