【面试】5道JAVA笔试算法题
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笔试算法题相关推荐
- Re: 一著名软件公司的java笔试算法题!
主 题: Re: 一著名软件公司的java笔试算法题! 作 者: szlhj () 等 级: 信 誉 值: 95 所属论坛: Java J2SE / 基础类 问题点数: 20 回复 ...
- java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!
JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...
- java求最大公约数_10道java经典算法题,小白必备,每一题都能提升你的java能力...
JAVA经典算法 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 更多java资料可以私信我领取! [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每 ...
- 著名软件公司的java笔试算法题!(含参考答案)
原题如下:用1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234.412345等,要求:"4"不能在第三位,"3&quo ...
- 一著名软件公司的java笔试算法题的答案
本文为原创,如需转载,请注明作者和出处,谢谢! 原题如下:用1.2.2.3.4.5这六个数字,用java写一个程序,打印出所有不同的排列,如:512234.412345等,要求:"4&quo ...
- Java面试一百道题目(第一题)-什么是面向对象,谈谈你对面向对象的理解
Java面试一百道题目(第一题) 1,什么是面向对象,谈谈你对面向对象的理解. 思路:用面向过程和面向对象做对比来突出什么是面向对象. 答:高级语言分为,面向对象语言和面向过程语言,面向过程语言,距离 ...
- java经典问题算法大全_10道java经典算法!每一题都能提升你的java能力!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 10道java经典算法! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位. ...
- 用Java刷算法题的常用数据结构(C++转Java)
文章目录 一:前言 1:为何刷题从C++转java 2:如何上手呢? 二:输入 1:常规的输入 2:关于其他输入符在nextLine()之前用吃掉回车符的问题解决 3:常见输入之我们输入一串数到容器中 ...
- 数据结构 - 二叉树 - 面试中常见的二叉树算法题
数据结构 - 二叉树 - 面试中常见的二叉树算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图 ...
- 数据结构 - 链表 - 面试中常见的链表算法题
数据结构 - 链表 - 面试中常见的链表算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图. ...
最新文章
- 那些大家情有独钟的好书,以后由你来推荐!
- [并发编程] - Executor框架#ThreadPoolExecutor源码解读03
- 一些WPF中的滤镜特效——Effect Library
- linux设备驱动模型之 kset原理与实例分析
- 加载dict_Python的dict实现原理和Java的HashMap之间的区别
- Ehab Fails to Be Thanos
- 【算法系列之六】两整数之和
- sql语句update中多个case/when的写法
- WSGI直观形象的了解一下
- python numpy修改数据维度
- linux两文件对比,linux对比两个文件的差异
- 中国水蛭素产品行业市场供需与战略研究报告
- 字节大牛教你手撕Java学习,大厂直通车!
- 思科CEO自爆:G20虚拟会议用的我家技术
- h5.v2.php,最新H5影视双端PHP源码 可封装APP
- 不变扩展卡尔曼滤波(IEKF)
- < 知识拓展:CSS 中常用的计量单位有哪些? >
- ps制作设计网站登录界面
- 屏幕坐标系转为笛卡尔坐标系
- rstudio找不到r低版本_R语言安装新版本后旧版本安装包的迁徙问题
热门文章
- 基于PHP的大学生兼职网站的设计与实现
- foobar2000 用了那么久 才学会设置 好音质设置
- Grasshopper and Rhino: Python Scripting Grasshopper和Rhino:Python脚本 Lynda课程中文字幕
- nodejs的socket网络编程
- JetbrainsCrack-3.1-release-enc.jar 下载
- com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
- 如何拦截Windows键而不屏蔽它参与的组合键(如win+d等)
- 从零开始学习Android开发-Android概览
- 动软代码生成器生成数据库文档问题
- qq2018旧版本7.3.1下载_qq音乐2018老版本下载