欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb面试那些事

程序员文章站 2022-01-20 23:15:31
...
面试过一个公司,它那的面试流程比较通用,那里基本流程是:

先笔试,笔试很多都式基础,面试前可查下看准网啊,百度文库有没该公司相关的笔试题.

再面试,面试的话就是先自我介绍,包括介绍你之前的公司和做过的项目,再细问你那些项目用了什么技术,都有什么模块,你做了什么模块,用什么技术做的,在做这些模块的时候遇过哪些难的或深刻印象的地方,你又是如何解决的。

问完项目会拿个面试题本给你看,指到哪题你就现场回答哪题,题本很杂,可能会有关于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[])
 Foo f=new Foo(3);
 Foo f1=new Bar(5,6);
 System.out.println(f1.value());
} 

 

(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);
		}
	}