• 小白面试


    1.说出ArrayList,Vector,LinkedList的存储性能和特性?

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,

    它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,

    Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,

    按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

    2.HashMap和Hashtable的区别?

    HashTable 是Dictionary的子类

    HashMap 是Map接口的子类

    HashTable的键值都不允许为空,

    HashMap的键值只允许其中一个为空。

    HashTable 是多线程安全的

    HashMap 是非线程安全的

    3.error和exception有什么区别?

    error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。

    不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。

    也就是说,它表示如果程序运行正常,从不会发生的情况。

    4.abstract class和interface有什么区别?

    Abstract class

    一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承.

    可有自己的数据成员,可以私有的方法,非abstract方法必须实现.

    可有私有的变量,默认是friendly 型,

    其值可以在子类中重新定义,也可以重新赋值.

    实现需要继承,要用extends.

    interface

    一个类可以实现多个interface,

    静态的数据成员不能被修改即必须是static final,

    不可有私有的方法,默认是public,abstract 类型,

    不可有私有的变量,默认是public static final 型,

    且必须给其初值,实现类中不能重新定义,不能改变其值。

    实现要用implements

    5.JSP中动态INCLUDE于静态INCLUDE的区别?

    动态INCLUDE用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

    静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

    6.String s=new String(”xyz“);创建了几个String Object?

    2个

    “xyz”一个

    new String() 一个

    7.List,Set,Map是否继承自Collection接口?

    List,Set是,Map不是。

    8.abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

    用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,两者矛盾。

    native 可以与所有其它的java 标识符连用,但是abstract除外.

    synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法

    abstract与synchronized不能同时使用

    9.是否可以继承String类?

    String类是final类故不可以继承

    10.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code?

    finally会在return之前执行

    11.swtich是否能作用在byte上,是否作用在long上,是否能作用在String上?

    long 和String 不能作用在switch上,byte可以。

    12.为什么重写equals()时也要重写hashCode()?

    hashCode是编译器为不同对象产生的不同整数,

    根据equal方法的定义:如果两个对象是相等(equal)的,

    那么两个对象调用hashCode必须产生相同的整数结果,

    即:equal为true,hashCode必须为true,equal为false,

    hashCode也必须为false,

    所以必须重写hashCode来保证与equal同步。.

    13.说出数据连接池的工作机制是什么?

    J2EE服务器启动时会建立一定数量的池连接,

    并一直维持不少于此数目的池连接。客户端程序需要连接时,

    池驱动程序会返回一个未使用的池连接并将其表记为忙。

    如果当前没有空闲连接,池驱动程序就新建一定数量的连接,

    新建连接的数量有配置参数决定。当使用的池连接调用完成后,

    池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

    14.垃圾回收的优点和原理 并考虑2种回收机制

    垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。

    垃圾回收器通常是作为一个单独的低级别的线程运行,

    不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,

    程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

    回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

    15.描述一下jvm加载class文件的原理机制

    在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析

        装载:查找和导入类或接口的二进制数据;

        链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;

        校验:检查导入类或接口的二进制数据的正确性;

             准备:给类的静态变量分配并初始化存储空间;

             解析:将符号引用转成直接引用;

    初始化:激活类的静态变量,初始化Java代码和静态Java代码块

    二、编程题目:

    1.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

    text = new String( text.getBytes(“iso8859-1”),”gbk”);

    2.有一个整数n,写一个函数f(n),返回0到n之间出现的”1“的个数。比如f(13)=6,现在f(1)=1,问有哪些n能满足f(n)=n?

    例如:f(13)=6,因为1,2,3,4,5,6,7,8,9,10,11,12,13.数数1的个数,正好6.

    public class Match

    {

        static int imatch = 0;

        static public void F(int x)

        {

            String y = "";

            String f = "";

            imatch = 0;

            for (int i =1;i<=x;i++)

            {

                f = String.valueOf(x);

                y = Integer.toString(i);

                 

                //生成Pattern对象并且编译一个简单的正则表达式(变量f)

                Pattern p = Pattern.compile(f); 

                 

                //用Pattern类的matcher方法生成一个Matcher对象

                Matcher m = p.matcher(y); 

                 

                //使用find()方法查找第一个匹配的对象            

                boolean result = m.find(); 

                while(result) 

                { 

                    imatch++;  

                    //继续查找下一个匹配对象 

                    result = m.find(); 

                }    

                 

                if (imatch == x)

                {

                    System.out.println("F("+x+")="+imatch);

                }   

            }   

        }

         

        public static void main(String[] args)

        {

            for(int i = 1;i<=10000;i++)

            {   

                F(i);

            }

        }

     

    }

    3.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序:

    public class ThreadTest1 { 

        private int j; 

        public static void main(String args[]) { 

            ThreadTest1 tt = new ThreadTest1(); 

            Inc inc = tt.new Inc(); 

            Dec dec = tt.new Dec(); 

            for (int i = 0; i < 2; i++) { 

                Thread t = new Thread(inc); 

                t.start(); 

                t = new Thread(dec); 

                t.start(); 

            } 

        } 

        private synchronized void inc() { 

            j++; 

            System.out.println(Thread.currentThread().getName() + "-inc:" + j); 

        } 

        private synchronized void dec() { 

            j--; 

            System.out.println(Thread.currentThread().getName() + "-dec:" + j); 

        } 

        class Inc implements Runnable { 

            public void run() { 

                for (int i = 0; i < 100; i++) { 

                    inc(); 

                } 

            } 

        } 

        class Dec implements Runnable { 

            public void run() { 

                for (int i = 0; i < 100; i++) { 

                    dec(); 

                } 

            } 

        } 

    }

    三 、设计模式:

    画出Composite设计模式的UML类图

    1.composite uml 类图

    画出Proxy设计模式的UML类图

    2.proxy uml 类图

    四 数据库

    已知关系模式:

    S (SNO,SNAME) 学生关系。SNO为学号,SNAME 为姓名

    C (CNO,CNAME,CTEACHER)课程关系。CNO为课程号,CNAME为课程名,CTEACHER为任课教师

    SC(SNO,CNO,SCGRADE)选课关系。SCGRADE成绩

    1.找出没有选修过”李明“老师讲授的所有学生的姓名

    1) select s1.sname as '学生姓名' from s as s1 where

    s1.no not in (select sno from sc where cno in

    (select cno from c where cteacher ='李明')

    )

    2.列出有二门以上(含二门)不及格课程的学生姓名及其平均成绩

    2)SELECT S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

    FROM S,SC,(

        SELECT SNO

        FROM SC

        WHERE SCGRADE <60

        GROUP BY SNO

        HAVING COUNT(DISTINCT CNO)>=2

    )A WHERE S.SNO=A.SNO AND SC.SNO=A.SNO

    GROUP BY S.SNO,S.SNAME

    3.列出既学过”1“号课程,又学过”2“号课程的所有学生姓名

    3)SELECT S.SNO,S.SNAME

    FROM S,(

        SELECT SC.SNO

        FROM SC,C

        WHERE SC.CNO=C.CNO

            AND C.CNAME IN('1','2')

        GROUP BY SNO

        HAVING COUNT(DISTINCT CNO)=2

    )SC WHERE S.SNO=SC.SNO

    4.列出”1“号课成绩比”2“号同学该门课成绩高的所有学生姓名

    4)

    SELECT S.SNO,S.SNAME

    FROM S,SC SC1,SC SC2

        WHERE SC1.CNO='1'

            AND SC2.SNO='2'

            AND SC1.CNO=S.CNO

            AND SC1.SCGRADE>SC2.SCGRADE

    5.列出”1“号课成绩比”2“号课成绩高的所有学生的学号及其”1“号课和”2“号课的成绩

    5)SELECT SC1.SNO,SC1.SCGRADE,SC2.SCGRADE

    FROM SC SC1,SC SC2

    WHERE SC1.CNO='1'

            AND SC2.CNO='2'

            AND SC1.SNO=SC2.SNO

            AND SC1.SCGRADE>SC2.SCGRADE

  • 相关阅读:
    跨域问题
    Django缓存机制
    Django Reat Framework --- 版本控制
    Hellow!
    回忆
    突然看见新评论通知
    [退役前的小声bbbbbbbbbbbbbbbbbbbbbb]
    【题解】【CQOI2018】解锁屏幕(玄学优化)
    solution
    1009-自闭++
  • 原文地址:https://www.cnblogs.com/zszitman/p/4411552.html
Copyright © 2020-2023  润新知