• 测试开发面试题集锦_java


    1. 进程和线程的概念、及区别
    2.       进程的概念:进程是表示资源分配的基本单位,又是调度运行的基本单位。
            线程的概念:线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性

                    定义:

                           进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。

                           线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;
                 
                    

                   线程与进程的区别:

                  a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

                  b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

                  c.调度和切换:线程上下文切换比进程上下文切换要快得多。

                  d.在多线程OS中,进程不是一个可执行的实体。

         2.Java基础类型

                 8种  : int、 short  、long、byte、float、double、boolean、char

        3.equals和==区别

               java基本类型的变量存储在栈中

               引用类型变量存储在栈中,其本身的值存在堆中

                ==比较的是变量的地址是否相等

                equals比较的是内容是否相等。object中equals方法也是用==实现,String类库中重写了equals方法

                

       4.Java封装特性

                 是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留           一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。

                优点:

                     良好的封装能够减少耦合。

                     类内部的结构可以自由修改。

                     可以对成员进行更精确的控制。

                     隐藏信息,实现细节。

        5.重写和重载的区别

              重写: 子类对父类允许访问的方法的实现过程进行重新编写,返回类型和形参都不可改变。

                        

            重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

            重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时                        候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。

              方法的重写规则

        • 参数列表必须完全与被重写方法的相同;
        • 返回类型必须完全与被重写方法的返回类型相同;
        • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
        • 父类的成员方法只能被它的子类重写。
        • 声明为final的方法不能被重写。
        • 声明为static的方法不能被重写,但是能够被再次声明。
        • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
        • 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
        • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
        • 构造方法不能被重写。
        • 如果不能继承一个方法,则不能重写这个方法。

          

    重载(Overload)

    重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

    每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

     

    重载规则

        • 被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
        • 被重载的方法可以改变返回类型;
        • 被重载的方法可以改变访问修饰符;
        • 被重载的方法可以声明新的或更广的检查异常;
        • 方法能够在同一个类中或者在一个子类中被重载。
        • 无法以返回值类型作为重载函数的区分标准

    6.error和异常区别及处理方式

         error

          7、抽象类的概念

         8、set、list、map 特点及区别

        9、mybatis 如何将timestamp转换成date

        10、对象A。equals(b), a、b 能同时放在set里吗

               思路: 先确定equals是否被重写,如果重写则是“可能是地址相等”、可能是值相等;则肯定不能放到set里

                            如果没有被重写, 那么a、b内存地址相等;

             扩展:可能会要求重写equals方法

                                   重写需遵循的原则如下

                                     1. 自反性:对于任意的引用值x,x.equals(x)一定为true。 

    2. 对称性:对于任意的引用值x 和 y,当x.equals(y)返回true时, 
      y.equals(x)也一定返回true。 
    3. 传递性:对于任意的引用值x、y和z,如果x.equals(y)返回true, 
      并且y.equals(z)也返回true,那么x.equals(z)也一定返回true。 
    4. 一致性:对于任意的引用值x 和 y,如果用于equals比较的对象信息没有被修 
      改,多次调用x.equals(y)要么一致地返回true,要么一致地返回false。 
    5. 非空性:对于任意的非空引用值x,x.equals(null)一定返回false。 

        11、web。xml怎么设置了哪些内容

         12、54张扑克牌,随机抽取5张,判断是否是同花顺,大小王可以替代任一一张牌

         13、service里调用加事物的service,事物会失效吗

    使用的服务器是什么,为什么用这个

    如何处理大并发 

        1、使用缓存,提高查询效率(ps:redis)

        2、使用远程调用(rpc)中间件(ps:double,jsf):等是系统可以服务化、集群化部署。基于tcp通信、连接池技术、较传统http、webserver效率更高

        3、使用集群,多个tomcat,多个节点。用ngnix负载均衡(轮询或者随机机制)

        4、页面限流:根据性能测试结果设置页面最大访问量(如何获取最大访问量可使用页面埋点),超过最大访问量的请求跳转到等待页面(ps:双十一淘宝秒杀)

        5、防止页面被刷情况下的大访问量,设置一个ip规定时间内的访问量上线

    hbase怎么设计数据的有效期

    所负责的项目的系统架构:

       从以下几个方面回答

       1、db(mysql,hbase,redis)

       2、系统间的交互(mq,jsf,rest)

       3、 应用部署方面:tomcat(免费,轻便,性能合适),ngnix

    https协议

    1. get和post区别
        •    get用于获取和查询资源,post用户修改资源。
        •    get请求的数据放在url?后,多数据用&隔开;post请求的数据放在http请求的包体的中(form表单)
        •    get请求不的浏览器对url长度有限制,导致get请  求参数的长度限制;post请求的数据限制主要在于操作系统的处理能力
        •    post请求的安全性高与get请求
    1. cookie和seesion概念及区别

                               cookie机制采用在客户端保持状态的机制;seesion采用在服务端保持状态的机制 ,但需要在服务端有相应的标志,需借助cookie或者其他机制(表单隐藏字段,重                                   写url)来  保持       

                               安全性cookie不如seesion,用户可以分析本地cookie进行cookie欺骗

                              性能方面:seesion,当访问量增多会占用服务器性能。

    1. tcp和udp概念及优缺点
    2.             TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
      1. TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
      2. TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
      3. TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
      4. TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
      5. TCP面向的是字节流的服务,UDP面向的是报文的服务。
    3. url解析过程        
  • 相关阅读:
    Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件
    详解log4j2(上)
    循序渐进之Spring AOP(6)
    循序渐进之Spring AOP(5)
    循序渐进之Spring AOP(3)
    循序渐进之Spring AOP(4)
    循序渐进之Spring AOP(2)
    循序渐进之Spring AOP(1)
    通俗的解释JAVA wait/notify机制
    开发高性能JAVA应用程序基础(内存篇)
  • 原文地址:https://www.cnblogs.com/beilai/p/6824721.html
Copyright © 2020-2023  润新知