1、打印出100以内的素数
 该编程题的思路大致如下:
 (1)完成一个判断某整数是否为素数的方法;
 (2)循环1--100;
 (3)每循环一次就判断一次,返回true则打印;
package com.example.demo1;
public class Number {
 public static void main(String[] args) {
  //遍历1到100
  for (int i = 1; i <=100; i++) {
   if(isPrime(i)){   //判断是否为素数
    System.out.println(i); //打印素数
   }
  }
 }
 //判断一个整数是否是素数的方法
 public static boolean isPrime(int num){
  if(num==1){    //1不是素数,直接返回false
   return false;
  }
  //从2开始到该整数的2次根之间遍历
  long sqrtNum=(long)Math.sqrt(num); //得到该数的2次根
  for (int i = 2; i <=sqrtNum; i++) {
   if(num%i==0){   //判断能否除尽
    return false;  //返回false
   }
  }
  return true;    //返回true
 }
}

2、打印九九乘法口诀表。
 该编程题的思路大致如下:
 (1)循环1-9,采用两个循环变量,一个控制行,一个控制列;
 (2)每循环一次就打印一句,若控制列的循环变量到底了则打印换行。
package com.example.demo1;
public class NineNineMulitTable {
 public static void main(String[] args) {
  //循环,初始化i和j为1
  for (int i = 1,j=1; j <=9; i++) {
   //间隔打印它们的每一项
   System.out.print(i+"*"+j+"="+i*j+"\t");
   if(i==j){   //判断是否该换行
    i=0;   //将i值赋0
    j++;   //j自加1
    System.out.println(); //换行
   }  
  }
 }
}

3、打印10000以内的回文数字。
 该编程题的思路大致如下:
 (1)完成一个把数字按位调换顺序的方法;
 (2)循环10-9999;
 (3)每循环一次就判断一次,返回true则打印;
package com.example.demo1;
public class CircleNumber {
 public static void main(String[] args) {
  //遍历10-10000
  for (int i = 10; i < 10000; i++) {
   if(isCircleNumber(i)){  //判断当前数是否为回文数
    System.out.println(i+"是回文数"); //打印
   }
  }
 }
 //判断是否为回文数的方法
 public static boolean isCircleNumber(int num){
  int oldValue=num;  //保存原值
  int temp=0;   //反过来的值,初始化为0
  while(num>0){   //循环number的每一位数值
   temp=temp*10+num%10; //得到一个数字
   num/=10;  //num减少一位
  }
  return temp==oldValue;  //判断反值与原值是否相等
 }
}

4、获得任一个时间的下一天的时间。
package com.example.demo1;
import java.util.Date;
public class NextDay {
 public static void main(String[] args) {
  Date now =new Date();  //获得当前时间
  //打印下一天的时间
  System.out.println(getNextDay(now));
 }
 //获得下一天
 public static Date getNextDay(Date d){
  long addTime=1;   //以1为乘以的基数
  addTime *=1;   //1天以后,如果是30天以后,这里就是30
  addTime *=24;   //1天24小时
  addTime *=60;   //1小时60分钟
  addTime *=60;   //1分钟60秒
  addTime *=1000;   //1秒1000毫秒
  //用毫秒数构造新的日期
  Date date =new Date(d.getTime()+addTime);
  return date;   //返回结果
 }
}

5、50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
 该编程题的思路大致如下:
 (1)首先把数据填充到数组或链表中;
 (2)用一个while循环进行出圈,直到只剩下一个元素留下。
package com.example.demo1;
import java.util.LinkedList;
import java.util.List;
public class Cycle {
 public static int cycle(int total, int k) {       // 功能方法
  List<Integer> datalist = new LinkedList<Integer>(); // 创建链表对象
  for (int i = 0; i < total; i++) {       // 添加数据元素
   datalist.add(new Integer(i + 1));
  }
  // 定义下标,模拟已经去掉一个元素,因此从-1开始
  int index = -1;
  // 一直循环去除数据,直到只剩下一个元素
  while (datalist.size() > 1) {
   index = (index + k) % datalist.size(); // 得到应该出局的下标
   datalist.remove(index--);         // 去除元素
  }
  return ((Integer) datalist.get(0).intValue()); // 返回它的值
 }
 public static void main(String[] args) {
  System.out.println("该数字原来的位置是:"+cycle(50, 3));
 }
}

6、将某个时间以固定格式转化成字符串。
package com.example.demo1;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormat {
 public static void main(String[] args) {
  Date now =new Date();   //得到现在时间
  System.out.println(dateFormatStr(now)); //打印现在时间的字符串格式
 }
 //得到固定字符串格式的方法
 public static String dateFormatStr(Date date){
  //定义字符换格式
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String str=sdf.format(date);  //进行格式化,并得到字符串
  return str;    //返回结果
 }
}

7、用java实现一个冒泡排序算法。
package com.example.demo1;

