Java面试题总结

  1. 二分查找要求节点(A)
    A.有序,顺序存储
    B.有序,链接存储
    C.无序,顺序存储
    D.无序,链接存储
  2. 下面关于二分查找的叙述中正确的是(D)
    A.表必须有序,表可以顺序方式存储,也可以链表方式存储
    B.表必须有序且表中数据必须是整型,实型或字符型
    C.表必须有序,而且只能从小到大排列
    D.表必须有序,且表只能以顺序方式存储
    解析:二分查找是一个基础的算法。
    二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组据徐查找;如果大于中间键,就在右子数组中查找,否则,中间间就是要找的元素。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 它的算法要求是必须是顺序存储结构,必须有序排列。
    3. 引入线索二叉树的目的是(A)。
    A. 加速查找节点的前驱或后继节点的速度。
    B. 为了能在二叉树中方便插入和删除
    C. 为了能方便找到双亲
    D. 使二叉树的遍历结果唯一
    解析:什么是线索二叉树?线索二叉树是对二叉链表中空指针的充分利用,使得原本是空指针的转化成在某种遍历的顺序下,指向该节点的前驱和后继。线索就是前驱节点和后继节点的指针,引入线索的目的是加速对二叉树的遍历。
    4. 请简述http协议中get请求和post请求的区别?
    答:get是指从指定的资源请求数据,一般用于获取/查询资源信息,就像数据库查询猜哦用一样,不会修改和影响资源的状态,一般不会产生副作用;
    ①请求可被缓存
    ②请求保留在浏览器历史记录中
    ③请求可被收藏为书签
    ④请求有长度限制;
    post是指向指定的资源提交要被处理的数据,一般用于更新资源信息。
    ①请求不会被缓存
    ②请求不会保留在浏览器历史记录中
    ③请求不能被收藏为书签
    ④请求对数据长度没有长度限制;
    **补充:**Http协议定义了与服务器交互的不同方法,最基本的方法有4种,分别是get、post、put、delete。
    在浏览器中输入网址访问资源一般都是通过get方式;
    URL全称就是资源描述符,可以认为一个URL地址用于描述一个网络上的资源。而HTTP种的get、post、put、delete就对应着这个资源的查、改、增、删四个操作。
    5. 请简述session和cookie的区别?
    ①Session是存储在服务器端的,cookie是存储在客户端的,所以session的安全性要高于cookie.所以,cookie里面的信息可以被盗取,而session自然就会很安全。
    ②session保存是有上限的,服务器存储有限。通常将一些重要的东西放在session里,将一些不太重要的东西放在客户端cookie里。因为,session是存放在服务器里的,所以,session里的东西不断增加会增加服务器的负担。
    ③cookie可以保存我们浏览网页时的信息,记录,session就是在网页需要登陆时,保存我们登陆的信息,下次,使用时,可以直接访问,不用重新登陆。
    6. 请简述Servlet与JSP的关系?
    ①Servelet是java编写的服务器小程序,它的主要功能在于交互式地浏览和修改数据,shengche能够动态Web内容。
    ②JSP属于镶嵌型语言,它将JSP TAG镶嵌到HTML语句中,简化和方便了网页地设计和修改。在JSP中编写静态HTML更加方便。
    7. 写出2个常用的设计模式,并简述应用场景。
    ①设计模式有什么用?
    设计模式是在软件工程实践过程中,程序员们总结出的良好的编程方法。设计模式就是软件开发过程中的设计思路与实现思路,便于后期项目的扩展和研发。
    ②单例模式:
    1)核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
    优点:由于单例模式只有一个实例,减小系统性能开销,当一个对象的产生需要需要比较多的资源时,如读取配置、产生其它依赖对象时,则可以通过在应用启动时直接创建一个单例对象,然后永久驻留内存的方式来解决。
    单例模式可以在系统设置全局访问点,优化环共享资源访问,例如可以设置一个单例类,负责所有数据的映射处理。
    2)应用场景:
    A. windows的Task Manager(任务管理器)就是一个典型的单例模式
    B. windows的Recycle Bin(回收站)也是典型的单例模式,在整个系统运行过程中,回收站一直维护着仅有的一个实例。
    C.在Spring中,每个Bean默认就是单例的,这样做的优点就是Spring容器可以管理。
    D.在servlet编程中,每个servlet也是单例的。
    3)单例模式的实现方式:饿汉式和懒汉式
    饿汉式:线程安全,调用效率高,但是,不能延时加载
    懒汉式:线程安全,调用效率不高,但是,可以延时加载
    ③工厂模式
    1)核心作用:
    提供过度接口,屏蔽过程,提高灵活性
    2)应用场景:
    生成复杂对象的场合,需要引入一个工厂类
    8. HashMap和HashTable的区别?
    HashTable是Dictionary的子类,HashMap是AbstractMap的子类,
    HashMap和HashTable都实现了Map接口,但是在决定用哪个以前要弄清楚它们之间的区别,包括线程安全性,同步,以及速度。
    1) HashTable是线程同步的,HashMapz则不是,这使得HashMap在非线程安全应用中性能更好,因为,非线程同步的对象通常性能比线程同步对象更好。(性能好,体现在什么地方?)
    2) HashTable的键和值不能为空,但是,HashMap的允许一个空键和任何数量的空值。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
    3) HashTable是synchronized的,而HashMap是非synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个HashTable.
    4) HashTable是线程安全的,也是synchronized,所以,在单线程环境下它比HashMap要慢。所以,如果线程不需要同步,且只需要单一线程,那么使用HashMap性能要好过HashTable。
    5) HashMap不能保证随着时间的推移Map中元素次序是不变的。
    6)但HashMap的同步问题可通过Collections的一个静态方法得到解决
    9. int和integer的区别?
    1) Integer是int的包装类,int则是java的一种基本数据类型
    2) Integer变量必须实例化后才能使用,而int变量不需要
    3) Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
    4) Integer的默认值是null,int的默认值是0
    Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)
    10. 视图是一个“虚表”,视图的构造基于(A)
    A.基本表
    B.视图
    C.基本表或视图
    D.数据字典
    **解析:**MySQL内容。
    视图保存的并不是真实的数据,而是一张虚拟的表,不占用内存空间。
    什么是视图?就是一条SELECT语句执行后返回的结果集。所以,我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
    视图的特性:视图是对若干张基本表的引用,一章虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟基本表一样,进行增删查改操作;
    视图的作用: 1)提高重用性,就像一个函数 2)对数据库重构,确不影响程序的运行 3)提高了安全性能,可以对不同的用户 4)让数据更加清晰。
    11. 下列选项中,降低进程优先级的合理时机是( A)。
    A.进程的时间片用完
    B.进程刚完成I/O,进入就绪队列
    C.进程长期处于就绪队列中
    D.进程从就绪状态转为运行态
    解析:本题目考查进程的基本状态转换。完成I/O进入就绪队列的进程尚未执行,不能降低其优先级;长期处于就绪队列的进程应提高其优先级;进程刚刚转入运行态,也不应降低其优先级;当进程的时间片用完,调度程序需要调度其他程序进入处理机执行,此时降低进程优先级是合理的。因此应该选A。

后续更新……….

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值