面试题

1、写出结果
public class test {
public static void main(String[] args) {
int a = 3;
int b = 4;
compute(a, b);
System.out.println(a);
System.out.println(b);
}

static void compute(int a, int b) {
int temp = a;
a = b;
b = temp;
}
}
结果:
3
4
因为compute方法是void

2、 Fibonacci数列的程序实现
这里采用的是递归实现方式
public class TestFib {

public static void main(String[] args) {
System.out.println(Fib(6));
}

public static int Fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else if(n == 0) {
return 0;
} else {
return Fib(n-1) + Fib(n-2);
}
}
}

3、有数据库表tb_test如下:
+------+-------+
| id | value |
+------+-------+
| 1 | a |
| 1 | a |
| 2 | b |
| 3 | b |
| 3 | c |
| 4 | c |
| 4 | c |
| . | ... |
+------+-------+
写出sql语句求出value值以及相同value值的个数
select value, count(value) count from tb_test group by value;
结果如下图:
+-------+-------+
| value | count |
+-------+-------+
| a | 2 |
| b | 2 |
| c | 3 |
| . | ...|
+-------+-------+

4、写出一个函数实现将一英文语句中的每个单词的个数输出
(笔者说明:比如英语语句是"hello java hello world",那个应输出hello个数2,java个数1,world个数1)
此题网上有更全面的解决方案,是可以读取文件,并把文件中单词总数和每个单词出现的次数输出到文件。
这个题主要是用到了正则表达式将英文语句中的单词过滤出来,再利用一个Map来存储key=单词,value=单词个数,其中主要用到了Map.containsKey()方法,下面是程序的实现,来自网络,程序不区分单词的大小写,泛化是我自己加上的(也不知道对不对,反正程序倒是能运行),如果只要实现题目所要求,只要简化一下本程序就可以了
package com.interview.likangshidai;

import java.util.*;
import java.util.regex.*;
import java.io.*;

/**
* 读取当前目录下一段英文文档统计每个单词出现的次数和单词的总数
* 英文文档名字为 english.txt
*
*/
public class CountWord {

public static void main(String args[]) throws IOException {

BufferedReader buf = new BufferedReader(new FileReader("/home/lym/Desktop/english.txt"));
System.out.println("Read under this dir English.txt");
StringBuffer sbuf = new StringBuffer();// 缓冲字符串
String line = null;

while ((line = buf.readLine()) != null) {
sbuf.append(line);// 追加到缓冲字符串中
}
buf.close();// 读取结束

Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
String string1 = sbuf.toString().toLowerCase();// 转换成小写
Matcher matcher = expression.matcher(string1);// 定义string1的匹配器
Map<Object, Object> myHashMap = new HashMap<Object, Object>();// 创建树映射 存放键/值对
int n = 0;// 文章中单词总数
Object word = null;// 文章中的单词
Object num = null;// 出现的次数

while (matcher.find()) {// 是否匹配单词
word = matcher.group();// 得到一个单词-树映射的键
n++;// 单词数加1
if (myHashMap.containsKey(word)) {// 如果包含该键,单词出现过
num = myHashMap.get(word);// 得到单词出现的次数
Integer count = (Integer) num;// 强制转化
myHashMap.put(word, new Integer(count.intValue() + 1));
} else {
myHashMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
}
}

System.out.println("统计分析如下:");
System.out.println("文章中单词总数" + n + "个");
System.out.println("具体的信息在当前目录的result.txt文件中");
BufferedWriter bufw = new BufferedWriter(new FileWriter("/home/lym/Desktop/result.txt"));
Iterator<Object> iter = myHashMap.keySet().iterator();// 得到树映射键集合的迭代器
Object key = null;

while (iter.hasNext()) {// 使用迭代器遍历树映射的键
key = iter.next();
bufw.write((String) key + ":" + myHashMap.get(key));// 键/值写到文件中
bufw.newLine();
}

bufw.write("english.txt中的单词总数" + n + "个");
bufw.newLine();
bufw.write("english.txt中不同单词" + myHashMap.size() + "个");
bufw.close();
}
}

6、自己用程序实现一个栈
自己写的,提供思路,大家可以再完善
package com.interview.likangshidai;

public class StackByHand {

/**
* 利康时代笔试题
*
*/
public static int index = 0;

public static int[] stack = new int[5];

public static void main(String[] args) {
push(1);
push(2);
push(3);
push(4);
push(5);
// push(6);这条数据插不进去,已经超出栈空间大小,程序执行到这会退出
System.out.println(pop());//5
System.out.println(pop());//4
System.out.println(pop());//3
System.out.println(pop());//2
System.out.println(pop());//1
// System.out.println(pop());栈已为空,程序执行到这会退出

}

public static void push(int n) {
if (index > 4) {//栈已満
System.out.println("stack full");
System.exit(1);
}
stack[index] = n;
System.out.println("one element pushed");
index++;
}

public static int pop() {
index--;
if (index < 0) {//栈已空
System.out.print("no element in stack");
System.exit(1);
}
int n = stack[index];
return n;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值