给定一个整数,可以有三种操作:除2,加1和减1。怎样能在最少的步骤里把这个数减小到1。
先把给定的整数转成二进制,如果未位是0。那么直接把它去掉,这就是十进制里的除2。如果未位是1,就从后面开始判断有几个连续的1,如果1的连续个数超过1,那么就加1,否则减1,这样做的目的是尽可能地多出现些0。
程序代码如下:
public class DivNumber {
public void divNumber(int num) {
int bnum = Integer.parseInt(Integer.toBinaryString(num));
System.out.println("bnum=" + num);
while (bnum != 1) {
if (bnum % 2 == 0) {
bnum /= 10;
num /= 2;
System.out.println("n/2 " + num);
} else {
String str = Integer.valueOf(bnum).toString();
int count = 0;
for (int i = str.length() - 1; i >= 0; i--) {
if (str.charAt(i) != '0') {
count++;
} else {
break;
}
}
if (count > 1) {
bnum = Integer.parseInt(Integer.toBinaryString((Integer
.parseInt(bnum + "", 2)) + 1));
System.out.println("n++ " + ++num);
} else {
bnum--;
System.out.println("n-- " + --num);
}
}
}
}
public static void main(String[] args) {
new DivNumber().divNumber(105);
}
}
数据库题大概是说100台服务器的机群,有20个接口可以对它们进行访问,要计算每分钟的平均访问量,并把数据存到数据库。还说明了,每秒的访问量都是上千万次。
问题有4个:第1个是画出系统的概要设计,第2个是设计表结构并说明用途,第3个是怎么把数据存到数据库,第4个好像是如果视图查询速度变慢,可能是什么原因,用什么方法去定位哪出问题
第二部分是专业部分 java方面
就几个改错题,考了MAP是否内部排序,子类与父类初始化顺序,还有几个简单的就不说了
Map内部排序的题目还记得些,问输出是“123”,还是“321”,还是不确定。答案是不确定,Map内部使用Hash进行排序,具体Map怎么排序还不太明确
public class TestMap {
private Map<String, String> map = new HashMap<String, String>();
public void testMap() {
map.put(System.currentTimeMillis() + "a", "1");
map.put(System.currentTimeMillis() + "b", "2");
map.put(System.currentTimeMillis() + "c", "3");
for (Entry en : map.entrySet()) {
System.out.println(en.getValue());
}
}
public static void main(String[] args) {
new TestMap().testMap();
}
}
先把给定的整数转成二进制,如果未位是0。那么直接把它去掉,这就是十进制里的除2。如果未位是1,就从后面开始判断有几个连续的1,如果1的连续个数超过1,那么就加1,否则减1,这样做的目的是尽可能地多出现些0。
程序代码如下:
public class DivNumber {
public void divNumber(int num) {
int bnum = Integer.parseInt(Integer.toBinaryString(num));
System.out.println("bnum=" + num);
while (bnum != 1) {
if (bnum % 2 == 0) {
bnum /= 10;
num /= 2;
System.out.println("n/2 " + num);
} else {
String str = Integer.valueOf(bnum).toString();
int count = 0;
for (int i = str.length() - 1; i >= 0; i--) {
if (str.charAt(i) != '0') {
count++;
} else {
break;
}
}
if (count > 1) {
bnum = Integer.parseInt(Integer.toBinaryString((Integer
.parseInt(bnum + "", 2)) + 1));
System.out.println("n++ " + ++num);
} else {
bnum--;
System.out.println("n-- " + --num);
}
}
}
}
public static void main(String[] args) {
new DivNumber().divNumber(105);
}
}
数据库题大概是说100台服务器的机群,有20个接口可以对它们进行访问,要计算每分钟的平均访问量,并把数据存到数据库。还说明了,每秒的访问量都是上千万次。
问题有4个:第1个是画出系统的概要设计,第2个是设计表结构并说明用途,第3个是怎么把数据存到数据库,第4个好像是如果视图查询速度变慢,可能是什么原因,用什么方法去定位哪出问题
第二部分是专业部分 java方面
就几个改错题,考了MAP是否内部排序,子类与父类初始化顺序,还有几个简单的就不说了
Map内部排序的题目还记得些,问输出是“123”,还是“321”,还是不确定。答案是不确定,Map内部使用Hash进行排序,具体Map怎么排序还不太明确
public class TestMap {
private Map<String, String> map = new HashMap<String, String>();
public void testMap() {
map.put(System.currentTimeMillis() + "a", "1");
map.put(System.currentTimeMillis() + "b", "2");
map.put(System.currentTimeMillis() + "c", "3");
for (Entry en : map.entrySet()) {
System.out.println(en.getValue());
}
}
public static void main(String[] args) {
new TestMap().testMap();
}
}