答题与解题

Java SE十道选择题

1、main方法是 Java Application程序执行的入口点,以下描述正确的是()
A、public void static main()
B、public static void main(String args[])
c、public static int main(String [] arg)
D、public void main(String arg[])

解题:java中的main方法,必须满足方法名是main,是public static void 类型的,接受一个字符串数组的参数

2、以下关于java封装的描述中,正确的是:()
A、封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性
B、封装的意义不大,因此在编码中尽量不要使用
C、如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用
D、只能对一个类中的方法进行封装,不能对属性进行封装

解题:封装就是将属性私有化提供公开的方法访问私有属性

3、下面有关final,finally,finalize的区别描述错误的是?
A、如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承
B、如果一个方法被声明为final,可以被覆盖
C、finally再异常处理时提供finally块来执行任何清楚操作
D、java使用finalize()方法在垃圾收集器象从内存中清楚出去之前做必要的清理工作

解题:final关键字用来修饰属性,类,方法,修饰类该类不能被继承,修饰方法则该方法不能被重写,修饰属性则该属性为常量

4、导出类调用基类的构造器必须用到的关键字:()
A、this
B、final
C、super
D、static

解题:这里大家可能迷惑的一点是什么是导出类和基类,导出类就是父类,基类就是子类,所以答案一目了然。

5、对于一个已经不被任何变量引用的对象,当垃圾回收器准备回收该对象所占有的内存时,将自动调用该对象的哪个方法()
A、finalize()
B、notify
C、notifyAll
D、hashCode

解题:对照第三题得出答案,这个关键字就是垃圾回收器一种调用方法

6、面向对象的基本特征不包括()
A、继承
B、多态
C、封装
D、重载

解题:根据面向对象语言的概念知道,有三大特征分别是封装、继承、多态

7、下面哪个方法跟Applet的显示无关()
A、draw
B、paint
C、repaint
D、update

解题:首先说明一点这个技术是90年代比较老,但是出来还是要做的,对于Applet显示相关的方法有主要的3个:
1、paint(Graphicsg)方法,具体执行Applet的绘制
2、update(Graphicsg)方法,主要用于更新Applet的绘制
3、repaint()方法,主要用于Applet的重新显示,它调用update()方法实现对Applet的更新

8、对Collection和Collections描述正确的是()
A、Collection是java.util下的类,它包含有各种有关集合操作的静态方法
B、Collections是java.util下的接口,它是各种集合结构的父接口
C、Collection是java.util下的接口,它是各种集合结构的父接口
D、Collections是java.util下的类,它包含有各种有关集合操作的静态方法

解题:java.util.Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。
java.util.Collections是一个包装类。它包含有各种有关集合操作的静态方法,此类不能实例化,就好比是一个工具类

9、JDK提供的用于开发编程的同步器有哪些?
A、Semaphore
B、CyclicBarrier
C、CountDownLatch
D、Counter

解题:java并发库的Semaphore可以轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acqurie()获取一个许可,如果没有就等待,而release()释放一个许可
CyclicBarrier主要方法就是一个:await(),该方每被调用一次,计数便会减少1,并且阻塞当前线程,当计数减到0时,阻塞解除
CountDownLatch指CountDownLatch.await()方法在倒计数为0之前会阻塞当前线程

10、java时一门支持反射的语言,基于反射为java提供了丰富的动态性支持,下面关于java反射的描述,哪些时错误的()
A、java反射主要通过涉及的类如Class,Method,Flied等,它们都在Java.lang.reflect包下
B、通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法
C、通过反射,可以突破java语言提供的对象成员,类成员的保护机制,访问一般方式不能访问的成员
D、java反射机制提供了字节码修改技术,可以动态的修建一个类
E、java的反射机制会给内存带来额外的开销,例如对永生堆的要求比不通过反射要求的更多
F、java反射机制一般会带来效率问题,效率问题主要发生在查找类的方法和字段对象,因此通过缓存需要反射类的字段和方法就i能达到与之间调用类的方法和访问修饰符的字段一样的效果

