往年东软面试题汇总0829

1、栈对程序员是透明的。

2、结合具体实例,阐述面向对象中“多态”的概念 

    同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的结果,它由两种:

  •     编译时多态——通过overload来实现,系统在编译时,根据传递的参数和返回类型等信息决定实现何种操作。
  •     运行时多态——通过override实现,根据运行时具体对象的类型决定调用哪个方法。

3、Final和finally的区别?

    final:可以用在定义变量、方法和类。

  • final的变量:必须要初始化,也可以将初始化的操作推到类的静态块中进行,而且这样的变量不能在被重新赋值,可以将其看成这个类的“常量”。
  • final的方法:不能被所在类的子类重写。
  • inal的类:不能再被继承。——因此一个类不能同时被声明为abstract和final

    finally:是和try、catch 块配合使用的。finally一般放一些收尾的代码,即,不管try块中的代码是否正常执行,也不管try块中的代码是否工作了,finally中的代码都要执行。

finalize():Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了他。

子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。

4、Java的垃圾回收机制

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

垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收

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

5、完全二叉树的结构

    深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称之为完全二叉树。

6、什么是索引?

    索引依附于基表,建立索引是加快查询的有效手段。

7、视图是关系数据库系统提供给用户以多个角度观察数据库中数据的重要机制。是从一个或多个基表(或视图)导出的表,它与基本表不同,是虚表。

8、游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。

9、数据库的操作过程

      ①加载驱动程序②建立数据库连接③向数据库发送SQL语句④事务处理⑤管理连接

10、MVC

11、wait和sleep方法的区别

每个对象都有一个锁在控制同步访问,synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。

  • sleep()方法:正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep执行时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而不会释放同步锁资源!!!)
  • sleep()方法可以在任何地方使用;它是一个静态方法,调用此方法要捕捉InterruptedException异常。 
  • sleep():是线程类(Thread)的方法,调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复。
  • wait()方法:指当前线程让自己暂时退让出同步资源,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会解除wait状态,可以去参与竞争同步资源锁,进而得到执行。(notify的作用相当于叫醒睡着的人,而并不会给他分配任务,就是说notify只是让之前调用wait的线程有权利重新参与线程的调度)
  • wait()方法只能在同步方法或同步块中使用。
  • wait()是Object方法,调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或所有线程,才会进入锁池,再次获得对象锁才会进入运行状态。

 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由                  JVM确定唤醒哪个线程,而且不是按优先级。 

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 

12、Java中,是否有内存泄漏问题?

     理论上Java由垃圾回收机制GC,不会存在内存泄漏问题;

但在实际项目开发的时候,就会经常遇到内存泄漏的问题。可能会存在没有用处但是还存在在内存空间的对象,这些对象不能被GC回收,所以这些对象的堆积也会使得内存造成泄漏。比如hibernate的session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些兑现的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flush)一级缓存就可能导致内存泄漏。

 

在Java语言中,判断一个内存空间是否符合垃圾回收的标准有两个:

  • 给对象赋予了空值null,以后再没有被使用过;
  • 给对象赋予了新值,重新分配了内存空间。

一般来讲,内存泄漏主要有两种情况:

  • 在堆中申请了空间没有被释放;
  • 对象已不再被使用,但还仍然在内存中保留着。

垃圾回收机制的引入可以有效地解决第一种泄漏情况;而对于第二种,垃圾回收机制则无法保证不再使用的对象会被释放。因此Java语言中的内存泄漏主要指第二种情况。

13、new有几种用法?????????????????

     ①new class();

     ②覆盖方法   public new XXX(){}

     ③new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数

14、反射与序列化

  • 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
  • 序列化:将对象转换为容易传输的格式的过程。

15、计算机网络的拓扑结构是指网络中各个站点相互连接的形式,即通信线缆连接各个站点的形式,故主要取决于通信子网

16、分布式系统与计算机网络的主要区别不是物理结构,而是高层软件,分布式系统是建立在网络之上的软件系统,这种软件保证了系统高度的一致性与透明性。

17、大题:树的遍历

平衡二叉树、树的各种遍历,操作系统的分页机制

18、Java中的异常处理机制的简单原理和应用

当Java违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。

违反语义规则包括两种情况:

  • Java类库内置的语义检查。如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象会引起NullPointerException。
  • Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发一场。

所有的异常都是java.lang.Thowable的子类。

19、Java接口

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里的方法或属性,现有的单继承机制就不能满足要求。

与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口后,该类要实现接口里面的所有方法和属性,并且接口里面的属性在默认状态下都是public static,所有方法默认情况下是public,一个类可以实现多个接口。

 

20、Error与Exception区别?

  • Error表示系统级的错误和程序不必处理的异常;
  • exception表示需要捕获或者需要程序进行处理的异常。

21、heap和stack

栈(Stack):是限定仅在表尾进行插入或删除操作的线性表,栈的修改是按照后进先出原则进行的,因此栈又称为后进先出的线性表。

  • 在Java中栈驻留在常规RAM(随机访问存储器)区域,可通过“栈指针”获得处理的直接支持。
  • 栈指针若向下移,会创建新的内存;若上移,会释放内存。
  • 这是一种特别快、特别有效的数据保存方式,仅次于寄存器。
  • 创建程序时,Java编辑器必须准确地直到栈内保存的所有数据的“长度”以及“存在时间”。这是由于他必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据保存在堆栈里,如对象的引用、局部变量、形式参数等,但Java对象并不放在其中。

