JavaWeb面试那些事
先笔试,笔试很多都式基础,面试前可查下看准网啊,百度文库有没该公司相关的笔试题.
再面试,面试的话就是先自我介绍,包括介绍你之前的公司和做过的项目,再细问你那些项目用了什么技术,都有什么模块,你做了什么模块,用什么技术做的,在做这些模块的时候遇过哪些难的或深刻印象的地方,你又是如何解决的。
问完项目会拿个面试题本给你看,指到哪题你就现场回答哪题,题本很杂,可能会有关于JSP的题(JSP的四大大域和九大内置对象,JSP标签的使用,JSP自定义标签),有关于算法的(阶乘,斐波那契数列,排序),有CSS、Jquery(选择器,一些函数的功能)、JS(一些函数的功能,局部变量和全局变量),SQL(怎么获取某字段重复的值),或有关于Oracle那些函数的题(NVL和NVL2什么作用),也有框架的的题(如Spring IOC工初始化流程,SpringMVC和Struts2的区别),还有一些有可能问到的如:设计模式类的面试题。
理论题:
1.Hibernate的6个核心接口是什么?
Configuration接口、SessionFactory接口、Session接口、Transation接口、Query接口、Criteria接口
详细部分:http://blog.csdn.net/howmuchily/article/details/42610003
2.找出下面代码4个错误
//file:foo.java
import java.io.*;
public class Foo{
private int i;
public Foo(int i){
this.i=i;
}
}
//file:bar.java
import java.io.*;
public class Bar extends Foo{
private int j;
public Bar(){}
public Bar(int i,int j){
super(i);
this.j=j;
}
public double getI(){
return i+2.0;
}
public int value(){
return j;
}
public static void main(String arg[])
(1)文件foo.java应该和类名Foo一致
(2)父类没有Foo(){} 无参构造器,子类不能有无参构造器
(3)子类中r的eturn i+2.0; ,i为父类private类型,不能直接调用
(4) System.out.println(f1.value()); 中的Foo f1没有value方法.
3.localhost:8080/demo/test.jsp?bean.id=5
用EL表达式取出这段URL中bean.id的值.
我直接就答了${bean.id},但实际上取不到,查了下,发现用${param['bean.id']}能取到。
编程题:
1. 给定一个字符串,字符串长度为N,字符串的字符向前移动K位
如: 输入“abcdefgh” n=8 k=4
输出 "efghabcd"
要求:时间复杂度O(n) 空间复杂度o(1) 不能用JDK方法
思路:
由字符串N-K位置分割成两边,把两边的字符串各自倒转,后把两边字符串加一起倒转.
abcd | efgh → dcba | hgfe → efgh abcd
// 字符串倒转
public void reverse(int s, int e, char[] c) {
// check NULL
if (c == null || c.length <= 1) {
return;
}
char temp;
for (; s < e; s++, e--) {
temp = c[s];
c[s] = c[e];
c[e] = temp;
}
}
/**
* 輸入 abcdefgh n=8 k=4 輸出 efghabcd
*
* @Space o(1)
* @Time o(n)
* @author hhm
* @date 2017年3月6日 下午12:23:45
*/
public char[] reverseString(int n, String s, int k) {
// check NULL
if (s == null || s.equals("")) {
return null;
}
//若K大于N
if (k > n) {
k = k % n;
}
char[] c = s.toCharArray();
swap(0, n - k - 1, c);
swap(n - k, n - 1, c);
swap(0, n - 1, c);
return c;
}
@Test
public void test() {
System.out.println(reverseString(8, "abcdefgh", 4));
}
2.判断两个数字哪个更大?(不能用if-else和><等判断符,也不能用JDK的方法)
public int max(int a,int b){
int[] i = new int[]{a,b};
int z = a-b;
z = z>>31;//相减得的符号位移至末尾,作为数组下标
return i[-z];
}
3.给你一个浮点数,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整.
public double round(double n){
String s = Double.toString(n);
String num = s.substring(s.indexOf(".")+1,s.indexOf(".")+2);
int i = Integer.parseInt(num);
if(i>=5){
return Math.ceil(n);
}else{
return Math.floor(n);
}
}
上一篇: PHP 匹配下载网络资源
下一篇: Full gc那些事