mysql 处理时间
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
数据库的三范式
那些数据库的书介绍的数据库范式,实在是晦涩难懂,我在这里给出一个通俗的描述: 1NF:一个table中的列是不可再分的(即列的原子性) 2NF:一个table中的行是可以唯一标示的,(即table中的行是不可以有重复的) 3NF:一个table中列不依赖以另一个table中的非主键的列,还是不通俗!巨寒!! 举个例子吧:有一个部门的table,我们叫它tbl_department, 它有这么几列(dept_id(pk),dept_name,dept_memo...) 有一个员工table,我们叫它tbl_employee,在这个table中有一列dept_id(fk)描述关于部门的信息,若tbl_employee要满足3NF,则在tbl_employee中就不得再有除dept_id列的其它有关部门信息的列! 一般数据库的设计满足3NF即可!(个人觉得应该尽可能的满足3NF,一家之言^_^) BCNF:通常认为BCNF是修正的第三范式,它比3NF又进一步! 4NF: 5NF:将一个table尽可能的分割成小的块,以排除在table中所有冗余的数据
今天星期几?
import java.util.Calendar; import java.util.Date; public class CalendarTest { public static void main(String[] args) { final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五","星期六" }; Calendar calendar = Calendar.getInstance(); Date date = new Date(); calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1; if(dayOfWeek<0)dayOfWeek=0; System.out.println(dayNames[dayOfWeek]); } }
runtime exception 和exception的区别
首先,您应该知道的是Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime Exception),另外一种则是受控制的Exception (Checked Exception)。 一般而言,Checked Exception 表示这个Exception 必须要被处理,也就是说程序设计者应该已经知道可能会收到某个Exception(因为要try catch住) ,所以程序设计者应该能针对这些不同的Checked Exception 做出不同的处理。 而Runtime Exception 通常会暗示着程序上的错误,这种错误会导致程序设计者无法处理,而造成程序无法继续执行下去。
4.19面试
ACID
一个要有事务属性的数据库需要具有ACID的特性 ACID,指数据库的不可部分完成性(又称「原子性」,Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持交易(Transaction)的数据库系统,必需要具有这四种特性,否则在交易过程(Transaction processing)当中,无法保证数据的正确性。 原子性就是比如我给我妈转账钱,我这里扣100,她那里加100,要是中间突然停电了两个人的账户上的钱都要回滚成转账以前的。 一致性就是我转给我妈100块,我帐户里要扣100,我妈帐户要加100,不能我这里扣50,我妈那里加100。 隔离性就是为了保证事务并发时候数据不出错。 持久性就是转账完成以后我这里就永久的扣了100而我妈那里就永久的加了100元不会再变了。 为了保证事务的隔离性数据库会采用锁机制 锁(Lock) 是在多用户环境下对资源访问的一种限制。机制当对一个数据源加锁后,此数据源就有了一定的访问限制。我们就称对此数据源进行了“锁定”。 在SQL Server中,可以对以下的对象进行锁定: 数据行(Row):数据页中的单行数据; 索引行(Key):索引页中的单行数据,即索引的键值; 页(Page):页是SQL Server 存取数据的基本单位,其大小为8KB; 盘区(Extent):一个盘区由8 个连续的页组成; 表(Table); 数据库(Database)。 从数据库系统的角度来看锁分为以下三种类型: 独占锁(Exclusive Lock) 独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即INSERT、 UPDATE 或DELETE 命令时,SQL Server 会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放。 共享锁(Shared Lock) 共享锁锁定的资源可以被其它用户读取,但其它用户不能修改它。在SELECT 命令执行时,SQL Server 通常会对对象进行共享锁锁定。通常加共享锁的数据页被读取完毕后,共享锁就会立即被释放。 更新锁(Update Lock) 更新锁是为了防止死锁而设立的。当SQL Server 准备更新数据时,它首先对数据对象作更新锁锁定,这样数据将不能被修改,但可以读取。等到SQL Server 确定要进行更新数据操作时,它会自动将更新锁换为独占锁。但当对象上有其它锁存在时,无法对其作更新锁锁定。 从程序员的角度看锁分为以下两种类型: 乐观锁(Optimistic Lock) 乐观锁假定在处理数据时,不需要在应用程序的代码中做任何事情就可以直接在记录上加锁、即完全依靠数据库来管理锁的工作。一般情况下,当执行事务处理时SQL Server会自动对事务处理范围内更新到的表做锁定。 参考资料:spring里面事务的传播属性和事务隔离级别(复习)里面的事务的隔离级别 悲观锁(Pessimistic Lock) 悲观锁对数据库系统的自动管理不感冒,需要程序员直接管理数据或对象上的加锁处理,并负责获取、共享和放弃正在使用的数据上的任何锁。
一个字符串子集 如ABC 它的子集有多少个 字母要连续
AB 一个:A\B 两个:AB ABC 一个:A\B\C 两个:AB\BC 三个:ABC ABCD 一个:A\B\C\D 两个:AB\BC\CD 三个:ABC\BCD 四个:ABCD N个字母 n(n-1)*1/2
一个字符串子集 如ABC 它的子集有多少个 字母可以不连续
2的N次方-1
4.11面试
不准用Integer.valueOf 不准用相类似java api
写一个函数实现字符串转换成整型
package com; /*面试题1: 不准用Integer.valueOf 写一个函数实现字符串转换成整型*/ public class Test1 { public static int toInt(String numstr){ int result = 0; int sign = 1; for(int i = 0; i < numstr.length(); i++) { //charAt 返回字符串该位置上字符的acsii码值 int ch = numstr.charAt(i); if(i==0 && ch == '-'){ sign = -1; }else if(i==0 && ch == '+'){ sign = 1; }else{ //'0'的acsii码是48 result = result*10 + (ch-'0'); } } return sign * result; } public static void main(String[] args) { String numstr = "123"; System.out.println(toInt(numstr)); } }
StringBuffer 和 StringBuilder的区别
StringBuffer线程安全 StringBuilder非线程安全 效率 StringBuilder > StringBuffer > String
题目转自 http://263796001-qq-com.iteye.com/blog/1453041
都是2012金山在武昌招聘时的笔试题。
第一个是正式招聘的题目:
1:String、StringBuild、StringBuffer的区别
String是不可变类 final的 StringBuffer是个可变的类 性能比String好
2:想让基类不被子类继承,用什么方法
final
3:Java为什么可以在不同平台上运行?(Java的跨平台性)
jvm
4:给定一个数组,求第二大数
先冒泡排序 再输出第二个数 性能好像搓了点 package cn.algorithm;
public class NumberTwo {
public static void main(String[] args) {
int[] a = {9,1,3,4,5,6,2,4,7,8};
int[] b = a.clone();
NumberTwo.bubblesort(b);
System.out.println(b[1]);
System.out.println(a[1]);
}
public static void bubblesort(int[] number){
int temp = 0 ;
for(int i = 0; i < number.length - 1; i++){
for(int j = i + 1; j < number.length; j++) {
if(number[i] < number[j]){
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
}
}
5:用递归和非递归实现Fib(K,n)函数,Fib(K,n)定义略,记不太清楚了
package cn.algorithm; public class Fibonacci { public static void main(String[] args) { Fibonacci.fibonacci2(3); } //递归 public static int fibonacci(int n){ if(n < 2){ return 1; } return fibonacci(n - 1) + fibonacci(n - 2); } //非递归 public static void fibonacci2(int n){ int[] i = new int[100]; i[0] = 1; i[1] = 1; for(int j = 2; j < n; j ++){ i[j] = i[j-1] + i[j-2]; } for(int k = 0; k < n; k++) System.out.println(i[k]); } }
6:设计(实现?)一个日志类框架。原题比较长,大致这个意思
不会唉。以后回来看
第二个是后来单独出的对实习生的笔试,本来是没有的,后来单独出的貌似
1:求2个大整数之和
java.math.BigInteger BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("1234567890"); System.out.println(a.add(b));
2.1:二叉树排序
2.2:将排好序的二叉树转为双向链表输出
3:给定一个字符串,输出第一个只出现一次的字符
public class s17 { public static char firstOne(String s) { char result = '0'; char temp; int[] num = new int[52]; for (int i = 0; i < s.length(); i ++) { temp = s.charAt(i); if ( temp >= 'a' && temp <= 'z' ) { num[temp - 'a']++; } else if (temp >= 'A' && temp <= 'Z') { num[temp - 'A' + 26] ++; } } for (int i = 0; i < num.length; i ++) { if (num[i] == 1) { if (i >= 0 && i <=26) { result = (char)(i + 'a'); } else result = (char)(i - 26 + 'A'); break; } } return result; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // String s = "xabb"; String s = "abaccdeff"; // char c = firstOne(s); System.out.println(c); } }
4:给定一个文本文件,其中有10亿个IP,输出出现频率最高的1000IP
5:记不太清楚了,貌似是有1000多个计算任务,对于一个4CPU的机器,明显实现4线程最好,请你设计一个程序框架,使得计算时间最短(计算任务本身时间不变)