ImageVerifierCode 换一换
格式:DOCX , 页数:69 ,大小:973.89KB ,
资源ID:12200946      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12200946.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IT技术人员面试基础知识结合.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IT技术人员面试基础知识结合.docx

1、IT技术人员面试基础知识结合面试必备的相关知识目的:为了更好的认识java体系,同时为了找更高的薪水。1、java基础知识1.1 基础知识1.1.1 配置环境变量新建java_home变量(安装目录),值为:C:Program FilesJavajdk1.6.0_14;此值为JDK的安装位置。新建classpath变量(类加载路径),值为:.;%java_home%lib;%java_home%libtools.jar修改path变量(使得系统可以在任何路径下识别java命令),值为:%java_home%bin;%java_home%jrebin1.1.2 访问修饰符Public:任何地方可

2、以访问Private:只有自身可以访问Protected:同一个包和子类可以访问默认:只有同一个包内可以访问1.2 对象的清理1.2.1认识Java的自动垃圾回收 垃圾回收是Java语言的一大特性,方便了编程,是以消耗性能为代价的。而垃圾在这里只无用的对象。而C+是需要程序员自己写析构函数来释放内存的,麻烦,也有可能忘记而导致内存泄露。 Java语言对内存的分配管理是通过JVM内部机制决定的。程序员可以不关心其处理。 1.2.2垃圾回收的原理和意义 Java虚拟机中有个称之为垃圾回收器的东西,实际上这个东西也许真正不存在,或者是已经集成到JVM中了,但这无关紧要,我们仍然可以称为为垃圾回收器。

3、 垃圾回收器的作用是查找和回收(清理)无用的对象。以便让JVM更有效的使用内存。 垃圾回收器的运行时间是不确定的,由JVM决定,在运行时是间歇执行的。虽然可以通过System.gc()来强制回收垃圾,但是这个命令下达后无法保证JVM会立即响应执行,但经验表明,下达命令后,会在短期内执行你的请求。JVM通常会感到内存紧缺时候去执行垃圾回收操作。 垃圾回收过于频繁会导致性能下降,过于稀疏会导致内存紧缺。这个JVM会将其控制到最好,不用程序员担心。但有些程序在短期会吃掉大量内存,而这些恐怖的对象很快使用结束了,这时候也许有必要强制下达一条垃圾回命令,这是很有必要的,以便有更多可用的物理内存。 从上面

4、了解到,没有用的对象就是垃圾。准确的说,当没有任何线程访问一个对象时,该对象就符合垃圾回收的条件。 对于String,存在一个字符串池,这个不属于本文讨论的范围,字符串池中的垃圾回收,算法和这里所讨论的垃圾回收完全是两码事。但是不得不说的是,字符串的胡乱拼接,往往导致性能急剧下降,尤其是在庞大的循环语句中,拼接字符串就是在让程序慢性自杀。这也是很多Java程序员容易犯的毛病。 字符串既然是池,就是为了缓冲,为了有更高的命中率,因此垃圾回收的频率也许会比JVM对象垃圾回收器要低很多。 垃圾回收器仅仅能做的是尽可能保证可用内存的使用效率,让可用内存得到高效的管理。程序员可以影响垃圾回收的执行,但不

5、能控制。 1.2.3通过编程影响垃圾回收 虽然程序员无法控制JVM的垃圾回收机制。但是可以通过编程的手段来影响,影响的方法是,让对象符合垃圾回收条件。 分别说来有一下几种: 1、将无用对象赋值为null. 2、重新为引用变量赋值。比如: Person p = new Person(aaa); p = new Person(bbb); 这样,new Person(aaa)这个对象就是垃圾了符合垃圾回收条件了。 3、让相互联系的对象称为“岛”对象 Person p1 = new Person(aaa); Person p2 = new Person(bbb); Person p3 = new Pe

6、rson(ccc); p1=p2; p2=p3; p3=p1; p1=null; p2=null; p3=null; 在没有对p1、p2、p3置null之前,它们之间是一种三角恋关系。分别置null,三角恋关系依然存在,但是三个变量不在使用它们了。三个Person对象就组成了一个孤岛,最后死在堆上被垃圾回收掉。 1.2.4强制的垃圾回收System.gc() 实际上这里的强制,是程序员的意愿、建议,什么时候执行是JVM的垃圾回收器说了算。 调用垃圾回收也不一定能保证未使用的对象一定能从内存中删除。 唯一能保证的是,当你内存在极少的情况,垃圾回收器在程序抛出OutofMemaryExceptio