public class MaoPaoSort {
 public static void main(String[] args) {
  int [] arr={3,5,7,1,8,11,9};  //定义数组
  maopaoSort(arr);   //开始排序
 }
 //排序方法
 public static void maopaoSort(int [] arrys){
  //定义临时变量temp
  int temp=0;
  //用i我下标,遍历数组
  for (int i = 0; i < arrys.length; i++) {
   //对于每一个数组元素,从0到还未排序的最大下标,总是把最大的数放在后面
   for (int j = 0; j < arrys.length-i-1; j++) {
    if(arrys[j]>arrys[j+1]){ //判断当前数字与后面数字的大小
     temp=arrys[j];
     arrys[j]=arrys[j+1];
     arrys[j+1]=temp;
    }
   }
  }
  maopaoPrint(arrys);    //打印
 }
 //打印方法
 public static void maopaoPrint(int [] arrys){
  for (int i = 0; i < arrys.length; i++) { //遍历
   System.out.print(arrys[i]+" ");  //打印,以空格隔开
  }
  System.out.println();    //换行
 }
}

8、用java实现一个插入排序算法。
package com.example.demo1;
public class InsertSort {
 public static void main(String[] args) {
  int [] arr={3,5,4,1,8,11,9};  //定义数组
  doInsertSort(arr);   //开始是排序
 }
 //排序方法
 public static void doInsertSort(int [] arrys){
  int len=arrys.length;   //获取数组的长度
  for (int i = 0; i < len; i++) {  //遍历数组,从1开始
   int j;    //定义变量j
   int temp=arrys[i];  //临时存储当前的数字
   for (j=i ;j>0; j--) {  //遍历i之前的数字
    //如果前面的数字大于后面的,则把大的值赋值给后面的
    if(arrys[j-1]>temp){
     arrys[j]=arrys[j-1];
    }else
     //如果当前的数,小于前面的数,那就说明不小于前面所有的数,
     //因为前面已经是排好了序的,所以直接退出当前一轮的比较
     break;
   }
   arrys[j]=temp;   //把空缺位置的数字赋值为原有的值
  }
  print(arrys);    //打印
 }
 //打印方法
 public static void print(int [] arr){
  for (int i = 0; i < arr.length; i++) { //遍历
   System.out.print(arr[i]+" "); //打印,以空格隔开
  }
  System.out.println();   //换行
 }
}

9、用java实现一个快速排序算法。
package com.example.demo1;
public class QuickSort {
 public static void main(String[] args) {
  int [] arr=new int[]{5,9,8,4,7,3,6,2}; 
  print(arr);
  sort(arr, 0, arr.length-1);
  print(arr);
 }
 //打印方法
 public static void print(int [] arr){
  for (int i = 0; i < arr.length; i++) {  //遍历
   System.out.print(arr[i]+" ");  //打印,以空格隔开
  }
  System.out.println();    //换行
 }
 public static void sort(int [] arr,int low,int high){
  if(low>=high){   //low小于或等于high,直接返回
   return;
  }
  if((high-low)==1){  //如果只有两个数,则直接比较
   if(arr[0]>arr[1]){
    swap(arr,0,1);
   }
   return;
  }
  int povit=arr[low];  //取第一个数作为中间数
  //左滑块当前的下标数,从第二个数字开始,从最后一个数字开始
  int left=low+1;
  int right=high;   //右滑块当前的下标数
  while(left<right){  //左右循环
   //从左边开始找
   while(left<right && left<=high){ //如果左小于右则一直循环
    if(arr[left]>povit){  //找到一个大的数字没有
     break;
    }
    left++;    //左下标往右移动
   }
   //从右边开始找
   while(left<=right && right>low){ //如果做大于右则一直循环
    if(arr[right]<=povit){  //找到一个小的数字没有
     break;
    }
    right--;   //右下标往左移动
   }
   if(left<right){    //如果还没找完,则交换数字
    swap(arr, right, left);
   }
  }
  swap(arr,low,right);    //交换中间数字
  sort(arr,low,right);    //排序前面数组
  sort(arr,right+1,high);    //排序后面数组
 }
 //调位方法
 public static void swap(int [] arr,int i,int j){
  int temp;
  temp=arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
 }
}

10、怎样实现Singleton(单例)模式编程?
package com.example.demo1;
public class SingleObjectPattern {
 public static void main(String[] args) {
  ConnectionPoolA cp1=ConnectionPoolA.getConnectionPool();
  ConnectionPoolB cp2=ConnectionPoolB.getConnectinPool();
  ConnectionPoolA cp3=ConnectionPoolA.getConnectionPool();
  ConnectionPoolB cp4=ConnectionPoolB.getConnectinPool();
  System.out.println(cp1==cp3);
  System.out.println(cp2==cp4);
 }
}
package com.example.demo1;
/*
 * 饿汉式单例,优点:实现简单;缺点:在不需要的时候,白创造了对象,造成了资源浪费
 */
