JAVA 牛客与领扣学习第一周期

一、专项练习

1.

答案解析:

 

答案解析:

 

 

答案解析:

构造方法每次都是构造出新的对象,不存在多个线程同时读写同一对象中的属性的问题,所以不需要同步 。
如果父类中的某个方法使用了 synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上 synchronized关键字才可。当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了。          接口里面的变量为常量,其实际是 public static final ;接口里面的方法为抽象方法,其实际是public abstract。            容器保存的是对象的引用 而非对象本身。

答案解析:

C直接继承自A,obj的实际类型为D,和C没有关系。所以obj instanceof C 输出false。

答案解析:

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。(简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理)中间件位于操作系统之上,应用软件之下,而不是操作系统内核中。

中间件特点的描述:

1. 中间件应支持标准的协议和接口

2. 中间件可运行于多种硬件和操作系统平台上

3. 跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互

答案解析:

既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。

类的加载包括:加载,验证,准备,解析,初始化。

答案解析:

匿名内部类的创建格式为: new 父类构造器(参数列表)|实现接口(){

                                             //匿名内部类的类体实现

                                        }

由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器。

答案解析:

实际上这道题考查的是两同两小一大原则:

方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

答案解析:

设为x进制,用十进制表示方法13就是1*x^1+3*x^0=x+3

(3+x)*(4+x)=2x^2+4————》x=8/x=-1;

答案解析:

首先Map,SortedMap是接口,不能直接实例化,不能直接new创建对象。

基于哈希表的Map结构值和键都可以为空,但是键只能一次为空.

基于红黑树的Map结构,键不可以为空,值可以为空.

基于线程安全的Map结构中,键和值都不能为空.

 

二、编程题

class Solution {
    public int balancedStringSplit(String s) {
        int count = 0;
        int group = 0;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)=='L'){
                count++;
            }
            if(s.charAt(i)=='R'){
                count--;
            }
            if(count==0){
                group++;
            }
        }
        return group;
    }
}

 

class Solution {
public int findMagicIndex(int[] nums) {
        for(int i=0;i<nums.length;i++){
            if(nums[i]==i)
                return i;
        }
        return -1;
    }
}

 

class Solution {
    public int[] replaceElements(int[] arr) {
        int rightMax = arr[arr.length - 1];
        arr[arr.length - 1] = -1;
        for (int i = arr.length - 2; i >= 0; i--) {
            int t = arr[i];
            arr[i] = rightMax;
            if (t > rightMax)
                rightMax = t;
        }
        return arr;
    }
}

 

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
class Solution {
    public List<List<Integer>> pairSums(int[] nums, int target) {
        Arrays.sort(nums);
        int start=0,end=nums.length-1;
        List<List<Integer>> number=new ArrayList<>();
        while(start<end){
            if(nums[start]+nums[end]==target){
                List<Integer> list=new ArrayList<>();
                list.add(nums[start]);
                list.add(nums[end]);
                number.add(list);
                start++;
                end--;
            }
            else if(nums[start]+nums[end]<target)
                start++;
            else
                end--;
        }
    return number;
    }
}

【思路】

先排序,再使用两个指针start和end指向数组的头部和尾部
若nums[start] + nums[end] < target,则start++
若nums[start] + nums[end] > target,则end--
若nums[start] + nums[end] == target,则符合条件,加入list.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值