程序开发面试题
面试题
1. 进制之间的转换
// 十进制转化为十六进制,结果为c8。
integer.tohexstring(200);
// 十六进制转化为十进制,结果140。
integer.parseint("8c",16);
//十进制转二进制
integer.tobinarystring(int i);
2.质数的定义
只有1和它本身两个因数的自然数
3.关键字null
null是一种特殊的值,可以将其赋给任何引用类型,也可以转化成任何类型。但不可以赋给变量类型,不可以赋给基本类型,如int,boolean等。
4.关于string
//string转成string[]
string[] a = s.split("");
//将char转成string,string.valueof()可以也可以将int转成string类型
string s = string.valueof('c');
//数组不能直接通过tostring的方式转成字符串string,必须通过 stringbuffer
string[] str = {"abc", "bcd", "def"};
stringbuffer sb = new stringbuffer();
for(int i = 0; i < str.length; i++){
sb. append(str[i]);
}
string s = sb.tostring();
//数组转list
string[] arr = new string[] {"str1", "str2"};
list list = arrays.aslist(arr);
//如果是直接想新建一个list对象,则如下
list list = new arraylist();
//list转数组
list list = new arraylist();
list.add("str1");
list.add("str2");
int size = list.size();
string[] arr = (string[])list.toarray(new string[size]);
//treeset和treemap可以自动排序,直接往里扔数即可,内部自动排序,很强大!!
treeset hs = new treeset();
string s1 = "abf";
string s2 = "acd";
string s3 = "abc";
hs.add(s1);
hs.add(s2);
hs.add(s3);
system.out.println(hs);
//collections中提供了逆序的功能
collections.reverse(list);
5.的范式问题
这里把常用的第一、二、三范式做一下说明:
1nf:第一范式,强调的是原子性,即列不能再分解为其他的列,比如表【联系人】:姓名、性别、电话,这张表是不满足1nf的,因为电话这一列一般还会分成公司电话、家庭电话,所以不满足1nf的原子性
2nf:第二范式,先必须满足1nf,强调的是其他属性对主键的完全依赖,主要是针对联合主键,如果是单一主键,满足1nf,那么这张表也必定满足2nf。如【选课关系】:学号, 姓名, 年龄, 课程名称, 成绩, 学分,关键字为组合【关键字学号, 课程名称】,这里可以【学分】只依赖于【课程名称】的,【姓名、年龄】则只依赖于【学号】。只有【成绩】是依赖于【学号和课程名称】的(这才是完全依赖),前两者的依赖不是完全依赖,所以这里的【选课关系】不满足2nf
3nf:必须满足2nf,并且不依赖其他非主属性,他们之间不存在依赖传递关系,通俗点讲,要求一个表中不包含已在其他表中包含的非主键关键字的信息。如一张表:学号、姓名、年龄、所在学院、学院地点、学院电话,关键字为【学号】,由于是单一的主键,首先他肯定是满足2nf的,然后看由于这里的【学院地点和学院电话】显然是依赖于【学院】这个属性的,但是学院地点和学院电话显然被包含在了这张表中了,所以不满足3nf。