堆(heap):是一种常规用途的内存池(也称RAM区域),其中保存了Java对象。

  • 和栈不同之处在于,堆的存储空间是在程序执行过程中动态分配的,编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长时间。因此,其灵活性更大。
  • 要求创建对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。
  • 当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!

22、anonymous inner class(匿名内部类)是否可以extends其他类,是否可以implements interface?

匿名内部类是没有名字的内部类。不能extends其他类。但一个内部类可以作为一个接口,由另一个内部类实现。

23、HashMap和HashTable

都属于Map接口的类,实现了将唯一键映射到特定的值上。

  • HashMap类,没有分类或者排序。它允许一个null键和多个null值。
  • HashTable:类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因此它是同步的。

24、Collections与Collection

  • Collections是java.util下的类,它包含有各种有关集合操作的静态方法。
  • Collection是java.util下的接口,它是各种集合接口的父接口。

25、assert

断言是一个包含布尔表达式的语句,在执行这个语句时嘉定该表达式为TRUE,如果表达式计算为FALSE,那么系统会报告一个assertionerror。它用于调试的目的。

断言可以有两种:

  • assert Expression1;
  • assert Expression1:Expression2;

Expression1总是产生一个布尔值;

Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String信息。

26、GC是垃圾收集器。

Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面方法之一:

  • System.gc();
  • Runtime.getRuntime().gc();

27、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?有什么区别?

Set集合的元素是不能重复的,那么用iterator()方法来区分重复与否。

equals()方法是判断两个Set是否相等。

equals()方法和==方法决定引用值是否指向同一对象;

equals()在类中被覆盖,当两个分离的对象的内容和类型相配的话,返回真值。

28、数据库部分:

建表的SQL语句

索引是什么,优缺点

表之间的连接分几种?

分组的SQL语句

29、其他:

冒泡排序

30、软件工程:

步骤:

作用:

31、数据库:

二范式:

三范式:

————存储过程和函数的区别

  • 存储过程是用户定义的一系列sql语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程;
  • 函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

————游标的作用?如何知道游标已经到了最后?

游标用于定位结果集的行,通过判断全局变量@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0,表示出错或到了最后。

————触发器分为事前触发和事后触发?有什么区别?语句级触发和行级触发有什么区别?

  • 事前触发器运行于触发时间发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件 新的字段值。
  • 语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

————基本SQL语句

32、面向对象的思想主要包括什么?

继承:子类拥有父类的所有数据和操作

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

多态:一个程序中同名的不同方法共存的情况,有两种形式的多态,重写【父类与子类之间的多态】和重载【同一个类中的多态】。

33、Java中的常量怎么表示?

34、Java多线程,常用的方法,同步关键字?

35、线程安全?怎么做好多线程?

36、JVM加载机制?

37、架构问题

38、Java创建对象的几种方式?

39、什么是事务?为何用事务?

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,
称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才那个成为一个事务。

原子性:事务必须是原子工作单位;对于其数据修改,要么全都执行,要么全都不执行。
    
一致性:事务在完成时,必须使所有的数据都保持一直状态。
    在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
    事务结束时,所有的内部数据结构都必须是正确的。

隔离性:由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。
    事务查看数据时数据所处的状态,要么是另一个并发事务修改它之前的状态,
    要么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性。
    因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

持久性:事务完成之后,他对于系统的影响是永久性的。该修改即使出现故障也将一直保持。

40、面向切面AOP,原理是什么?

41、两个项目之间如何进行通信?

42、简述某设计模型原理?

43、volatile能使一个非原子操作变成原子操作吗?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue面试下载指的是在面试前准备过程中下载一些相关的Vue面试目。以下是对于Vue面试2023下载的回答: 在进行Vue面试时,希望能够提前了解到一些常见的Vue面试,以便更好地准备自己的面试策略和回答技巧。对于Vue面试2023的下载,可以通过以下途径来获取相关的目和答案: 1. 在网上搜索:通过搜索引擎,输入关键词"Vue面试2023下载",可以找到一些相关的网站和资源,可以下载一些Vue面试的PDF或者文档,在准备面试的过程中参考学习。 2. 在技术论坛和社区:一些技术论坛和社区会有一些Vue的讨论区,里面会有一些人分享一些自己准备面试的经验和资料,可以在这些地方提问,查找相关资源。 3. 参考优秀的面试指南:有一些优秀的面试指南会提供一些常见的面试目,以及对应的答案和解析,可以在这些指南中找到一些Vue的面试目。 4. 提问老师和同学:如果你正在参加培训课程或者有老师和同学在学习Vue,可以向他们请教一些往年的Vue面试目,或者是通过共享资料的方式获取相关目。 总之,下载Vue面试目是为了更好地准备面试,提前了解可能会被面试官问到的问,从而提高回答的质量和准确性。但是在复习过程中,不仅要关注理论知识,还要编写代码来巩固和运用所学内容。平时需要多写一些Vue的项目和案例,提高自己的实际操作能力。希望以上回答对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Baymax_wyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值