- 浏览: 195073 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
iwwenbo:
虽然看不懂,但觉得很牛叉,专门注册账号赞一个
Java结合docx4j生成docx文件 -
SE_XiaoFeng:
为何会是明文的密码呢?用户的密码,比较简单的处理会使用MD5进 ...
在web应用程序中怎么检测firefox中已经开启firebug -
myclover:
wilsonchen 写道谢谢您的帮助^_^填充完第一页继续填 ...
Java结合docx4j生成docx文件 -
wilsonchen:
谢谢您的帮助^_^填充完第一页继续填充第二页,或者使用文档合并 ...
Java结合docx4j生成docx文件 -
myclover:
wilsonchen 写道楼主,请教您一个问题:如何利用doc ...
Java结合docx4j生成docx文件
最近有些网友给我QQ上或者在群里问了一些面试题,有些很简单,有些网友觉得较难的或者出现的频率较高的我就总结下,现在把我个人的一些看法给写出来,由于本人水平有限,肯定有不妥之处,请各位大虾批评指正。
package com.myclover.exam; import java.io.File; import java.io.FileOutputStream; import java.math.BigDecimal; import java.util.ArrayDeque; import java.util.Arrays; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Random; /** * <pre> * java程序员面试笔试的常见编程试题 * 最近很多网友给我QQ上问一些他们被面到的面试题,下面把一些常见的 * 频率比较高的给总结出来,通过该类来完成,因为本人水平有限,代码 * 有什么不妥之处请谅解并指出 * Blog: http://myclover.iteye.com * @author myclover * </pre> */ @SuppressWarnings("all") public class ExamArray { /** * 功能描述: * 统计一串字符中每个字符出现的次数,并且进行排序 * 比如输入 abbcccddd ,则输出 a(1)b(2)c(3)d(3) * 假如参数是 ddcccbAa 输出格式为: a(1)b(1)c(3)d(2)A(1) * @param str 字符串 * @return 返回值:返回排序并且统计之后的新字符串 */ public static String calStringCounts(String str){ //对字符串先进行排序 str = sortString(str); int count = 1; StringBuffer sb = new StringBuffer(); int length = str.length(); for(int i = 0 ; i < length ; i++){ if(i < (length - 1) && (str.charAt(i) == str.charAt(i+1))){ count++; }else{ sb.append(str.charAt(i)).append("(").append(count).append(")"); count = 1; continue; } } return sb.toString(); } /** * 功能描述: * 对一串无序的字符串进行排序,小写字母在大写字母之前 * @param str 无序的字符串 * @return 返回值:返回排序后的新字符串 */ private static String sortString(String str){ StringBuffer sb1 = new StringBuffer(); StringBuffer sb2 = new StringBuffer(); for(int i = 0 ; i < str.length() ; i++){ //小写字母 if((int)str.charAt(i) >= 97){ sb1.append(str.charAt(i)); }else{ //大写字母 sb2.append(str.charAt(i)); } } //把字符串转换成字符数组 char[] ch1 = sb1.toString().toCharArray(); char[] ch2 = sb2.toString().toCharArray(); //对字符数组排序 Arrays.sort(ch1); Arrays.sort(ch2); return new String(ch1) + new String(ch2); } /** * 功能描述: * 判断两个整型数组是否相同,两个整型数组是无序的,可以有重复的 * 要求两个数组中重复的元素一致,并且重复的次数一致才算是相同 * 使用Arrays类来实现 * @param a 整型数组 * @param b 整型数组 * @return 返回值:如果两个数组相同,则返回true,否则返回false */ public static boolean isEqualArrayUseArrays(int[] a , int[] b){ //如果长度不相同,则两个数组肯定不相同 if(a.length != b.length){ return false; } //对两个数组进行排序 Arrays.sort(a); Arrays.sort(b); return Arrays.equals(a, b); } /** * 功能描述: * 判断两个整型数组是否相同,两个整型数组是无序的,可以有重复的 * 要求两个数组中重复的元素一致,并且重复的次数一致才算是相同 * 并且不能使用javaAPI中的Arrays辅助类实现 * @param a 整型数组 * @param b 整型数组 * @return 返回值:如果两个数组相同,则返回true,否则返回false */ public static boolean isEqualArray(int[] a , int[] b){ //如果长度不相同,则两个数组肯定不相同 if(a.length != b.length){ return false; } //这里使用双端队列Deque,ArrayDeque不是线程安全的,jdk1.6版本之后才有 Deque<Integer> list = initDeque(a); // List<Integer> list = initList(a); for(Integer s : b){ if(list.contains((Object)s)){//如果队列中存在,则删除,继续下一次遍历 //这里删除指定的元素,如果是整数的话则需要转成Object类型,因为该方法支持按照索引删除 list.remove((Object)s); continue; }else{ return false; } } //如果最后集合为空,则表示两个数组相同 if(list.size() <= 0){ return true; } return false; } /** * 功能描述: * 通过一个整型数组组装到一个Deque集合中,本方法仅适合jdk1.6+版本的 * @param a 一个整型数组 * @return 返回值:返回组装之后的集合列表 */ private static Deque<Integer> initDeque(int[] a){ Deque<Integer> deque = new ArrayDeque<Integer>(); for(Integer ds : a){ deque.add(ds); } return deque; } /** * 功能描述: * 通过一个整型数组组装到一个List集合中,该方法适合jdk1.5+ * @param a 一个整型数组 * @return 返回值:返回组装之后的集合列表 */ private static List<Integer> initList(int[] a){ //LinkedList在检索时速度要比ArrayList快,只是在装载时需要消耗更大的内存 //如果内存允许,换取时间的话可以考虑使用LinkedList,但是如果为了内存的话那么 //就使用ArrayList List<Integer> list = new LinkedList<Integer>(); // List<Integer> list = new ArrayList<Integer>(); for(Integer ds : a){ list.add(ds); } return list; } /** * 功能描述: * 构建一个无序并且可以重复的整型数组 * @param length 数组的长度 * @param maxValue 数组中元素的最大值 * @return 返回值:返回一个整型数组 */ public static int[] buildArray(int length , int maxValue){ int[] a = new int[length]; for(int i = 0 ; i < length ; i++){ Random r = new Random(); a[i] = r.nextInt(maxValue); } return a; } /** * 功能描述: * 有一种积分机制,首先是不同的等级送了一个总积分,然后每消费三个积分 * 时又可以赠送一个积分,请设计一个方法计算出每个等级可以享受的总积分 * @param sum 第一次赠送的总积分 * @return 返回值:返回某积分下最终可以享受的总积分数 */ public static int getTotalCounts(int sum){ int count = 0; while(sum > 0){ sum-- ; count++; if(count % 3 == 0){ sum += 1; } } return count; } /** * 功能描述: * 采用进位方式求大整数(n)的阶乘 * @param n 阶乘参数 */ public static void bigNumFactorial(int n) throws Exception { long[] arr = new long[1000000]; //通过arr数组装阶乘结果 int high ,j ; //high控制进位 ,j控制循环 int digit = 1 ; // 位数 int temp , i ; arr[0] = 1 ; for(i = 2 ; i <= n ; i++){ for(high = 0 , j = 1 ; j <= digit ; ++j){ // 循环计算 temp=(int)(arr[j-1]*i + high);// 计算乘积 arr[j-1] = temp % 10; // 保存每一位 high = temp / 10; // 进位 } while(high > 0){ arr[++digit-1] = high % 10;// 保存高位 high /= 10; } } File file = new File("D:/result.txt"); FileOutputStream fouts = new FileOutputStream(file , true); //循环输出结果 for(int k = digit ; k >= 1 ; --k){ //把结果输出到文件中,这里使用了追加模式,所以每次测试时先把文件删除再进行测试 fouts.write(String.valueOf(arr[k-1]).getBytes()); //以下是在控制台直接输出 // System.out.print(arr[k-1]); // if(k % 100 == 0){//每输出100位换行 // System.out.println(); // } } fouts.close(); } /** * 功能描述: * 使用java.math.BigDecimal类进行计算大整数阶乘 * @param n 阶乘参数 */ public static void bigDecimalFactorial(int n) throws Exception{ BigDecimal result = new BigDecimal("1"); for(int i = 2 ; i <= n ; i++){ result = result.multiply(new BigDecimal(String.valueOf(i))); } // System.out.println(result.toString()); //把结果保存到文件之中,这里每次会覆盖原文件 saveResult("D:/result1.txt" , result.toString() , false); } /** * 功能描述: * 保存指定内容到文件中 * @param filePath 文件所在的路径 * @param content 文件内容 * @param isAppend 是否追加 * @throws Exception */ private static void saveResult(String filePath , String content , boolean isAppend) throws Exception{ File file = new File(filePath); FileOutputStream fouts = new FileOutputStream(file , isAppend); fouts.write(content.getBytes()); fouts.flush(); fouts.close(); } }
package com.myclover.exam.test; import com.myclover.exam.ExamArray; public class TestExamArray { public static void main(String[] args) { int[] a = ExamArray.buildArray(500000, 10000); int[] b = ExamArray.buildArray(500000, 10000); long st = System.currentTimeMillis(); long sf = Runtime.getRuntime().freeMemory(); // System.out.println(ExamArray.isEqualArray(a, b)); System.out.println(ExamArray.isEqualArrayUseArrays(a, b)); long et = System.currentTimeMillis(); long ef = Runtime.getRuntime().freeMemory(); System.out.println("执行时间:" + (et - st) + " 消耗的内存:" + (sf - ef)); String str = "DAsfsdddcdsfdsfwSDSARECCXASerw"; System.out.println(ExamArray.calStringCounts(str)); System.out.println(ExamArray.getTotalCounts(100)); // try { // ExamArray.bigNumFactorial(20); // ExamArray.bigDecimalFactorial(20); // } catch (Exception e) { // e.printStackTrace(); // } } }
发表评论
-
Java结合docx4j生成docx文件
2012-06-07 09:55 8800平时项目中经常碰到报表的生成,在此简单描述下使用java结合d ... -
一些java程序员面试笔试常见的题
2011-05-15 10:46 1806在群里经常碰到很多找工作的朋友回来就谈论自己的面试经历,被问到 ... -
实现二叉查找的两种方法
2011-05-15 10:31 1090在群里经常看到很多网友面试回来说又考了二叉查找,但是搞不懂咋个 ... -
JXL操作Excel的例子
2011-05-15 10:25 2055在实际项目中经常需要对一些汇总进行导出到Excel表格中,jx ... -
Itext导出Word文档的例子
2011-05-15 10:21 5912在实际项目中经常需要 ... -
一个简单的String操作工具类
2010-08-31 20:34 2977对一些常用的方法进行简单的封装,有些正则表达式来源于网络,要是 ... -
一个简单的日期操作工具类
2010-08-30 21:53 1413在很多项目中都需要对日期进行操作或是转换,在此对日期操作做了一 ... -
一个java文件操作工具类
2010-08-04 19:28 2731最近在写一些文件操作 ... -
在Tomcat中JNDI的配置
2009-09-29 11:35 17781.在tomcat6.0下的配置。这两种版本的配置方法有点 ... -
不要做浮躁的人
2009-09-29 11:25 8331.不要看到别人的回复 ... -
一个JAVA编写的MD5加密程序
2009-08-05 13:48 1504package com.myclover.java.t ... -
Eclipse快捷键大全
2009-03-22 13:37 1083Ctrl+1 快速修复(最经典的快捷键) Ctrl+D: 删 ... -
一个JAVA面试程序题
2009-03-22 13:24 2197用1、2、2、3、4、5这六个数字,用java写一个main函 ... -
几道JAVA面试题目
2009-03-22 13:17 1329JAVA面试题 1. abstract class Name ... -
Java语法总结 - 内部类
2009-03-22 13:11 1189从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
Java语法总结 - 方法
2009-03-22 13:10 12301、重写只能出现在继承关系之中。当一个类继承它的父类方法时 ... -
张孝祥的Java邮件开发源代码
2009-03-21 15:05 1321这是在传智播客网上面下的张孝祥老师的Java邮件开发源代码,需 ... -
javaapplet实例讲解
2009-03-21 15:03 2524一个javaapplet实例的开发详解的例子和文档 -
IntelliJ IDEA使用技巧一览表
2009-03-21 09:25 20871、写代码时用Alt-Insert ... -
IntelliJ IDEA快捷键
2009-03-21 09:19 15030使用了一段时间的Intelli ...
相关推荐
超全的嵌入式工程师笔试面试题汇总 单片机嵌入式应聘测试题(含答案).pdf 经典嵌入式面试题.pdf 嵌入式工程师笔试题带答案.pdf 嵌入式工程师经典面试题.pdf 嵌入式软件工程师笔试集锦.pdf 嵌入式软件工程师笔试题__...
C++笔试面试题带答案.docx c++笔试题汇总.pdf C++经典面试题库 附带参考答案.docx C++语言程序设计试题.docx CC++面试问题分类大汇总.docx C_C++笔试题大全.doc gamesloft C++面试题目.docx 常见C++笔试题目整理(含...
笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip...
【笔试面试题】华为校园招聘笔试面试题合集 说明:华为校园招聘合集,各个岗位的的笔试题,非常有用 (goodbookisgoodbook) 文件列表: 华为校园招聘笔试面试题合集(0,-03-13) 华为校园招聘笔试面试题合集\2012年最全的...
JAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdfJAVA笔试面试题详解.pdf...
最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的Java笔试面试题.zip最全的...
华为 近几年校园招聘笔试 面试题 想进华为的看看吧
C++笔试面试题带答案.docx c++笔试题汇总.pdf C++经典面试题库 附带参考答案.docx C++语言程序设计试题.docx CC++面试问题分类大汇总.docx C_C++笔试题大全.doc gamesloft C++面试题目.docx 常见C++笔试题目整理(含...
100家IT名企笔试面试题 百度笔试题,中兴笔试题,腾讯笔试题,华为笔试题,联想笔试题
BAT谷歌微软等各IT公司互联网C++ JAVA 计算机笔试面试真题复习资料108个文档合集 C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案.docx c++笔试题汇总.pdf ...
下面,我们将深入探讨一些可能出现在C#笔试面试中的关键知识点。 一、基础语法 1. 变量与数据类型:理解C#中的基本数据类型(如int、string、bool等)以及引用类型,了解变量声明和初始化的规则。 2. 控制流:包括...
硬件,嵌入式,fpga,半导体笔试面试题,包括FPGA工程师面试题和答案,中兴通讯校园招聘硬件类笔试题和答案,嵌入式硬件工程师招聘笔试题及答案,最全的硬件工程师笔试试题集,华为笔试真题,典型岗位笔试题,半导体...
江苏鸿信笔试面试题。附答案
2017 年软件实施工程师笔试面试题及答案
各大银行信息科技岗面试笔试题库。建行、工商、农行、平安等银行信息科技岗位的笔试面试题目总结。
c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关...
互联网行业面试笔试真题资料BAT谷歌微软等笔试面试真题复习资料合集200MB: 2015创新工场校招研发笔试题.pdf 2015小米校招技术类笔试题.pdf 360校园招聘2015届技术类笔试题.pdf 4399游戏2015校园招聘游戏开发类笔试题...
2. **产品设计与管理**:产品相关的面试题可能涵盖需求分析、用户研究、产品规划、竞品分析、项目管理等方面。 3. **互联网行业知识**:了解互联网行业的最新动态、发展趋势、商业模式等,可能涉及数据分析、云计算...
web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题...