1、下面哪些是Thread类的方法(A B D)
A、start() B、run() C、exit() D、getPriority()
解析:
A、start():使该线程开始执行,Java虚拟机调用该线程的run方法。
B、run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作写在此方法中。
C、exit():是System类的方法,如System.exit(0)。
D、getPriority():返回线程的优先级。
更详细的可以看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/
2、下面关于java.lang.Exception类的说法正确的是(A)
A、继承自Throwable B、Serialable C D、不记得,反正不正确
解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException
3、String是基本数据类型吗?(B)
A、是 B、不是
解析:String不是基本数据类型,而是一个类(class),属于引用类型,是Java编程语言中的字符串。Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
4、下列说法正确的有(C)
A、class中的constructor不可省略 B、constructor必须与class同名,但方法不能与class 同名
C、constructor在一个对象被new时执行 D、一个class只能定义一个constructor
解析:
class中的constructor不可省略 //省略,系统会提供默认的无参构造函数
constructor必须与class同名,但方法不能与class同名 // 方法也可以的,带返回值就好
constructor在一个对象被new 时执行 // 正确
一个class只能定义一个constructor // 可以重载
5、以下for循环的执行次数是:(D) for(int x =0;y=0;(y!=0)&& (x<4);x++)
A 、无限次 B、执行4次 C、执行3次 D、一次也不执行
解析:y初始值为0,在整个for循环中,y的值不变,故判断语句中的(y!=0)不成立,故一次也不执行。
6、以下哪些情况可以终止当前线程的运行?(A)
A、抛出一个异常时。 B、当该线程调用sleep()方法时。
C、当创立一个新线程时。(与当前进程无关) D、当一个优先级高的线程进入就绪状态时。
解析:
A、当抛出一个异常后程序会结束,所以线程也会被终止
B、sleep方法阻塞一个线程并不会终止
C、创建一个新的线程时也不会终止另一个线程
D、优先极高的并不一定会马上执行。
7、下面哪些为构造的特性定义(D)
A、在类中声明构造函数时,名称应该与类名相同
B、具有重载特性,可以建立多个相同的名称
C、使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行分配
D、以上都是
8、关于异常处理机制的表达哪些正确(C)
A、catch局部捕捉到异常情况时,才会执行finally局部(无论是否有毛病,都执行)
B、当try区段的程序发生异常时,才会执行catch区段的程序
C、不管程序是否发生错误及捕捉到异常情况,都会执行finally局部
D、以上都是
9、以下关于接口的表达中哪些是正确的(AB)
A、接口中的数据必须设定初值(就是接口中的常量)
B、接口中的方法都是方法
C、接口可以声明引用
D、以上都正确
10、执行如下程序代码后,C的值是( C )
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
A、0 B、1 C、-1 D、死循环
解析:do-while循环的特点是先执行后判断,所以代码先执行--c操作,得到c为-1,之后执行a=a-1的操作,得到a为-1,然后判断a是否大于0,判断条件不成立,退出循环,输出c为-1。
11、关系数据库规范化是为解决关系数据库中(A)的问题而引入的
A 、减少数据操作的复杂性
B、提高查询速度
C、插入异常,删除异常和数据冗余
D、保证数据的安全性和完整性
解析:关系数据库进行规范化的目地:使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。关系模式进行规范化的原则:遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。 关系模式进行规范化的方法:将关系模式投影分解成两个或两个以上的关系模式
12、关于SQL优化,以下说明哪个是错误的(B)
A、类似分页功能的SQL,建议先用主键关联,然后返回结果集,效率会高很多
B、通常情况下,join的性能比较差,建议改造成子查询写法
C、多表联接查询时,关联字段类型尽量一致,并且都要有索引
D、尽可能不使用TEXT/BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一起,避免SELECT*的时候性能太差
13、下列哪些语句关于内存回收的说法是正确的(B )
A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象
解析:
A:有GC线程,无需创建
C:java当中,内存的回收由GC完成,程序员不能直接释放内存,只能通过System.gc()提醒GC进行垃圾回收,GC不一定会回收
D;只能System.gc()提醒,不能指定时间
14、继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行父类和子类的初始化加载呢?请阅读代码选择出该段代码的输入结果。(C)
public class Test{
public static void main(String[] args){
System.out.print(B c);
}
}
class A{
public static String c ="C";
static{
System.out.print("A");
}
}
class B extends A{
static{
System.out.print("B");
}
}
A、BAC B、BAC C、AC D、C E、BC
15、mysql表业务如储蓄所有多个储户,储户在多个储户所存取款,储蓄所与储户之间的表关系是(A)
A、多对多的联系 B、一对多的联系 C、一对一的联系 D、多对一的联系
16、下列代码输出结果是(B)int i =10;
while
(i>0){i=i+1;
if(i==10){
break;}
}
A、while循环执行10次 B、死循环 C、循环一次都不执行 D、循环执行一次
17、单选题:有如下一段代码,请选择其运行结果(D)
public class StringDemo {
private static final String MESSAGE="abcd";
public static void main(String args){
String a="ab"+"cd";
String b="ab”;
String c="cd";
System.out.println(a==MESSAGE);
System.out.println((b+c)==MESSAGE);
}
}
A、true true B、false false C、false true D、true false
解析:
要注意两个问题:
1,字符串在java中存储在字符串常量区中
2,==判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法
首先判断a==MESSAGE 同一份字符串常量在内存中只有一份,因此是同一地址,返回true
再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false
18、下列说法正确的是( BD)
A、我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程
B、一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源
C、synchronized可以解决可见性问题,volatile可以解决原子性问题
D、ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的
解析:
A选项错在调用Thread的run方法不会抛出异常。
C选项,synchronized很强大,既可以保证可见性,又可以保证原子性,而volatile不能保证原子性!
D选项,ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
19、String a = new String(“1+2”)最终创建了几个对象(B)
A、1 B、2 C、3 D、4
20、如下代码,输出结果是什么?(D)
public class Test{
public int aMethod(){
static int i=0;
i++;
return i;
}
public static void main(String args[]){
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}
A、0 B、1 C 、2 D、编译失败
解析:static用来修饰全局变量,不能修饰局部变量
21、在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?(C)
A、正好1000毫秒 B、1000毫秒不到 C、>=1000毫秒 D、不一定
解析:在程序sleep之后线程进入就绪态,在这种状态下,需要检查现在是否有资源允许现在的线程继续运行,如果条件不满足,则需要等待。如果是现在有资源则立即执行。
22、下面关于垃圾收集的说法正确的是(D)
A、一旦一个对象成为垃圾,就立刻被收集掉。
B、对象空间被收集掉之后,会执行该对象的finalize方法。
C、finalize方法和C++的析构函数完全是一回事情。
D、一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。
23、按照学生平均成绩(avg_grade)将students表中的数据检索出来,下面SQL语句正确的是(ACD)
A、SELECT * FROM students ORDER BY avg_grade
B、SELECT * FROM students GROUP BY avg_grade ASC
C、SELECT * FROM students ORDER BY avg_grade DESC
D、SELECT * FROM students ORDER BY avg_grade asc
解析:
order by是表示排序 ,asc表示升序,desc表示降序;
group by表示分组
24、下面的程序中,temp的最终值是什么?(B)
long temp =(int) 3.9;
temp%=2;
A、0 B、1 C、2 D、3 E、4
解析:浮点型强转int会丢失精度,所以前面的(int)3.9 会等于3,后面的temp%=2后temp=1;
25、下面程序的运行结果是:(B)
public static void main(String args[]){
Thread t = new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong(){
System.out.print("pong");
}
A、pingpong B、pongping C、pingpong和pongping都有可能 D、都不输出
解析:因为线程的run()方法只是普通方法的方式调用,所以程序还是要按顺序执行,要等待run方法体执行完毕后,才可以继续执行下面的代码;扩展【但如果第7行换成t.start( )方法,答案就应该选择C,因为t.start( )后,线程变为就绪状态,什么时候开始执行时不确定的,可能是主程序先继续执行,也可能是新线程先执行。】
26、String s =“123”,这个语句有多少对象产生?(B)
A、0 B、1 C、2 D、3
解析:
String s = “123”;1个,常量池
String str=new String("123"); //2个 常量池、堆
27、在Java中,有如下两个类Student和Person。如果Student是Person的子类,则下列声明对象x的语句中错误的。(C)
A、Peron X = new Student()
B、Person X = new Peron()
C、Student X = new Peron()
D、Student X = new Student()
28、下列方法中可以用来创建一个新线程的是?(D)
A、实现java.lang.Runnable接口并重写run()方法
B、实现java.lang.Runnable接口并重写start()方法
C、实现java.lang.Thread类并实现start()方法
D、继承java.lang.Thread类并重写run()方法
29、switch(){}结构中,括号中可使用的数据类型不能是。(AD)
A、long B、int C、short D、float
解析:
JDK 1.5以前:x 只能是byte, short, char, int
JDK 1.5之后:x 的类型也可以是枚举类型啦!
JDK 1.7之后:x 的类型又多了一个String类型~
其实,x 准确的说,数值型的只可以是 int 类型,但是 byte, short, char 都可以自动转换成 int 类型,所以 x 也可以是byte, short, char。当然了,对应的包装类也是可以自动转换,所以 x 也可以是包装类型的。
无论哪个版本的JDK,都是不支持 long,float,double,boolean 这个一定要注意
30、下列叙述中,正确的是?(A)
A、java语言的标识符是区分小写的
B、源文件名与public类名可以不相同
C、源文件名其扩展为.jar
D、源文件中public类的数目不限
解析:java的原文件的名称必须跟公有类的名称一致,且一个源文件中只有一个公有类,源文件的扩展名是.java
31、Iterator有哪些方法?(ACD)
A、next B、equals C、remove D、hasNext
解析:
Iterator迭代器包含的方法有:
hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false
next():返回集合中Iterator指向位置后面的元素
remove():删除集合中Iterator指向位置后面的元素
32、关于构造器是否可以被override,是否可以被overload?(C)
A、能,能 B、不能,不能 C、不能,能 D、能,不能
解析:构造器(构造方法)Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload(不同参数即可)。
Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。
33、下面哪个流属于面向字符的输入流?(D)
A、BufferedWriter B、FilelnputStream
C、ObjectlnputStream D、lnputStreamReader
解析:
以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流。
详细的请看Java流类图结构
34、java application中的主类包含main方法,main方法的返回类型是什么?(D)
A、int B、float C、double D、void
35、有程序片段如下,以下哪个表达式结果为true(B)
Float s = new Float(0.1f);
Float t = new Float(0.1f);
Double u = new Double(0.1);
A、s==t B、s.equals(t) C、u.equals(s) D、t.equals(u)
解析:
A:s==t 判断的是两个对象的引用地址是否相等,因为不是同一个对象肯定不相等
B:s.equals(t); //这个判断,首先判断t是不是float类型,然后调用floatToIntBits方法,将float转成int进行比较,两个肯定相等了。
C:u.equals(s) ;//因为s不是Double类型,不符合判断条件,所以返回false
D:t.equals(u);//因为u不是Float类型,不能比较,所以返回false
36、Spring boot 如何添加开发者工具集(A)
A、spring-boot-devtools B、spring-boot-starter
C、spring-starter-ribbon D、spring-starter-feign
37、使用SpringBoot作为我们的框架,连Tomcat都不用自己配置。Tomcat默认的端口是(A)
A、8080 B、8085 C、8095 D、8888
38、SpringBoot中,在yml文件中配置属性,那么我们在Controller中可以使用(B)属性来进行获取。
A、@parameter B、@value C、@Component D、@name
39、默认情况下SpringBoot使用()作为日志框架?(A)
A、Logback B、Logger C、si4jback D、都不是
40、启动Ribbon的类注解是:(A)
A、@RibbonClient B、@EnableClient
C、@EnableDisscoveryClient D、@Ribbon
41、下面哪个注解不是@SpringbootApplication包含的默认属性值:(D)
A、@Configuration B、@EnableAutoConfiguration
C、@ComponentScan D、@EnableFeignClients
解析:启动类上面的注解是@SpringBootApplication,它也是 SpringBoot 的核心注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如:java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration、class })。
@ComponentScan:Spring组件扫描。
42、下列关于 springClound不正确的是:(D)
A、服务发现——Netflix Eureka B、客服端负载均衡——Netflix Ribbon
C、断路器——Netflix Hystrix D、分布式配置——Netflix Zuul
43、下列对 Ribbon的解释不正确的是:(D)
A、Ribbon主要提供客户侧的软件负载均衡算法。 B、简单轮询负载均衡
C、加权响应时间负载均衡 D、绝对负载均衡
44、下列关于Kafka中涉及的一些基本概念错误的是:(D)
A、Topic:(主题)是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。
B、Producer(生产者):是能够发布消息到话题的任何对象。
C、Broker(服务代理):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群。
D、Consumer(消费者):只能订阅一个话题,并从 Broker拉数据,从而消费这些已发布的消息。