7、n之前运行一次。1.3 集合1.4 文件流1.4.1输出字节流1.4.2 输入字节流1.4.3 输入输出字符流1.5 网络1.5.1 TCP和UDP的区别TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠的无差别错的数据传输。UDP是无连接通信协议,UDP不保证可靠的数据的传输,但能够向若干个目标发送数据,接受发自若干个源的数据。1.6 多线程1.6.1 实现多线程实现多线程:继承自Thread类,可以重写run()方法去覆盖去Thread中的run()方法;实现Runnable接口并实现它的run()方法。线程的优先级代表该线程的重要程度(不是绝对的),当有多个线程同时处于可执行状态

8、并等待获得 CPU 时间时,线程调度系统根据各个线程的优先级来决定给谁分配 CPU 时间,优先级高的线程有更大的机会获得 CPU 时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。1.6.2 多线程方法的解释和区别1.start()是启动一个线程。 2.join()是直到执行完(或强制执行一段时间)当前的线程后才往下执行主线程或其他的线程 3.stop()是停止当前的线程。 阻塞线程比较多 sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。可能给其他线程执行

9、的机会(自私,睡着了,不释放锁,时间到了才放锁) suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。 yield() 方法:yield() 使得线程放弃当前分得的 CPU 时间,但是不使线程阻塞,即线程仍处于可执行状态,随时可能再次分得 CPU 时间。调用 yield() 的效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。不过yield()只能使同等级别的线程获取执行的机会(公平竞争,释放大家再次选举)。而sleep(1000)使同级

10、别或不同级别的都有可能。 wait() 和 notify() 和notifyAll()方法是Object中定义的方法: 必须在synchronized代码块中使用,在synchronized代码被执行期间,线程可以调用对象的wait()方法,释放对象的锁标志,进入等待的状态,并且可以调用notify()或者notifyAll()方法通知正在等待的其他线程。notify()通知的是等待队列中的第一个线程,notifyAll()通知的是等待队列中的所有数量。 几个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式,一种允许 指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应

11、的 notify() 被调用或者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。1.6.3 wait和sleep的区别wait()在object类里定义;sleep()在Thread类里定义。 wait()方法只能放在同步方法或同步块中,表示资源同步时,线程需要等待。 sleep()方法可放在任何位置,表示当前线程睡眠。 wait()方法会释放对象锁;sleep()不会释放对象锁。 wait()方法要等待唤醒之后,线程才会继续执行。 sleep()则是休眠一段时间,线程自动恢复执行. sleep()必须捕获异常,而wait(),notify()和notifyA

12、ll()不需要捕获异常 1.6.4 notify()和notifyAll()的区别 notify() 方法导致解除阻塞的线程是从因调用该对象的 wait() 方法而阻塞的线程中随机选取的,我们无法预料哪一个线程将会被选择,所以编程时要特别小心,避免因这种不确定性而产生问题。 notifyAll() 方法将把因调用该对象的 wait() 方法而阻塞的所有线程一次性全部解除阻塞。当然,只有获得锁的那一个线程才能进入可执行状态。 1.6.5 run和start的区别run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;start()方法:启动一个线程,调用该Runn

13、able对象的run()方法,不能多次启动一个线程;start()方法是启动(即开辟)一个线程的方法,因此线程的启动必须通过此方法, 而run()方法,只是Thread类的一个方法,它本身并不能开辟线程。1.7 异常 运行时异常和Error是catch不了的。 throw和throws的区别throw是抛出一个具体的异常类,产生一个异常。throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。自定义异常必须继承Exception类。1.8 格式化 略1.9 数字运算 略1.10 正则表达式1.10.1次数限定符 * 0次或多次 + 至少1次 ? 0或1次 n 指定n次 n

14、, 至少n次 n,m 匹配n-m次2、JAVA面向对象的基础知识2.1 面向对象的三个特征2.1.1 封装属性是私有,方法的公开的。自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。2.1.2 继承它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。2.1.3 多态实现多态有2种方式:静态多态(编译时的多态,在同一个类中)和动态多态(一个对象可以有多种类型)。是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。一句话:允许将子类对象赋值给父类的引用或父类指向子类的对象。2.

