zoukankan      html  css  js  c++  java
  • 面试题编程题整理(更新中)

    博主说两句,博主大三在校生,最近面试积累了很多的题目,于是准备整理一下 尽管可能不是最优解
    注: 以下所有的代码均 通过了牛客网的测试 
    [编程题01] 整数反转

    时间限制:1秒

    空间限制:131072K

    输入一个有符号整数,输出该整数的反转值。

    输入描述:
    一个整数


    输出描述:
    一个整数

    输入例子1:
    123

    输出例子1:
    321

    输入例子2:
    -123

    输出例子2:
    -321

    输入例子3:
    200

    输出例子3:
    2
    方法一
    public static int reverse2(int x) {
    		//x 小于0 则返回 -x 否则返回 x
    		int tmp = x < 0?-x:x;
    		//给一个变量 用来存结果
    		long reverse=0;
    		//结束条件是 输入的数已经是最后一个
    		while (tmp>0) {
    			//每次reverse的数往高位移动一位  tmp每次取模拿到最后一位
    			reverse=reverse*10 + tmp%10;
    			if(reverse>Integer.MAX_VALUE) {
    				return 0;
    			}
    			//然后tmp每次往低位一位
    			tmp=tmp/10;
    		}
    		//最后判断输入时的符号来给出最终的符号
    		return (int)(x < 0? -reverse:reverse);
    
    	}  
    方法二
    import java.util.Scanner;
    
    /**
    * 字符串进行处理 * method two * @author shundong * */ public class Mian { public static void main(String[] args) { Scanner in = new Scanner(System.in); //System.err.println("请输入一个需要反转的整数"); long inStr = in.nextInt(); if (inStr<10&inStr>-10) { System.out.println(inStr); return; } String tmp = inStr <0? -inStr+"":inStr+"";//int 转STRING 且必正 if (inStr<0) { System.out.print("-"); } for(int i = tmp.length()-1;i>=0;i--) { if(tmp.charAt(i)-48!=0) { System.out.print(tmp.charAt(i)); } } } }
    [编程题02] 计算 1+2-3+4-5+6-7+8-9...+n 输入n 输出结果
    package com.shundongAlgorithmProblem;
    
    import java.util.Scanner;
    
    /**
     * 计算 1+2-3+4-5+6-7+8-9+...+n
     * @author shundong
     *
     */
    public class Code_02 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		//System.out.println("请输入要计算的n");
    		int tmp = in.nextInt();
    		long sum = 1;
    		for(int i = 2;i<=tmp;i++) {
    			if (i%2==0) {
    				sum += i;
    			}
    			else {
    				sum += -i;
    			}
    		}
    		System.out.println(sum);
    	}
    }
    

      

    [编程题03] 写一个简单的单例模式类
    package com.shundong.AlgorithmProblem;
    /**
     * java写一个简单的单例类
     * @author shundong
     *
     */
    
    class Singleton 
    {
    	//使用一个类变量来缓存曾经创建的实例
    	private static Singleton instance;
    	//对构造进行隐藏(private)
    	private Singleton(){}
    	/**
    	 * 提供一个静态方法 
    	 * 该方法加入了自定义控制 保证只产生一个Singleton对象
    	 * @return 返回Singleton 实例
    	 */
    	public static Singleton getInstance()
    	{
    		/**
    		 * 如果instance为null,表示还不曾创建Singleton对象 
    		 * 如果instance不为null,表示已经创建Singleton对象 
    		 */
    		if(instance==null) {
    			//创建Singleton对象 并将其缓存
    			instance = new Singleton();
    		}
    		return instance;
    	}
    }
    	//for test
    	public class SingletonTest
    	{
    		public static void main(String[] args) 
    		{
    			//创建实例不能通过构造!!!
    			//必须通过getInstance !!!单例 o了
    			Singleton aSingleton1 = Singleton.getInstance();
    			Singleton aSingleton2 = Singleton.getInstance();
    			System.out.println(aSingleton1==aSingleton2);
    		}
    	}
    

      [编程题04] 写一个二进制转十进制的转换器(切记注意越界以及非法符号问题)

    
    
    package com.shundong.stackAndQueue;
    
    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    /**
     * 二进制转换器(栈) 
     * @author shundong
     *
     */
    public class BinaryConversion {
    	private static String inConversion ;//输入的进制数
    	private static Deque<Integer> deque = new LinkedList<Integer>();
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("请输入你需要转换的数字:");
    		Scanner in = new Scanner(System.in);
    		inConversion = in.nextLine();//拿到键盘 要转换的
    		
    		if(isInteger(inConversion)) {
    			if(!isInt(inConversion)) {
    				System.out.println("输入的数字越界了!");
    			}else {
    				decimalToBinary(Integer.parseInt(inConversion));	
    			}
    		}else {
    			System.err.println("请输入一个数字");
    		}
    //		decimalToBinary(inConversion);
    	}
    	/**
    	 * 判断被转换的对象 是否为数字
    	 * @param str
    	 * @return
    	 */
    	public static boolean isInteger(String str) {    
    		Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");    
    		return pattern.matcher(str).matches();    
    	}  
    	/**
    	 * 越界判断
    	 */
    	public static boolean isInt(String val) {
    		try {
    		Integer.parseInt(val);
    		return true;
    		} catch (NumberFormatException e) {
    		return false;
    		}
     	}
    	/**
    	 * 十进制转二进制
    	 * @param val
    	 * @return
    	 */
    	public static void decimalToBinary(int val) {
    		do {
    			int mod = val % 2;
    			deque.push(mod);
    			val = val /2 ;
    		}while(val>0);
    		for (Integer integer : deque) {
    			System.out.print(integer);
    		}
    	}
    }
    
    
    

      

     

      
  • 相关阅读:
    Golang Failpoint 的设计与实现
    没涉及到最值求解;观点:矩阵乘法无法表达出结果。 现实生活中事件、现象的数学表达
    多元微分学 枚举破解15位路由器密码 存储空间限制 拆分减长,求最值 数据去重
    ARP Poisoning Attack and Mitigation Techniques ARP欺骗 中间人攻击 Man-In-The-Middle (MITM) attack 嗅探 防范 Can one MAC address have two different IP addresses within the network?
    The C10K problem
    HTTP Streaming Architecture HLS 直播点播 HTTP流架构
    现代IM系统中消息推送和存储架构的实现
    现代IM系统中的消息系统架构
    长连接锁服务优化实践 C10K问题 nodejs的内部构造 limits.conf文件修改 sysctl.conf文件修改
    doubleclick cookie、动态脚本、用户画像、用户行为分析和海量数据存取 推荐词 京东 电商 信息上传 黑洞 https://blackhole.m.jd.com/getinfo
  • 原文地址:https://www.cnblogs.com/shundong106/p/9880321.html
Copyright © 2011-2022 走看看