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. Only the original thread that created a view hierarchy can touch its views

    在调试软件的时候出现如下的错误: 01-05 20:53:36.492: E/ZZShip(2043): android.view.ViewRootImpl$CalledFromWrongThread ...

  2. Oracle数据库间的数据复制 - SQLPlus中的COPY命令

    Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同. 根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持 ...

  3. pdf增加水印

    /// <summary> /// 为PDF添加水印或背景图片 /// </summary> /// <param name="strSourceFilePat ...

  4. 制作下拉菜单(PopupList)

    怎样判断是否应当使用下拉菜单 下拉菜单,就是将一系列的选项隐藏,通过单击某一个控件将会弹出一个包含这些选项的列表,在其中选择想要的选项.这样做不但可以节省屏幕空间,也可以让用户在进行选择时更加方便快捷 ...

  5. 4.2 spring-import 标签的解析;

    对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件.不过,分模块都是大多数人能想到的方法,但是,怎么分模块,那就是仁者见仁,智者见智了.我的策略是使用im ...

  6. CQRS学习——Cqrs补丁,async实验以及实现[其二]

    实验——async什么时候提高吞吐 async是一个语法糖,用来简化异步编程,主要是让异步编程在书写上接近于同步编程.总的来收,在await的时候,相当于附加上了一个.ContinueWith(). ...

  7. Nginx 禁止访问某个目录或文件的设置方法

    如果基于WEB根目录下,要禁止用户访问/config目录,或者要禁止用户访问/config.ini(ZF常用INI,不过建议还是放到WEB目录以外的地方),可以通过location进行配置,返回403 ...

  8. [Oracle]any, all解析

    因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些SQL文的语法, 至于效率问题, 如CCW所说它们和EXISTS, IN 之类没有什么差别, 而且要具体问题具体 ...

  9. Android:android:gravity 和 android:layout_Gravity 的区别

    LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity. android:gravity 属性是对该view中内容的限定 andro ...

  10. 《RabbitMQ in action》

    Producers create messages and publish (send) them to a broker server (RabbitMQ).What’s a message? A ...