java笔试必备的基础知识总结

来源:互联网 发布:js 函数的argument 编辑:程序博客网 时间:2024/04/25 11:54

 

java基础技术知识复习

一、    计算机基础知识:包括数据结构中的基本算法,计算机网络的OSITCP/IP模型。

 

计算机网络的OSIOSI(Open System Interconnnection OSI)开放式系统互连,       是由国际化标准组织(ISO)制定的标准化开放式的计算机网络层次结构模型

包括七层:

应用层Application Layer)——    操作系统或网络应用程序提供访问网络服务的接口。协议的代表包括TelnetFTPHTTPSNMP

表示层Presentation Layer)——主要解决用户信息的语法表示问题

会话层Session Layer)——会话地址映射为运输地,选择需要的运输服务质量参数(QOS),传送有限的透明用户数据,数据传输阶段

传输层Transport Layer)——传输层协议的代表包括TCPUDPSPX

源端到目的端对数据传送进行控制从低到高的最后一层.,差错恢复,流量控制

网络层(Network Layer)——路由选择和中继激活,终止网络连接,多采取分时复用技术,差错检测与恢复,网络管理。Ip地址和端口号的信号。设备路由器

数据链路层Data Link Layer)——物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。数据的单位称为帧(frame)。设备:二层交换机、网桥

物理层Physical Layer)——通信设备的机械的、电气的、功能的和规程的特性。物理层的主要设备:中继器、集线器。

 

TCP/IP模型。 TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。为需要传输大量数据的应用程序提供面向连接的可靠通信

 

物理层——网络层——传输层——应用层

 

二、    软件工程知识:包括讲述面向对象编程思想,极限编程,结对编程等

面向对象编程思想

极限编程:ExtremeProgrammingXP)就是这样一种灵巧的轻量级软件开发方法,一个严格实施XP的项目,其开发过程应该是平稳的、高效的和快速的,能够做到一周40小时工作制而不拖延项目进度。

软件开发的内容是:需求、设计、编程和测试

结对编程:结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计。

三、    JavaSE基础理论:包括数组,常用类,集合对象,异常处理,输入/输出流,多线程,数据库编程,网络编程GUI编程等。

   数组:用于存储具有相同数据类型,是引用数据类型

 

   常用类Object类,字符串相关类:StringStringBuffer类,基本数据类型包装类,日期类

   String valueof()方法

集合对象:将用途、性质相同或相似的数据统一的存储保存,保存是数据的对象1136

 

异常处理

 

1、  异常定义:Java异常是指程序运行过程中出现的错误

异常处理机制——用于在程序中处理在运行时出现的错误

2、  异常分类:Throwable

            

 

        Error          Exception

 

 


                   必须捕获    RutimeException

 

3、  ThrowThrows区别

4、  ErrorException区别

5、  自定义异常

6、  原则:先逮小、后逮大

7、  异常和重写的关系:继承时重写的方法抛出一致的异常或不抛出异常

输入/输出流

   流——是指一连串流动的字符,以先进先出的方式发送数据

    分类:

1、按用途方向:输入流,输出流

2、按处理数据的单位:字节流、字符流

3、按功能:节点流、处理

 

 

字节流

字符流

输入流

InputStream

Read

输出流

OutputStream

Write

一般用到的:

FileInputStream/.out   FileReader/Write

BufferInputStream/out  BufferReader/Writer

ByteArrayInputStream/out  InputStreamReader/Writer

ObjectInputStream/out

 

序列化

  序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

  序列化的目的:

1、以某种存储形式使自定义对象持久化;

2、将对象从一个地方传递到另一个地方。

 

GUI编程

GUI——图形用户界面接口  awt——抽象窗口工具集

 

   多线程:

