小曾带你刷牛客01(Java版本)


通过学习了之前的Java基础内容,我们主要是掌握了一些理论知识,秉持着实践是检验学习好坏的标准,小曾带你们一起在牛客网刷题,一起过五关斩六将!

如果想回顾一些基础内容,直接点击下面文章即可!
用修真来打开Java学习模式,入内不亏!
硬核干货!Java修真之练气筑基篇(持续更新)
干货满满!Java修真之修炼斗技–入门面向对象

题目1

定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new String(“uml”);那么,s1==s2;s3 == s4;s1.equals(s3); 判断正确与否
A:T,F,T
B:F,T,F

考查知识点:String类创建的对象在JVM中的内存分配和“equals”与“==”的区别
==:比较两个引用的地址
equals:比较两个引用的
在这里插入图片描述

s1==s2,比较的是比较的是地址和值,由上图得知两个引用指向的是同一个地址,所以返回true
s3 == s4,比较的是两个new出来开辟的空间对象地址,所以值相同,但地址不同,返回false.
s1.equals(s3),比较的是内容,返回true

题目2

如果一个接口Cow有个方法drink(),有个类Calf实现接口Cow,则在类Calf中正确的是? ( )
A:void drink() { …}
B:protected void drink() { …}
C:public void drink() { …}
D:以上语句都可以用在类Calf中

考查知识点:接口的性质

子类重写父类方法时,方法的访问权限不能小于原访问权限,在接口中,方法的默认权限就是public,所以子类重写后只能是public

题目3

顺序执行下列程序语句后,则b的值是()
String a=“Hello”;
String b=a.substring(0,2);

A:Hello
B:Hel
C:He
D:null

考查知识点:substring()方法的性质

参数:beginIndex - 起始索引(包括);endIndex - 结束索引(不包括);返回:指定的子字符串
public String substring(int beginIndex, int endIndex)

因此:substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。

题目4

计算机所能处理的最小的数据项称为()
A:位
B:字节
C:字
D:双字

1双字=2字=4字节=32位

记住之间关系即可

题目5

执行如下程序,输出结果是( )

class Test
{
     private int data;
     int result = 0;
     public void m()
     {
         result += 2;
         data += 2;
         System.out.print(result + "  " + data);
     }
 }
 class ThreadExample extends Thread
 {
     private Test mv;
     public ThreadExample(Test mv)
     {
         this.mv = mv;
     }
     public void run()
     {
         synchronized(mv)
         {
             mv.m();
         }
     }
 }
 class ThreadTest
 {
     public static void main(String args[])
     {
         Test mv = new Test();
         Thread t1 = new ThreadExample(mv);
         Thread t2 = new ThreadExample(mv);
         Thread t3 = new ThreadExample(mv);
         t1.start();
         t2.start();
         t3.start();
     }
 }

A:0 22 44 6
B:2 42 42 4
C:2 24 46 6
D:4 44 46 6

主要是分析代码流程:t1、t2、t3线程依次执行
Test mv =newTest()声明并初始化对data赋默认值
t1,t2,t3线程使用同一个对象mv
使用synchronized关键字加同步锁线程依次操作m()
t1.start();使得result=2,data=2,输出即为2 2
t2.start();使得result=4,data=4,输出即为4 4
t3.start();使得result=6,data=6,输出即为6 6
System.out.print(result +" "+ data);是print()方法不会换行,输出结果为2 24 46 6

题目6

DBMS 中实现事务持久性的子系统是()
A:安全性管理子系统
B:完整性管理子系统
C:并发控制子系统
D:恢复管理子系统

主要考察数据库DBMS的四个性质
原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现);
一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务);
隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现);
持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者出异常,都不会影响已提交的事务(由DBMS的恢复管理子系统实现的)

题目7

URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,则返回______。

A:http://www.123.com
B:””
C:null
D:抛出异常

在执行URL u =new URL(“http://www.123.com”);这句话的时候确实要抛出异常,但是这个异常属于IOException,不管网址是否存在,最后都会返回该网址的一个连接,打印出来就是该网址。

题目8

单例模式中,两个基本要点是
A:构造函数私有
B:静态工厂方法
C:以上都不对
D:唯一实例

下面来介绍一下什么是单例模式?
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

特点
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。

应用实例
1、一个班级只有一个班主任。
2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。
3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

优点
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例)。
2、避免对资源的多重占用(比如写文件操作)

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

使用场景
1、要求生产唯一序列号。
2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

单例模式有分为饿汉式懒汉式

//懒汉式单例类.在第一次调用的时候实例化自己 
public class Singleton {
    private Singleton() {}
    private static Singleton single=null;
    //静态工厂方法 
    public static Singleton getInstance() {
         if (single == null) {  
             single = new Singleton();
         }  
        return single;
    }
}

//饿汉式单例类.在类初始化时,已经自行实例化 
public class Singleton1 {
    private Singleton1() {}
    private static final Singleton1 single = new Singleton1();
    //静态工厂方法 
    public static Singleton1 getInstance() {
        return single;
    }

题目9

哪个正确?
A:abstract类只能用来派生子类,不能用来创建abstract类的对象。
B:final类不但可以用来派生子类,也可以用来创建final类的对象。
C:abstract不能与final同时修饰一个类。
D:abstract类定义中可以没有abstract方法。

补充知识点:
A,抽象类和接口都不可以实例化。
B,final类不能被继承。
C,abstract不能和final共用修饰类。
D,抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。
注意:abstract是用来修饰类和方法的:
1. 修饰方法:abstract不能和private、final、static共用。
2. 修饰外部类:abstract不能和final、static共用。(外部类的访问修饰符只能是默认和public)
3. 修饰内部类:abstract不能和final共用。(内部类四种访问修饰符都可以修饰)

题目10

下列不是 Java 关键字的是 ( )

A:abstract
B:false
C:native
D:sizeof

这个题目看起来是比较简单,但是我还是做错了,现在补充一下
native 用来声明一个方法是由计算机相关语言(如c/c++/FORTRAN)实现的。

现在补一张最完整的图片,可以帮助小伙伴们回顾一下关键字。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36317312/article/details/120183548