java初学者面试题牛刀小试
来源:互联网 发布:c语言怎么定义数组 编辑:程序博客网 时间:2024/06/07 10:39
今天在掘金看到一篇关于讲解的Spring框架的文章,文章提到了牛客网的面试题。于是乎我就下载了牛客网app,发现面试题目很丰富。我就挑了java方面的面试题做了一下。10个题目为一组面试题,做完后,我发现了自己错了好多,大多数都是基础题。俗话说:基础的深度决定未来的高度。我感觉自己必须要做一个错题的归纳和总结,把之前学习java过程中遗漏的知识点重新回顾一遍,正好借这一次机会。同时我也觉得理论知识也是非常重要的,理论左右着思想,支撑着代码的质量。
错题归纳
第1题
下面java类描述正确的是()
- A一个类中至少有一个构造方法
- B构造方法的返回类型必须是void
- C构造方法的可见性修饰符必须是public
- D构造方法必须显式定义
- 正确答案:A
- 归纳:
- 1.方法名必须要跟类名相同
- 2.不要声明返回类型
- 3.构造方法可以被final,private所修饰
- 4.一个类中至少有一个构造方法
- 5.当类中没有提供有参的构造方法,Java默认调用无参的构造方法
第2题
子类要调用继承自父类的方法,必须是用super关键字()
- 归纳:
A正确 B错误
- 1.只要在重写Override父类的方法中,子类调用继承于父类的方法时候才会使用到super关键字
- 2.子类调用继承于父类的方法,不需要使用super关键字,直接调用即可。
第3题
下面方法中输入为2时,返回值是多少()
public static int getValue(int i){
- int result =0;
- switch(i){
- case 1:
- result = result +1;
- case 2:
- result = result+i*2;
- case 3:
- result = result +i*3;
- }
- return result;
}
这个题目不仔细看很容易出错,以为很简单肯定是4。其实正确的答案是10,因为缺少break;不能跳出。
归纳:- 当switch结构中没有break的话,匹配到合适的值,是不会跳出的。它会一直匹配到最后一个case,直到整个结构结束。
第4题
static String str0="0123456789":
static String str1="0123456789":
- string String str2 = str1.substring(5);
- String str3= new String (str2);
- String str4= new String (str3.toCharArray());
- 假设str0....str4之后序的代码都是只读应用,java7中,以上述代码为基础,在发生过一次FullGC后,上述代码在heap空间(不包括PemGen)保留的字符数为()
归纳:
- 首先字符串调用substring()方法获得一个从当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串, 但不包含end处所对应的字符。
- 垃圾回收主要针对的是堆区内存的回收,因为栈区的内存随着线程而释放。堆区分为3个区:年轻代,年老代,永久代(方法区)。
- 年轻代: 通过new运算符创建的对象通常被分配在年轻代。过一定的Minor GC(Minor GC是针对年轻代内存的垃圾回收器)还存活的对象被移动到年老代。
- 年老代: 就是从年轻代移动过来的和一些比较大的对象。Full GC是针对年老代的垃圾回收器。
- 永久代: 存储着被final修饰的常量,static变量,常量池。
解答:
首先str0,str1是静态常量,存储在堆内存的永久代。str2也是新的一个对象,因为substring的源码中其实也是new一个String对象并且返回,str3和str4直接通过new运算符创建出的新对象。str2,str3,str4是存储在堆区的年轻代。经过Full GC后,年老代的内存被清理回收。不算永久代的话,只剩下年轻代。那么年轻代5*3=15个字符数
第5题
要是一个类可以被同包中的其他类访问但不能被不同包的外类访问,可以怎么做()
A让该类不使用任何关键字
B使用private关键字
C使用Protected关键字
D使用void关键字
- 归纳:
正确答案 A
- default包和protected的区别:前者只要是外部包,就拒绝访问。后者只要是子类就能访问,即时子类在外部包。
第6题
void waitForSignal(){
- Object obj = new Object();
- synchronized(Thread.currentThread()){
- obj. wait();
- obj.notify();
- }
- 归纳:
}
- wait()和notify()是对象的方法,而sleep是Thread类的方法。
- wait()和sleep()都会抛出InterruptedException,必须要进行异常捕获。
- 调用wait()和notify()必须采用当前锁调用,即必须采用Synchronized中的对象。
第7题
下面哪段程序能够正确的实现GBK编码字节流到UTF-8编码字节流的转换:
- 解答:
byte[] src,dst;
解答:
dst=new String(src,"GBK").getBytes("UTF-8");
归纳:- 先通过new String(src,"GBK")还原成一个字符串对象,在调用字符串对象的getBytes("UTF-8")得到UTF-8编码的字节数组
第8题
下面有关servlet的层级结构和常用的类,说法正确的是()
A GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet
B 大多数Servlet通过从GenericServlet或HtppServlet类进行扩展来实现
C ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet的配置信息对象
D HttpServletRequest接口扩展ServletRequest接口,为Http Servlet提供HTTP请求信息
- 归纳:
正确答案 :ABCD
- GenericServlet是一个抽象类,必须给出子类才能实例化。它给出了设计Servlet的一些骨架,定义了Servlet生命周期,还有一些得到名字,配置,初始化参数的方法。
- HttpServlet是GenericServlet的子类,还添加了 doGet , doPost , doDetele , doTrace等方法处理http协议里的命令的请求响应过程。
- 大多数Servlet通过GenericServlet或者是HttpServlet类进行扩展实现。
- ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得到配置信息的对象。
- HttpServletRequest接口扩展了ServletRequest接口,为HttpServlet提供HTTP请求信息。
第9题
下面三条语句:
System.out.println("is"+100+5);
System.out.println(100+5+"is");
- System.out.println("is"+(1000+5)); 的输出结果分别是()
- A is 1005, 1005 is,is 1005
- B is 105, 105 is , is 105
- C is 1005, 1005 is, is 105
- D is 1005, 105 is, is 105
- 归纳:
- Java里不允许程序员进行运算符的重载。如果"+"之前是字符串,则视为连接字符串。如果"+"之前是字符串,"+"之后是基本数据类型,那么还是视为连接。如果"+"之前是基本数据类型,那么视为加法运算。如果"+"之后是引用类型变量的话,则会调用该对象的toString()方法
第10题
——技术是一种可以使音频、视频和其他多媒体信息在Internet和intranet上以实时的,无需下载等待的方式进行播放的技术。
- A 流媒体
- B 多媒体
- C 复合媒体
- D 音频媒体
- 归纳:
- 流媒体是一种可以使音频,视频和其他多媒体信息在Internet以及Intranet(企业内部网络)上实现的,无需下载等待的方式进行播放的技术。
尾言
坚持每天把一些遗漏的基础知识点温故而知新。
- java初学者面试题牛刀小试
- 有关与java初学者的面试题
- Java面试题-朋友的面试题
- java 阿里面试题 百度面试题 CVTE面试题
- 牛刀小试 - 详解Java多线程
- Java RMI 之牛刀小试
- Kafka Java 牛刀小试
- Java面试题集
- JAVA面试题
- Java面试题集
- Java 面试题
- JAVA面试题集
- java面试题1
- JAVA华为面试题
- java常用面试题
- java面试题
- JAVA面试题集
- JAVA面试题集
- 写在卷首的--CSDN的第一篇博客
- Apache ActiveMQ
- iOS 11降系统到iOS 10,苹果刷机图文教程
- STM32F103外部晶振由8M变为12M
- iOS算法总结-回顾
- java初学者面试题牛刀小试
- ServiceComb中的数据最终一致性方案
- Python变量与数据类型(1)
- 简述不能在IntelliJ IDEA创建类
- 15.7 随时间变化的实例
- JDBC实现增删改查功能
- PHP中new self()和new static()的区别
- linux:fork()函数
- 653. Two Sum IV