日期:2014-05-19  浏览次数:20688 次

两个面试题。求高人解答
1. 设计数据库时,n维,如何设计。

例如[省份][城市][网吧],这是三维关系,它的表也应该有三个,网吧有外键引用城市,城市有外键应用省份,这个规律就是下层的要有一外键去引用上层。

 

2. 输入某个unsigned int,判断其二进制形式中有多少个1

例如:5有2个1,因为5的二进制形式是101;7有3个1,因为7的二进制是111

没有思路。求高人贴答案。谢谢。

------解决方案--------------------
Java code

public static void main(String[] args) {
        int num = 7;
        //new Demo9().getWeek();
        String str=Integer.toBinaryString(num);
        System.out.println("数num的二进制为:"+str);
        int sum = 0;
        for (int i = 0; i < str.length(); i++) {
            System.out.println((int)(str.charAt(i)));
            if(49 ==(int)(str.charAt(i)))
                 sum++;    
        }
        System.out.println("数num的包含1的个数为:"+sum);
    }

------解决方案--------------------
回答第一题吧:
如果一张表;写出表结构
id 父节点 name
1 0 湖南
2 1 长沙
3 1 邵阳
4 2 芙蓉区
5 3 邵阳县
……下面以此类推;根节点默认为0;子节点的父节点为节点id.
多张表也就是外键关联而已
------解决方案--------------------
2、
Java code

public static int bitscount(int x){
     int count = 0;
     for(; x != 0; x >>= 1){
         if((x & 0x1) != 0)
            count++;
     }
     return count;
}