1、线程的定义:是程序执行流的最小单元,线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.(为完成某项任务的执行步骤或一个程序的多条执行路径

2、  线程的分类:

3、  线程状态:就绪——运行——阻塞

4、  主要方法  

 sleep() 睡眠

  run() 程序体

yield() 向其他线程退让运行权 

join()合并进程

  start() 开始执行

  Stop() 停止执行

 isActive() 判断是否处于执行状态

  Suspend() 暂停执行

  reSume 恢复执行

 

5、  线程优先级 

Public statuc final int MAX_PRIORITY最高优先级,10

Public statuc final int MIN_PRIORITY最低优先级,1

Public statuc final int NORM_PRIORITY普通优先级,5

 

6、  线程分类

     Java的线程是通过java.lang.Thread类来实现的。

    JVM启动时会有一个由主方法(public static void main(){})所定义的线程。

 可以通过创建Thread的实例来创建新的线程。

7、  线程实现 

Java里面实现多线程,有2个方法

1)     继承 Thread类,比如

  class MyThread extends Thread {

  public void run() {

  // 这里写上线程的内容

  }

  public static void main(String[] args) {

  // 使用这个方法启动一个线程

  new MyThread().start();

  }

  }

2)     实现 Runnable接口

  class MyThread implements Runnable{

  public void run() {

  // 这里写上线程的内容

  }

  public static void main(String[] args) {

  // 使用这个方法启动一个线程

MyThread r=new MyThread();

Thread t =new Thread(r);

t.start();

  }

  }

8、   线程同步

Ø      线程死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。(当两个或多个线程之间同时等待对方释放资源的时候就会形成线程之间的死锁)

产生死锁原因:1 因为系统资源不足。

                  2 进程运行推进的顺序不合适。

             3 资源分配不当等。

产生死锁四个必要条件:

   1 互斥:一个资源每次只能被一个进程使用。

  (2 占有等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

  (3 不剥夺:进程已获得的资源,在末使用完之前,不能强行剥夺。

4 循环等待:若干进程之间形成一种头尾相接的循环等待资源关系。

     避免死锁的算法:银行家算法

Ø          生产者与消费者

   

数据库编程

网络编程

Ø         SocketIp地址和端口号组成的,是网路运行程序之间的双向通信链路的最后终结点

Ø         java.net 包下的SocketServerSocket

Ø         IP地址:

Ø         端口号:

Ø         Tcp编程:

服务器端:

ServerSocket ss=new ServerSocket(2222);

Socket service=ss.accept();

InputStream is=service.getInputStream();

      DataInputStream dis=new DataInputStream(is);

System.out.println("我已经收到你的留言:"+dis.readUTF());

客户端:

InetAddress inaddres=InetAddress.getLocalHost();

Socket s=new Socket(inaddres,2222);;

OutputStream os=s.getOutputStream();

       DataOutputStream dos=new DataOutputStream(os);

dos.writeUTF("Hello!");

 

Ø         Udp编程:

     服务器端:

        byte[] b=new byte[1024];

       DatagramPacket dp=new DatagramPacket(b,b.length);

       DatagramSocket ds=new DatagramSocket(3333);

       ds.receive(dp);

       System.out.println(new String(b,0,b.length));

     ds.close();

 

     客户端:

        byte[] buf="你好!".getBytes();

       DatagramPacket dp=new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",3333));

       DatagramSocket ds=new DatagramSocket(5555);

       ds.send(dp); 

     ds.close();

 

Ø         如何把long类型的数发到字节数组里:

       客户端

 Long l=1234l;

       ByteArrayOutputStream bos=new ByteArrayOutputStream();

       DataOutputStream dos=new DataOutputStream(bos);

     dos.writeLong(l);

     服务器端:

        ByteArrayInputStream bai=new ByteArrayInputStream(b);

       DataInputStream bi=new DataInputStream(bai);

   System.out.println(bi.readLong());

  

 

四、    JavaEE知识体系:包括JSPServletEJB规格,

Jsp——JavaServer Pages是一种实现普通静态HTML和动态HTML混合编码的技术

Servlet——是运行在服务器端,用于处理客户端的请求,并且将处理的结果反应给客户端(以动态html页面)的java

EJB规格

EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。是sun的服务器端组件模型。

 

五、    Web服务器:TomcatWeblogic

Tomcat是一个小型的轻量级Web 应用服务器。占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能(Apache)

Weblogic:是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。性能 、可扩展性和高可用性(bean)

 

六、    SSH开源框架:是否阅读过源代码?如果阅读了后有什么总结提高?

七、    Oracle数据库知识:包括SQL(比如左连接和右连接),PL/SQL程序设计,数据库设计。

         SQL (Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

PL/SQL:是一种高级数据库程序设计语言,是对标准SQL语言的过程化扩展

八、    基于Linux/UNIX系统的开发

九、    高级项目实践:是否能够清楚的讲述简历中提到的项目的业务功能,技术框架,项目管理,总结提高等。没有做完的需要继续做完。

十、    设计模式:MVC模式和其他设计模式的理解,是否有实践经验?在项目中使用模式的优缺点对比。

MVC设计模式:

优点:

1、  高内聚低耦合,有利于分工合作 

2、  应用程序可伸缩性强

3、  便于维护

          缺点:

1、  增加了系统结构和实现的复杂性

2、  降低了系统的性能

设计模式在大量的实践中总结理论化之后形成的优选的代码结构,编程风格,以及解决问题的方案和途径

     设计模式的原则:

1)        "开-闭"原则 :对扩展开放,而对修改关闭

2)        职责单一原则:抽象类不会有实例,一般作为父类为子类继承,一般包含这个系的共同属性和方法。具体类是不被继承的。将尽可能多的共同代码放到抽象类中。

3)        里氏代换原则 :子类override方法的访问权限不能小于父类对应方法的访问权限:如:  光盘 d=new 盗版盘();d.();