15、1.4 总结封装可以隐藏实现细节,使得代码模块化。继承可以扩展已存在的代码模块(类)。封装和继承属于代码重用。多态是为了接口重用。2.1.5 继承、聚合、组合、关联的区别继承很好理解,下图表示(实线):实现也很好理解,下图表示(虚线):依赖(代码中通常表示的是局部变量、方法参数、返回值),下图表示:关联(代码中通常表示的类的属性),下图表示:聚合(关联的一种,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;has-a,空心菱形),下图表示组合(关联的一种,表示更强的关系,整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周

16、期结束,contains-a,实心菱形),下图表示2.2 抽象、接口定义及区别抽象类里面可以有非抽象方法但接口里只能有抽象方法 声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(int

17、erface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。2.3 匿名类、内部类、匿名内部类在一个类中定义另

18、外一个类,这个类就叫做内部类或内置类 (inner class) 。内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。我们为什么使用内部类? A、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。 B、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以

19、更好地定位与接口关联的方法在代码中的位置。C、内部类的更多用法(匿名inner class实现一个接口,不过切记最后那个分号;实现继承和接口实现时出现同名方法的问题;实现多重继承的功能)2.4 反射这种动态的获取信息及动态调用方法的机制在Java中称为“反射”(reflection)。Reflection 是Java被视为动态(或准动态)语言的一个关键性质。在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中: Class类:代表一个类; Field 类:代表类的成员变量(成员变量也称为类的属性); Method类:代表类的方法; Construc

20、tor 类:代表类的构造方法; Array类:提供了动态创建数组,以及访问数组的元素的静态方法;在java.lang.Object 类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型。Class类是Reflection API 中的核心类,它有以下方法: getName():获得类的完整名字; getFields():获得类的public类型的属性(包括继承的类的public属性); getDeclaredFields():获得类的所有属性; getMethods():获得类的public类型的方法; (包括继承的类的public方法); getD

21、eclaredMethods():获得类的所有方法; getMethod(String name, Class parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型; getConstructors():获得类的public类型的构造方法; getConstructor(Class parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型; newInstance():通过类的不带参数的构造方法创建这个类的一个对象;通过默认构造方法创建一个新对象: Object

22、objectCopy=classType.getConstructor(new Class).newInstance(new Object); 以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。获得对象的所有属性: Field fields=classType.getDeclaredFields(); Class 类的getDeclaredFields()方法返回类的所有属性,包括public、protected、默认和private访问级别

23、的属性。Java允许我们从多种途径为一个class生成对应的Class object(一)运用getClass()方法(二)运用Class.getSuperclass()方法(三)运用静态方法Class.forName(),这个最常用(四)运用.class语法(五)运用原始包装类的TYPE方法2.5 浅复制和深复制浅负责也叫浅克隆,深复制也叫深克隆。克隆一般通过实现Cloneable中的clone方法来实现浅克隆和深克隆,但是深克隆有一个问题,如果引用对象有很多,或者说引用套引用很多重,那么太麻烦了。业界常用的方法是使用串行化然后反串行化的方法来实现深克隆。由于串行化后,对象写到流中,所有引用

24、的对象都包含进来了,所以反串行化后,等于生成了一个完全克隆的对象。绝! 这个方法的要求是对象(包括被引用对象)必须事先了Serializable接口,否则就要用transient关键字将其排除在复制过程中。3、UML相关知识3.1软件工程的生命周期3.1.1 软件工程的生命周期需求捕获、系统分析与设计、系统实现、测试、维护3.2.UML(Unified Modeling Language)概述3.3 UML组成视图(View)是一个或多个图组成的对系统某个角度的抽象图(Diagram)是模型元素集的图形表示模型元素(Model Element)代表面向对象中的类、对象、接口、消息和关系的概念通

25、用机制(General Mechanism)用于表示其他信息,如注释、模型元素的语义等3.4视图视图由图组成,UML提供9种不同的视图,其中视图的包括用例视图(强调系统功能)也称用户模型视图用例图逻辑视图(展现系统的静态或结构组成特征)也称为结构模型视图或静态视图类图、对象图并发视图(体现系统的动态或行为特征)也称为行为模型视图或动态视图时序图、协作图、状态图、活动图组件视图(体现系统实现的结构和行为特征)也成为实现模型视图组件图配置视图(体现系统实现的环境的结构和行为特征)也称环境模型视图或物理视图配置图3.5静态建模机制和动态建模机制UML内容归纳为2大类:静态建模机制和动态建模机制静态建

26、模机制包括用例图、类图、对象图、组件图、配置图、包等动态建模机制包括时序图、协作图、状态图、活动图、消息等3.6 UML用来描述模型内容的有3种:事物、关系、图(静态视图和动态视图)主要说说事物和关系事物包括如下结构事物:用例(椭圆)、类(矩形)、接口(圆心)、协作(虚椭圆)、活动类(粗线矩形)、组件、节点(资源:电脑)行为事物:交互(通常画成带箭头的信息)、状态机(对象的一个或多个状态的集合)组织事物:包辅助事物:注释关系:关联、依赖、泛化、实现3.7 类与类关系类(矩形:名称、属性、操作、职责)其中表示+、-、#是public、private、protected关系依赖(有方向的虚线):使

27、用依赖、抽象依赖、授权依赖、绑定依赖泛化(父类和子类的关系):描述了类之间的“is a kind of ”的关系,用子类指向父类的空心三角形箭头(实线)表示该关系。泛化使得多态成为可能。关联:描述一组具有相同结构特征、行为特征、关系和语义的链接。关联的修饰有:名称(描述关系的性质)、角色(职责)、多重性(0.n)、聚合(整体和部分,即has a的关系)、组合(是更强的关系,是另外一种聚合,整体有管理部分特有的职责并且有一致的生命周期)等。实现:实现规格说明和其实现间的关系。它表示不继承结构而只继承行为。大多数情况下,实现关系用来规定接口和实现接口的类或组件之间的关系。(带空心的箭头表示,线是虚

28、线)3.8类图描述类、接口、协作以及它们之间关系的图。类图包括7个元素:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系类图的作用:对系统的词汇建模、对简单的协作建模、对逻辑数据库模式建模3.9对象图表示某一刻一组对象以及它们之间关系的图3.10包图(略)3.11用例视图用例(Use Case):对一个系统或一个应用的一种单一的使用方式所作的描述。参与者(Actor):系统外部的一个实体(可以说任何事物或人)参与者之间的关系(泛化关系、包含关系、扩展关系)3.12时序图描述对象之间传递消息的时间顺序,他用来表示用例中的行为顺序,是强调消息时间的交互图包括4个元素:对象、生命线、激活、消

29、息3.13协作图强调参与交互的各对象结构的信息。协作图是一种类图。协作图中包含3个元素:对象、链、消息。如图:3.14状态图通过类对象的生命周期建立模型来描述对象随时间变化的动态行为。它包括:状态和转换注意:初始状态:实圆心、终止状态:半实圆心。状态机、状态、转化其中状态包括:名字、入口/出口动作、内部转换、延迟事件、子状态。转换包括:源状态、目标状态、出发事件、监护条件、动作3.15活动图描述一个过程或操作的步骤。描述状态外,更突出活动动作状态、活动状态、动作流、分支、分叉和汇合、泳道、对象流。3.16组件图描述软件组件及组件之间的关系。包括:组件、接口、关系(依赖、泛化、关联、实现)。3.

30、17配置图显示软件系统运行的物理硬件。包括节点(单个物理对象)、组件和关系(依赖和关联) 4、熟悉LINUX(略)5、SSH框架的配置及相关知识5.1 MVC5.1.1 简介MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。5.1.2 MVC的优缺点优点:低耦合、高可复用性和可适用性、较低的生命周期成本、

31、快速部署、可维护性、有利于软件工程化管理。缺点:原理较复杂花费时间思考、程序分成三个部分需要管理更多的文件。5.1.3 MVC的现有框架Struts: Apache的,最流行的MVC组件 Struts2 :Apache用Struts 和 WebWork的组合出来的新产品,目前上升势头强劲 WebWork: 这个可是老牌的MVC组件,后来组合成了Struts2, 不过自身仍在发展 Spring MVC:SpringFramework自己整合自己Spring的优势推出的MVC组件,用户也不少。 JSF: 这个是一个规范,Sun的和 Apache的都有各自的实现。用户量很大,被众多IDE支持。5.1.4 Model1和Model2Model1是将业务、控制、视图都放在jsp页面、Model

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1