答案:BABCA---DACD(ADF)

java 数组五道题

1、下面哪项是数组优于链表的特点?
A、方便删除
B、方便插入
C、长度可变
D、存储空间小

解题:这道题区别数组和链表的优缺点,很明显ABC链表更适合,而数组没有像链表那样有指针所以占的存储空间小

2、关于顺序表叙述,正确的是:()
A、不可随机访问任意节点
B、插入需要移动元素
C、删除不需要移动元素
D、存储空间可以离散分布

解题:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元一次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中。即通过数据物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。

3、向一个长度为n的向量第i个元素之前插入一个元素,则这个元素之后要移动()元素
A、n-1
B、n-i+1
C、n-i-1
D、i

解题:代入一个i=n值进行计算

4、假设存储一个数据集,数据维持有序,对其的操作只有插入和删除和顺序遍历,综合存储效率和运行速度,下列哪种数据结构适合?
A、数组
B、链表
C、哈希表
D、队列

解题:数组可以实现顺序遍历但是插入删除操作复杂,平均移动n/2个元素,链表因为存储的地址不连续,可以实现顺序遍历,哈希表是随机存储,所以是离散分布,顺序遍历实现不了,队列只可以在队尾插入对头删除,不满足条件

5、下列数据结构具有记忆功能的是?
A、队列
B、循环队列
C、栈
D、顺序表

解题:栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端为栈顶,不允许插入与删除的另一端为栈底,栈是按照“先进后出”或者“后进先出”组织数据,栈具有记忆作用

Java数组编程题

给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。
示例1:
输入: [[1,1,0],[1,0,1],[0,0,0]]
输出: [[1,0,0],[0,1,0],[1,1,1]]
解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
示例 2:
输入: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释: 首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]]; 然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]

解答:翻转和反转同步执行:首先遍历交错数组中的每一个数组然后遍历数组中的每一个数,在遍历时采用倒序遍历,储存进数组时采用正序这样就实现了翻转,将数字传入分支传入1则反转为0,传入0则反转为1.

class Solution {
    public int[][] flipAndInvertImage(int[][] A) {
    for(int i = 0; i < A.length; i++){
            int left = 0; 
            int right = A[0].length-1;
            while(left < right){
                int temp = A[i][left];
                A[i][left] = 1 - A[i][right];
                A[i][right] = 1 - temp;
                left++;
                right--;
            }
            if(left == right) A[i][left] = 1 - A[i][left];
        }
        return A;
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一种流行的集成开发环境(IDE),用于开发基于Android平台的应用程序。在这种环境下,我们可以设计和实现一个在线答题App,并为其编写源码。 在线答题App的设计和实现源码主要包括以下几个方面的内容: 1. 用户界面设计:使用Android Studio的布局编辑器可以设计各种界面,例如主页面、题目页面和答题结果页面。可以选择适合的布局类型和控件,为用户提供良好的用户体验。 2. 数据库设计:为了存储题目和答题结果,我们需要设计一个数据库。使用Android Studio的SQLite数据库工具可以创建相应的表格,并为每道题目和每个用户的答题结果分配相应的字段。 3. 答题逻辑实现:为了实现答题功能,我们需要编写相应的代码。通过请求数据库获取题目内容和选项,并与用户互动,记录用户选择的答案。同时,还要实现正确答案的判断,并计算用户得分。 4. 答题结果展示:在用户答题完成后,需要将用户的答题结果展示给用户。我们可以使用适当的界面和控件来展示用户的得分、答对的题目数量等信息。 在Android Studio中,我们可以通过使用Java或Kotlin编写代码来实现上述功能。可以在项目的适当位置使用注释来解释代码的用途和实现思路,以方便后续修改和维护。 总而言之,使用Android Studio的在线答题App设计和实现源码主要包括用户界面设计、数据库设计、答题逻辑实现和答题结果展示等方面。通过合理的设计和实现,可以创建一个功能完善的在线答题应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值