zoukankan      html  css  js  c++  java
  • 面试题:3年工作经验 已看1

    一轮面试下来,由最初的自信什么都能做,到现在感觉什么都不会做;但是面对面试官,却更坦然。

    对自己还能记得起来的面试题,稍微整理一下。欢迎指正。

    private、默认、protected、public作用范围


    1)private,同类
    2)默认,同类、同包
    3)protected,同类,同包,子类
    4)public,项目所有

    String trim的实现原理
    去掉首尾ASCII码值小于' '(空格)的字符

    StringBuffer、StringBuilder区别
    StringBuffer线程安全
    StringBuilder线程不安全

    抽象类与接口的异同
    同:具有抽象方法
    异:1)抽象类可以有构造器,非抽象方法,非公有属性,仅可以单继承抽象类
          2)接口仅有公有抽象方法或者公有静态常量,可以同时实现多个接口
    个人使用经验:一般在控制层使用抽象类,提取公共初始化方法、框架定制化工具方法等
    一般会在业务层使用接口

    List、Set、Collections区别
    1)List,有序可重复
    2)Set, 无序不可重复
    3)Collections,集合工具类

    列举键值容器
    1)HashMap,实现Map,异步
    2)Hashtable,实现Map,同时继承旧的Dictionary类,同步
    3)Properties,Hashtable的子类,系统参数 线程安全

    算法:快速排序

    复制代码
        public static void quickSort(int a[], int start, int end) {   
            int i, j;   
            i = start;   
            j = end;   
            if ((a == null) || (a.length == 0))   
                return;   
         
            while (i < j) {//查找基准点下标   
                while (i < j && a[i] <= a[j])   
                    // 以数组start下标的数据为key,右侧扫描   
                    j--;   
                if (i < j) { // 右侧扫描,找出第一个比key小的,交换位置   
                    int temp = a[i];   
                    a[i] = a[j];   
                    a[j] = temp;   
                }   
                while (i < j && a[i] < a[j])   
                    // 左侧扫描(此时a[j]中存储着key值)   
                    i++;   
                if (i < j) { // 找出第一个比key大的,交换位置   
                    int temp = a[i];   
                    a[i] = a[j];   
                    a[j] = temp;   
                }   
            }   
            if (i - start > 1) { // 递归调用,把key前面的完成排序   
                 quickSort(a, start, i - 1);   
            }   
            if (end - j > 1) {   
                quickSort(a, j + 1, end); // 递归调用,把key后面的完成排序   
            }   
        }  
    复制代码

    inner join、left join、 right join区别
    1)inner join,两表字段值相同
    2)left join,两表字段值相同,以及左表字段有值,右表字段值为null
    3)right join,与上相反

    需要写sql的试题
    一般会让查出值是最大的,用到子查询、组函数等
    Reads(id, ip, cnt) ip不唯一,查出访问量最大的前10个ip并排序
    select r.ip, r.s, rownum from (select ip, sum(cnt) s from reads group by ip order by s desc) r where r.rownum <= 10

    自己联系写    select r.ip,r.s,rownum from  (select ip,sum(cnt) s from reads group by ip order by s desc) r where r.rownum<=10

    数据库性能调优
    1)经常做查询条件的字段建立序列
    2)关联查询时,关联结果集,替代直接关联整张表;或者使用exists

    jsp表单js校验
    var name = document.getElementById('userName').value;
    if (name == '')
    {
    alert('用户名不能为空');
    return false;
    }

    Struts的Action是单例吗
    1)Struts1的Action是单例且线程安全
    2)Struts2的Action不是单例,针对每一请求产生一个实例

    Hibernate与Mybatis区别
    1)Hibernate,使用pojo实现orm,查询速度相比较慢,插入/更新开发容易
    2)Mybaits,使用纯sql开发,执行效率较快,比较适合统计、多表关联查询

    Hibernate状态
    瞬时态:new对象
    持久态:实例与数据库中记录对应,拥有持久化标识
    游离态:session关闭;session打开,游离态转成持久态

    ibatis中#与$的区别
    1)#,变量替换,即prepareStament设置字段值,并可以匹配变量类型
    2)$,字符串拼接,需要小心依赖注入

    事务特性
    1)原子性:诸多操作要么全做,要么全不做
    2)一致性:事务执行结果使数据库从一个一致性状态变到另一个一致性状态
    3)隔离性:事务执行不被其他事务影响
    4)持久性:一旦提交,对数据库的改变是永久性的

    spring mvc与struts2的区别
    1)struts2封装展示层与控制层,展示层提供标签库及验证器,请求与应答需要配置文件
    2)spring mvc是单纯的控制层框架,url实现零配置,运行效率提高

    Spring IOC注入方式
    1)配置文件中,配置属性,提供setter/getter方法
    2)零配置,@Autowired,统一配置根据名称或者类型注入

    Spring AOP思想
    针对请求做统一预处理,如有效性校验;或后处理,如记录处理结果;针对方法加before或after处理

    Spring事务配置
    1)使用tx:advice,针对业务接口层,如以do、get等命名的方法,作事务配置

    WebService技术
    1)axis、xfire、cxf,基于soap,传输xml
    2)restful风格

    jvm性能调优
    tomcat性能调优

  • 相关阅读:
    农夫带着狼、羊和一棵白菜过河
    C#实现L型棋牌覆盖
    数据库存储管理
    4个人打算过桥,它们都在桥的某一端,.我们有17分钟让他们全部到达大桥的另一头?
    C# 创建Public无参构造函数的快捷键
    控制文件管理
    配置数据库
    C#实现线性查找(递归,非递归)
    C#实现选择排序
    C#4.0参数默认值
  • 原文地址:https://www.cnblogs.com/shan1393/p/9017497.html
Copyright © 2011-2022 走看看