笔试题(1)

来源:互联网 发布:django redis mysql 编辑:程序博客网 时间:2024/06/16 05:18

原来公司语言转型,然后我就辞职了也就呆了两个星期。。。。最近又在开始面试了,今天重新开始面试第一天,来总结一下面试题。

1:名词解释,抽象,封装,继承

        ①抽象:是指将一些有共性的数据数据结构(属性)和行为(操作)抽象成类,他反应与应用有关的一些重要性质,而忽略其他的。        ②封装:封装性是保证软件部件具有优良的模块性的基础,对象是封装的最基本单位, 封装防止了程序相互依赖性而带来的变动影响。        ③继承:是指子类自动共享父类的数据结构和方法的机制,在定义一个类时,如果与类有继承关系,即可以使用父类的属性,并可以添加一些其他的属性。

2:a=10,b=20.在不使用第三方变量的情况下,使两值互换。

        a=a+b;//a=30        b=a-b;//b=30-20;b=10;        a=a-b;//a=30-10;a=20;

3:String str=”abcde”,反序输出字符串,不能用函数。

        String str="abcde";        StringBuffer sb=new StringBuffer();        for(int i=str.length()-1;i>=0;i++){            sb.append(str.charAt(i));        }        System.out.println(sb.toString());

4:Math.round(11.5)等于多少,Math.round(-11.5)等于多少。

            12                         -11

5:override和overload的区别。

    override(重写),overload(重载).    1:重载是一个类中多态性的体现,重写是父子类的多态性的体现。    2:重载是多个同名函数存在时,参数列表不同,重写是参数列表必须与被重写的方法完全相同,否则就变成了重载。    3:重写的返回值类型必须与被重写的返回值类型相同。    4:访问修饰符必须比被重写方法的访问修饰符权限要大    5:重写的方法不能抛出比被重写方法更高级别的异常。    6:重载可以有不同的访问修饰符,可以抛出不同的异常,可以有不同的返回值类型,只要参数列表不同即可。

6:String str=new String(“asdf”);创建了几个对象。

        创建了两个对象,  1,str    2,String"asdf"

7:说出数据连接池的工作机制。

    J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表标记为空闲,其他调用级可以使用这个连接。

8:swtich是否能作用在byte上,long上,String上?

    byte   能   隐士转换int.    long   不能   转换不了。    string 不能   转换不了。swtich支持:int,byte,short,char.

9:一组数字,10.20.45.99.66.进行倒序输出。使用冒泡排序。

    int arr[]={10,20,45,99,66};    for(int i=1;i<arr.length;i++){        for(int j=0;j<arr.length-i;j++){            if(arr[j]<arr[j+1]){                int temp=arr[j];                arr[j]=arr[j+1];                arr[j+1]=temp;            }        }    }    再遍历数组,就可以实现从大到小排列了。

10:new Arraylist(10)的含义。

分配了10个指向String类型的空间。new Arraylist()是默认分配10个MyData对象的空间,此时只是只是分配了对象引用的空间。

11:写一个Singleton。

            //懒汉式单例类.在第一次调用的时候实例化自己       public class Singleton {          private Singleton() {}          private static Singleton single=null;          //静态工厂方法           public static Singleton getInstance() {               if (single == null) {                     single = new Singleton();               }                return single;          }      } 

12: java中的异常处理机制的简单原理和应用。

异常指程序运行时期(非编译)所发生的非正常情况和错误。java中的异常都继承自Throwable。派生类有        ---Error(代表程序无法克制和解决的错误)        ---Exception(表示可修复的)    其中Exception又分为系统异常和普通异常,系统异常是指软件开发本身时设计不周导致的异常,此异常无法解决,但可以通过手段让程序继续执行下去,而普通异常指的是运行环境导致的异常,如断电等等。Java为异常提供了try()..catch和throws的方式来处理异常。就是要么抓,要么抛。

13:char类型变量中能不能储存一个中文汉字,为什么?

char类型可以储存一个中文汉字,因为一个中文汉字占两个字节,char类型可以容纳两个字节。

14:j2ee常用的设计模式?

单例模式,工厂模式,建造模式,门面模式,原始模型模式。

        (一共好像是23种,我就记得这几种,并且熟悉的也就是单利模式和工厂模式,后面那三个都只是听过都没研究过。。。)

15:SOCKET中有几种连接方式,区别?(未答出)

两种:长连接与短连接(我只回答了这一句,只是简单了解过,下面是百度的答案。)

所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。

短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。

16:设计两个线程,其中1个线程每次对j增加1,另外1个线程对j每次减少1(未答出).

//加一
import java.util.concurrent.atomic.AtomicInteger;

    public class AddNum extends Thread {          private AtomicInteger i;          public AddNum(AtomicInteger i) {              this.i = i;          }          @Override          public void run() {              synchronized (i) {                  i.getAndIncrement();                  System.out.println(i);              }          }      } 

//减一

    import java.util.concurrent.atomic.AtomicInteger;      public class SubstractNum extends Thread {          private AtomicInteger i;          public SubstractNum(AtomicInteger i) {              this.i = i;          }          @Override          public void run() {              synchronized (i) {                  i.decrementAndGet();                  System.out.println(i);              }          }      }  

17:什么事存储过程?有什么优点(勉强答出了前面两点)。

存储过程是组予编译的sql语句优点:① 允许模块化程序设计,就是说只需要创建一次过程,以后就可以调用该过程任意次数。     ② 允许更快执行,如果其操作需要执行大量SQL语句或重复执行存储过程比SQL语句执行的要快     ③ 减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行的代码。     ④ 更好的安全机制,对于没有权限执行存储过程的用户,也可以授权他们执行存储过程。

18:如果有重复的数据怎么办?以前的数据我想保留不可以删除,如何实现(没答出)?

删除重复:select distinct * from tableName/*这道题我没看懂意思,是说重复的数据保留还是以前的数据跟重复数据没关系吗?求指导*/

19:什么叫sql注入,如何防止?请举例说明

我:sql注入是利用sql漏洞进行网络攻击。    举例:在后台登陆的时候,免去了校验的步骤,使得不需要身份验证就可以登陆。百度:答:SQL注入是常见的利用程序漏洞进行攻击的方法。导致sql注入攻击并非系统造成的,主要是程序中忽略了安全因素,利用sql语言漏洞获得合法身份登陆系统 例如:"Select * from users where name='"+uName+"' and pwd='"+uPwd+"' " 如用户在t_name中输入tom’ or 1=‘1 就可以进入系统了。生成语句:Select * from users where name = ‘tom’ or 1=‘1’ and pwd=‘123’防止sql注入的方法有如下几点:使用参数化过滤语句在web应用程序的开发过程中所有阶段实施代码安全检察使用存储过程

其他的还有一个数据库的题,也就是涉及到多表查询和一些复杂查询,也没答全。一共23道题,差不多有10道左右不会。。。好好复习吧!

原创粉丝点击