public class ConnectionPoolA {
 private static ConnectionPoolA cp=new ConnectionPoolA();//创建实例
 private ConnectionPoolA(){}    //私有化构造方法
 public static ConnectionPoolA getConnectionPool(){
  return cp;
 }
}
package com.example.demo1;
/*
 * 懒汉式单例,优点:需要对象时才创建对象;缺点:线程不安全;
 */
public class ConnectionPoolB {
 private static ConnectionPoolB cp;
 private ConnectionPoolB(){}    //私有化构造方法
 //以此类的锁来保证多线程的安全
 public static synchronized ConnectionPoolB getConnectinPool(){
  if(cp==null){
   cp=new ConnectionPoolB();  //创建实例
  }
  return cp;
 }
}

学习面试题Day07的更多相关文章

  1. 深度学习面试题29:GoogLeNet(Inception V3)

    目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...

  2. 深度学习面试题27:非对称卷积(Asymmetric Convolutions)

    目录 产生背景 举例 参考资料 产生背景 之前在深度学习面试题16:小卷积核级联卷积VS大卷积核卷积中介绍过小卷积核的三个优势: ①整合了三个非线性激活层,代替单一非线性激活层,增加了判别能力. ②减 ...

  3. 深度学习面试题13:AlexNet(1000类图像分类)

    目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是 ...

  4. Java学习之面试题整理

    1,java 基本数据类型有几种?哪几种?(面试题) 8种 byte short int long float double char boolean 2,int类型是几个字节?(面试题) 4字节 3 ...

  5. 深度学习面试题26:GoogLeNet(Inception V2)

    目录 第一层卷积换为分离卷积 一些层的卷积核的个数发生了变化 多个小卷积核代替大卷积核 一些最大值池化换为了平均值池化 完整代码 参考资料 第一层卷积换为分离卷积 net = slim.separab ...

  6. 深度学习面试题25:分离卷积(separable卷积)

    目录 举例 单个张量与多个卷积核的分离卷积 参考资料 举例 分离卷积就是先在深度上分别卷积,然后再进行卷积,对应代码为: import tensorflow as tf # [batch, in_he ...

  7. 深度学习面试题24:在每个深度上分别卷积(depthwise卷积)

    目录 举例 单个张量与多个卷积核在深度上分别卷积 参考资料 举例 如下张量x和卷积核K进行depthwise_conv2d卷积 结果为: depthwise_conv2d和conv2d的不同之处在于c ...

  8. 深度学习面试题21:批量归一化(Batch Normalization,BN)

    目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...

  9. 深度学习面试题20:GoogLeNet(Inception V1)

    目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...

随机推荐

  1. C语言数据结构之栈:中缀表达式的计算

    *注:本人技术不咋的,就是拿代码出来和大家看看,代码漏洞百出,完全没有优化,主要看气质,是吧 学了数据结构——栈,当然少不了习题.习题中最难的也是最有意思的就是这个中缀表达式的计算了(可以算+-*/和 ...

  2. shell echo打印换行的方法

    echo要支持同C语言一样的\转义功能,只需要加上参数-e,如下所示: [~]#echo "Hello world.\nHello sea" Hello world.\nHello ...

  3. js截取所需字符串长度

    //title :字符串  :interceptLength:所需的长度 function TitleThumbnail(title, interceptLength, thumbnailCharac ...

  4. Qt编译postgreSQL驱动

    安装postgreSQL,安装目录下的lib和bin添加到path 打开Qt安装目录,找到src\plugins\sqldrivers\psql编辑psql.pro,添加INCLUDEPATH += ...

  5. 2328: [HNOI2011]赛车游戏 - BZOJ

    先把一定要减的费用先减掉,就是b*s*len(上坡路),下坡路就设一个初速度,使耗油为0,如果没油了,就无法到达 然后考虑加速 对于长度为len的路,增加v的速度需要len*a*v的油,与len成正比 ...

  6. Deep Learning and the Triumph of Empiricism

    Deep Learning and the Triumph of Empiricism By Zachary Chase Lipton, July 2015 Deep learning is now ...

  7. Good Bye 2015 A

    Problem A:http://codeforces.com/problemset/problem/611/A A. New Year and Days 题意:某人要在2016年收集糖果,有两种不同 ...

  8. asp 文件上传(ASPUpload组件上传)

    要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload   要实现该功能,就要利用一些特制的文件上传组件 ...

  9. spoj 95

    栈应用 ...... 水题 #include<cstdio> #include<cstdlib> #include<cstring> #include<alg ...

  10. express 3.0.x 中默认不支持flash() 的解决方法

    Express 3.x默认已经不支持req.flash(),如果要用flash()需要这样兼容 1.flash 消息暂存在session中,需要cookieParser 和 session中间件来声明 ...