zoukankan      html  css  js  c++  java
  • Java面试题

    0.写一个函数,找出字符串中关键字'_'出现所有的位置(如"acd124_145po_c"中'_'出现的位置是6和12)

     1 package cn.union;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Union4 {
     7 
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10 
    11         String str = "acd124_145po_c";
    12 
    13         System.out.println(find_(str));
    14     }
    15 
    16     private static List<Integer> find_(String str) {
    17         // TODO Auto-generated method stub
    18 
    19         List<Integer> result = new ArrayList<Integer>();// list存放结果
    20         char[] charArr = str.toCharArray();// 将字符串转为字符数组
    21 
    22         for (int i = 0; i < charArr.length; i++) {
    23             if ('_' == charArr[i]) {
    24                 result.add(i);// 如果有_,则添加到list
    25             }
    26         }
    27 
    28         return result;
    29     }
    30 }

    1.写一个函数,找出整形数组a中,值第二大的元素(只用一层循环)

     1 package cn.union;
     2 
     3 public class Union5 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 
     8         int[] a = { 10, 1, 9, 2, 8, 3, 7, 4, 6, 5 };
     9 
    10         System.out.println(findSecondMax(a));
    11     }
    12 
    13     private static int findSecondMax(int[] a) {
    14         // TODO Auto-generated method stub
    15 
    16         if (null == a || a.length <= 1) {
    17             return -1;
    18         }
    19 
    20         int max = a[0] > a[1] ? a[0] : a[1];
    21         int secondMax = a[0] + a[1] - max;
    22 
    23         for (int i = 2; i < a.length; i++) {
    24             if (a[i] > max) {
    25                 secondMax = max;
    26                 max = a[i];
    27             } else if (a[i] > secondMax) {
    28                 secondMax = a[i];
    29             }
    30         }
    31 
    32         return secondMax;
    33     }
    34 }

    2.运行以上程序,输出结果是:

    -128

    因为byte最大值是127,最小值是-128

     1 package cn.union;
     2 
     3 public class Test {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 
     8         byte i = Byte.MAX_VALUE;
     9         byte j = ++i;
    10         System.out.println(j);
    11     }
    12 }

    3.写一个方法,将一个字符串翻转(如将字符串"abcdef"转成"fedcba")

     1 package cn.union;
     2 
     3 public class Union7 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 
     8         String str = "abcdef";
     9 
    10         System.out.println(myReverse(str));
    11     }
    12 
    13     private static String myReverse(String str) {
    14         // TODO Auto-generated method stub
    15 
    16         char[] charStr = str.toCharArray();
    17         char[] result = new char[charStr.length];
    18         int flag = 0;
    19 
    20         for (int i = charStr.length - 1; i >= 0; i--) {
    21             result[flag] = charStr[i];
    22             flag++;
    23         }
    24 
    25         return String.valueOf(result);
    26     }
    27 }

    4.你对Spring的IoC和AOP了解吗?请介绍一下。

    IoC是控制反转,把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。

    AOP是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

    5.Hibernate到底该用注解,还是xml文件配置方式呢?他们各自有各自的优缺点:

    XML配置方式:

    优:容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过xml配置会方便后人理解整个系统的架构,修改之后直接重启应用即可

    缺:比较繁琐,配置形态丑陋, 配置文件过多的时候难以管理

    注解方式:

    优:方便,简洁,配置信息和 Java 代码放在一起,有助于增强程序的内聚性。

    缺:分散到各个class文件中,所以不宜维护, 修改之后你需要重新打包,发布,重启应用。

    个人体会: 小项目,参与人数不多,不复杂的用注解,开发快速。 复杂项目,多人交互,配置量大,维护复杂度高的,用配置文件。

    6.你对Spring MVC了解吗?请介绍一下。

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。

    7.Struts 2默认是单例模式还是多例模式呢?

    Struts 2的Action默认是多实例的并非单例,也就是每次请求产生一个Action的对象,即每次访问的参数都被封装在Action的成员变量中。

    Struts 2中Action多实例的优势在于是线程安全的,每次请求都会创建单独的Action类来处理,而不用想servlet一样担心线程安全问题。

  • 相关阅读:
    【记录】JS正则表达式(学习笔记2)现学现卖还帮美女解决了个问题。
    【分享】封装获取dom元素那些讨厌的位置
    【记录】简单去除数组重复项
    【记录】JS 预加载图片
    【分享】详解js函数调用的4中方法!
    【记录】JavaScript版 快速排序,还请高手指教。
    【分享】封装window.showModalDialog让他更好用(弹出窗口)
    【记录】正则表达式学习第3天(正则学习笔记),又解决了个实际问题。
    【分享】LazyLoad延迟加载(按需加载)
    PPT幻灯片放映不显示备注,只让备注显示在自己屏幕上
  • 原文地址:https://www.cnblogs.com/denggelin/p/9038448.html
Copyright © 2011-2022 走看看