美文网首页我爱编程
java基础面试题(一)

java基础面试题(一)

作者: 你微笑时狠美 | 来源:发表于2018-04-12 10:10 被阅读0次

    1、servlet执行流程


    客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。

    2、springMVC的执行流程


    springMVC是由dispatchservlet为核心的分层控制框架。首先客户端发出一个请求web服务器解析请求url并去匹配dispatchservlet的映射url,如果匹配上就将这个请求放入到dispatchservlet,dispatchservlet根据mapping映射配置去寻找相对应的handel,然后把处理权交给找到的handel,handel封装了处理业务逻辑的代码,当handel处理完后会返回一个逻辑视图modelandview给dispatchservlet,此时的modelandview是一个逻辑视图不是一个正式视图,所以dispatchservlet会通过viewresource视图资源去解析modelandview,然后将解析后的参数放到view中返回到客户端并展现。

    3、给定一个txt文件,如何得到某字符串出现的次数


    File file= newFile("E://test.txt");

    InputStream is= newFileInputStream(file);

    byteb[] = newbyte[1024];

    inta= is.read(b);

    String str[] = newString(b,0,a).split("");

    intcount= 0;

    for(inti= 0;i

    if("a".equals(str[i]))count++;

    }

    System.out.println(count);

    4、Java设计模式思想(单列模式,工厂模式,策略模式,共23种设计模式)


    a)单例模式:单例模式核心只需要new一个实例对象的模式,比如数据库连接,在线人数等,一些网站上看到的在线人数统计就是通过单例模式实现的,把一个计时器存放在数据库或者内存中,当有人登陆的时候取出来加一再放回去,有人退出登陆的时候取出来减一再放回去,但是当有两个人同时登陆的时候,会同时取出计数器,同时加一,同时放回去,这样的话数据就会错误,所以需要一个全局变量的对象给全部人使用,只需要new出一个实例对象,这就是单例模式的应用,并且单例模式节省资源,因为它控制了实例对象的个数,并有利于gc回收。

    b)策略模式:就是将几个类中公共的方法提取到一个新的类中,从而使扩展更容易,保证代码的可移植性,可维护性强。比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三种方法,如果每个鸭子类都写这三个方法会出现代码的冗余,这时候我们可以把鸭子中的叫,飞,外形这三个方法提取出来,放到鸭父类中,让每个鸭子都继承这个鸭父类,重写这三个方法,这样封装的代码可移植性强,当用户提出新的需求比如鸭子会游泳,那么对于我们oo程序员来讲就非常简单了我们只需要在鸭父类中加一个游泳的方法,让会游泳的鸭子重写游泳方法就可以了。

    c)工厂模式:简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获取实例对象的引用。比如一个登陆功能,后端有三个类,controller类,interface类,实现接口的实现类。当客户端发出一个请求,当请求传到controller类中时,controller获取接口的引用对象,而实现接口的实现类中封装好了登陆的业务逻辑代码。当你需要加一个注册需求的时候只需要在接口类中加一个注册方法,实现类中实现方法,controller获取接口的引用对象即可,不需要改动原来的代码,这种做法是的可拓展性强。

    5、冒泡排序、二分查找

    a)冒泡

    publicstaticvoidmp(inta[]) {

    intswap= 0;

    for(inti= 0; i< a.length; i++) {

    for(intj= i; j< a.length; j++) {

    if(a[j] > a[i]) {

    swap= a[i];

    a[i] = a[j];

    a[j] = swap;

    }

    }

    }

    System.out.println(Arrays.toString(a));

    }

    相关文章

      网友评论

        本文标题:java基础面试题(一)

        本文链接:https://www.haomeiwen.com/subject/yqfxkftx.html