4)        合成复用原则(聚合/组合):应尽量针对Interface编程,而非实现类  

5)        依赖倒转原则:抽象不应该依赖与细节,细节应当依赖与抽象。

6)        接口隔离原则:定制服务的例子,每一个接口应该是一种角色,不多不少,不干不该干的事,该干的事都要干。避免接口大而全污染

7)        迪米特法则:最少知识原则

设计模式分类:

1)      简单工厂模式:由一个工厂类,根据传入的参数决定创建出哪一种产品类的实例。比如:interface Fuirt   apple, grape

2)        方法工厂模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。

  比如:interface MethodFactory {  public Fruit  createFruit (String name);}

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。interface FactoryInterface {  public Fruit  createFruit (String name);  public Vegetable  createVegetable(String name); }

3)        单子设计模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。    

 享元模式(Flyweight):享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。

就是在自身未定义单例模式,其它类来提供缓存为我提供单例模式

如:public class CardLayoutDemoAction implements ActionListener {

       private CardLayoutDemo jframe;

   public CardLayoutDemoAction(CardLayoutDemo jframe) {

       this.jframe = jframe;

   } 

4)        适配器模式和装饰模式

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。在不改变源代码的实现功能的前提下,增加接口为其他类服务

装饰模式(Decorator):动态地给一个对象添加一些额外的职责。不改变源代码,也不改变源代码的接口来增加新功能

5)         策略模式和命令模式

   策略模式

 

使用模式的优点规范代码实现风格,提高代码可重用,提高开发效率;保证程序系统的扩展性和维护性。

缺点:增加了系统结构和实现的复杂性  

十一、           软件工程理论在项目中的应用:包括开发模式,测试过程管理(包括单元测试,集成测试,系统测试,验证测试等,白盒测试,黑盒测试等),项目文档(需求分析文档,概要设计文档,详细设计文档,测试用例文档,用户手册等)。

1.       开发模式

2.       测试过程管理

测试的过程

  A.单元测试单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。由程序员自己来完成

  B.集成测试 也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求)如根据结构图〕组装成为子系统或系统,进行集成测试。

  C.确认测试确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。

  D.系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.

E.验收测 Acceptance testing(验收测试),系统开发生命周期方法论的一个阶段,这时相关的用户和/或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制。

Ø    黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。

黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。

常见错误:功能不正确或遗漏; 界面错误; 数据库访问错误; 性能错误; 初始化和终止错误等。

常用的测试方法:页面链接检查;字符串长度检查;检查添加和修改是否一致等

Ø      白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

   测试方法:代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法

3.       项目文档

Ø      软件生命周期(SDLC):可行性分析与开发项计划、需求分析、软件设计(概要设计和详细设计)、程序编码、软件测试、运行维护

Java相关技术

  1JDBCJava Database Connectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。

  2EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。

  3Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。

  4Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。

  5JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。

  6JMAPIJava Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。

  7JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。

  8JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。

  在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBeanJavaBean的优势还在于Java带来的可移植性。现在,EJB (Enterprise JavaBeans) JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOMCORBA,关于这些组件体系结构的深入讨论超出了本书的范围。