Java错题难题

JAVA

switch(c==b):
错误: 表达式可以放: byte, short, char, int, JDK1.5: 枚举, JDK1.7: String ;—没有Boolean类型

下列程序段的输出结果是

public class Test {    
    public static void main(String[] args) {        
        int x = 1, a = 0, b = 0;        
        switch (x) {            
            case 0:                
                b++;            
            case 1:                
                a++;            
            case 2:                
                a++;                
                b++;       
        }        
        System.out.println("a=" + a);        
        System.out.println("b=" + b);   
    } 
} 





a2,b1

’方法’易错点:

public class MethodDemo03 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:" + number);      //100
        change(number);	 //实参.
        System.out.println("调用change方法后:" + number);        //100
    }

    public static void change(int number) {	//形参.           //number = 100;
        number = 200;
    }
}

形参是定义方法时存在,没有实际意义

实参是调用方法时传入的参数参与计算

斐波那契数列:1,1,2,3,5,8…

问:a12=?数组解决

把1~100之间的奇数, 按照6个一行的格式进行输出.
//核心点: 统计遍历, 输出一个就++, 标记变量: 几个一行.

Son类继承自Father类,那么创建Son类的对象的时候先加载谁的.class文件呢?

带分数的计算要小心数据类型转换问题:

7/4=1,4/7=0

’默认’代表default吗?

错:默认代表什么都不写

System.out.println(10.equals(10))结果是什么?

==跟equals有何区别? 运算符和方法

(集合)填写泛型的时候可以写int 错:泛型只能用引用类型

(集合)

s1 = new Student("刘亦菲", 33);
s2 = new Student("刘亦菲", 33);
s3 = new Student("赵丽颖", 31);
s4 = new Teacher("刘亦菲", 33);
问题:下面选项正确的是(不确定选项)
A.s1和s2不属于同一对象
B.s1和s3不属于同一对象
C.s2和s4属于同一对象 
D.s1==s2





答:B 实际开发中, 我们认为, 如果同一个类的两个对象, 各个属性都相同, 那么它们就是同一个对象
(集合)同一个对象哈希值肯定相同,不同对象哈希值肯定不同
重地和通话, 儿女和农丰

(集合)

HashMap hm=new HashMap();
Collections.shuffle(hm.keyset());
哪一步错了?为什么?





第二步错了,shuffle参数只能传List

Arrays.toString()传入的参数只能是int类型的
错:基本类型都可以传

为什么Set集合么有get方法?而List集合有?

Set集合没有索引

问题:

  1. 基本类型在堆区有没有地址值?
  2. 成员变量和局部变量的区别是什么?
  3. 构造方法存在的意义是什么?
  4. 解释什么是索引越界异常(Array Index Out Of Bounds Exception)?
  5. return 的作用是什么?
  6. 编译过程有时不必过于纠结合法值问题,前端一般已经解决过这个问题了,后端不用考虑
  7. 继承的弊端是什么?
  8. 继承体系中调用成员变量和成员方法的规则是什么?
  9. 如何让父类也能使用子类独有的方法?
  10. 被final修饰的方法可以被继承吗?被final修饰的变量无法被子类调用怎么办?
  11. 方法重写和方法重载之各自的定义区别是什么?(面试题)
  12. this关键字的作用是什么?它代表谁?
  13. 键盘录入字符串使用Scanner 的哪个方法?
  14. 定义标准类的注意事项:
  15. String类中,用于拼接字符串的方法名是什么?
  16. String和StringBuilder和StringBuffer之间的区别是什么?
  17. SimpleDateFormat类的作用是什么?
  18. 什么是匿名内部类?它的位置可以写在哪里?
  19. 匿名内部类是用来干什么的?
  20. List和Set通常通过谁来实现?
  21. 集合中谁带索引谁不带索引?
  22. nullPointerException是什么情况下出现?
  23. 什么是并发修改异常?产生原因是什么?怎么拼写?
  24. 遍历集合有哪几种方式?
  25. Map如何获取键值对集合?
  26. HashSet和Map的键中存储自定义对象的时候不能忘了什么?
  27. Map中的put方法返回什么?
  28. Lambda 表达式不能做什么?
  29. 什么是可变参数?它的本质是什么?
  30. Lambda表达式的省略的规则
  31. Lambda和匿名内部类之间的区别是什么?
  32. 请用所学,模拟栈和队列数据结构的特点
  33. 为什么会出现乱码的情况?
  34. Java是多线程的吗?
  35. 异常的最顶层类是叫什么名字?
  36. synchronized(同步)代码块的原理是什么?
  37. 实现Runnable接口不用写static?为什么?
  38. Runnable和Thread开启线程各自的坏处是什么?
  39. 为什么notify() notifyAll() wait() 写在Object类中而不是Thread类中?
  40. 什么是序列化,什么是反序列化?
  41. 多线程并行与并发的区别是什么?
  42. 多线程的执行具有??性和??性,为什么?
  43. Lambda表达式似乎只能当成参数传递,不能单独调用方法?
  44. Thread.currentThread在没有其他线程的默认情况下返回的是哪个线程?
  45. 网络通信三要素?
  46. final ,finally ,finalize区别是什么?
  47. 什么是InetAddress?
  48. InetAddress的常用方法?
  49. TCP三次握手是什么?
  50. 字符流和字节流哪个好用?
  51. 出现异常怎么办?
  52. 如下代码
//为了写入方便, 将其封装成: 字符高效流.
       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
       //4. 定义变量, 记录读取到的数据.
       String line;
       //5. 循环读取, 只要条件满足, 就一直读, 并将读取到的内容赋值给变量line
       while ((line = br.readLine()) != null) {
           //6. 将读取到的内容写给服务器端.
           bw.write(line);
           bw.newLine();
           bw.flush();
       }

       //7. 释放资源.
       br.close();
       socket.close();

为什么socket关了,还要有flush操作?

  1. 多线程卖票出现负数票的原因是什么?
  2. 什么是死锁?
  3. 如何寻找线程安全的类?
  4. 线程池里的Future是什么?
  5. 加载一个类的流程是怎样的?
  6. 加入线程,和守护线程是什么?
  7. Properties添加元素和加载流用什么方法?
  8. 如何将通常的数组内容转化为字符串形式?
  9. 何为元注解?
  10. 权限修饰符
  11. 什么是序列化?
  12. 序列化到底是什么意思?

问题答案:

1 [解析: 比如int a=10;只是属于引用10所在的空间,只有像引用类型中使用了new才会开辟新空间.
注意:如int数组类型int[] arr={1,2,3}和String类型的String s="sdf"这种写法虽然没有出现new,但这只是写法上的一种省略而已,俗称’语法糖’,本质上还是跟new没有区别 ]
2

1.定义位置不同.
–成员变量: 定义在类中, 方法外.
–局部变量: 定义在方法中, 或者方法声明上.
2.在内存中的存储位置不同.
–成员变量: 存储在堆内存. 
–局部变量: 存储在栈内存. 
3.生命周期不同.
–成员变量: 随着对象的创建而存在, 随着对象的消失而消失.
–局部变量: 随着方法的调用而存在, 随着方法的调用完毕而消失.
4.初始化值不同.
–成员变量: 有默认值.
–局部变量: 没有默认值, 必须先定义, 再赋值, 然后才能使用. 

3 看java笔记构造方法
4 当你访问的数据索引大于该数组的最大索引时,会报索引越界异常
5 结束方法,捎带着返回值
6 …
7 增加了类与类之间的关系,提升了耦合性,举例:父类中包含了子类不需要的功能,子类也需要继承,增加了冗余代码
8.Java中使用变量遵循就近原则,先从局部位置找,局部位置没有就从成员变量找,子类没有就从父类的成员变量找,没有就报错.调用成员方法时,也是同理,先看本类再看父类.
9 答:使用多态向下转型强制类型转换
10 答:(1)可以 (2)final一般要结合static ,public或者private来使用
11 定义如下:
在这里插入图片描述
12 避免成员变量和局部变量重名问题;代表调用方法或者变量的对象
13 Scanner#nextLine();
14 成员变量无特殊情况用private修饰
15 答:concat
16 答:String长度固定,后者长度可变
17 答:是用来在Date和String之间做转换用的
18 答:匿名内部类就是没有名字的成员内部类,可以写在成员方法中和方法的参数列表里
19 答:把抽象类或者接口实例化
20 ArrayList和 LinkedList,HashSet和TreeSet
21 集合中带索引的都是list结尾的
22 出现null
23 使用普通迭代器遍历集合时添加元素会产生并发修改异常
产生原因是使用了集合对象添加元素
24 Collection三种List独有两种
25 entrySet方法
26 重写HashCode和equals方法
27 键不存在就直接添加, 并返回null; 键存在, 会用新值覆盖旧值, 并返回旧值.
28 答:不能继承类,只能实现接口,且接口中只能有一个抽象方法
29 它是JDK1.5的特性, 它的本质就是一个数组.
30

参数类型可以省略。但是有多个参数的情况下,不能只省略一个
如果参数有且仅有一个,那么小括号可以省略
如果代码块的语句只有一条,可以省略大括号和分号,和return关键字

31 匿名内部类和Lambda区别?
反对法

32 LinkedList

33 编解码不一致

34 是,至少开启了(main)线程和(GC)线程

35 Throwable
36 答: 设置一个锁,让线程去抢,谁抢到了谁先执行
37 因为只new了一个资源对象
38 Runnable接口里只有一个方法,所以子类干不了别的事情
Thread干不了的事它的子类也干不了除非实现接口
39 因为锁对象是任意类型的对象
40 写进去,弄出来
41 并行是两个及以上的线程同时执行(需要多核CPU),并发是交替执行,不停地在程序间切换
42 随机性,延迟性;因为CPU在进行高效的切换
43 Lambda表达式的本质是做事情而不是创建对象,所以它不可能调用任何方法,因为它已经把事情做完了.
44 答:main线程
45 IP,端口号,协议
46 finalize是方法,finally在try catch中释放资源的.exit除外,否则finally中的代码必定会执行
47 答:IP地址包装类: InetAddress(它是IP地址对象的对象形式)
48 答: 通过主机名或者字符串类型的IP得到Inet地址->getByName(s); Inet 转 String -> getHostName(), getHostAddress()
49

客户端发送连接请求,等待确认
服务器端发送信息确认收到请求
服务器端同意连接,发送信息

50 文本文件字符流好用,否则就是字节流好用
51 查API
52 答:想将数据流刷新出来要通过bw.close()的方法,否则就用flush(),关socket没用,只不过flush是立即刷新,close是一起刷新
53

出现负数票的原因是因为: 当tickets的值等于1的时候, 此时如果4个线程都抢到了资源, 就会全部越过if校验, 情况如下:
***tickets是被static修饰的所以是被共享的,也就说线程1执行完后,tickets变成了0,那后面醒来的线程只能从0开始算***
假设 线程1 先醒来, 此时打印:  售卖出第 1 张票,  然后执行tickets--, 此时tickets的值为: 0
假设 线程2 后醒来, 此时打印:  售卖出第 0 张票,  然后执行tickets--, 此时tickets的值为: -1
假设 线程3 后醒来, 此时打印:  售卖出第 -1 张票,  然后执行tickets--, 此时tickets的值为: -2
假设 线程4 后醒来, 此时打印:  售卖出第 -2 张票,  然后执行tickets--, 此时tickets的值为: -3

//因此要加同步避免这种情况的出现

54 同步代码块的嵌套可能会导致死锁
55 Collections 里面有Synchronized的方法
56 是线程执行后, 用于接收线程返回结果的.
57 AppClassLoader(SystemClassLoader)询问ExtClassloader(PlatFormLoader )询问BootStrap
58 父死子才能继承(join)但是有可能父会中断所以要try, 大哥死二弟三弟也要死(setDaemon)但是有延迟
59 setProperty 添加元素,load加载流
60 Arrays.toString(arr[])
61 对注解使用位置有限制的注解
62

1.private: 强调的是给自己使用.
2.默认: 强调的是给同包下的类使用.
3.protected: 强调的是给子类使用.
4.public: 强调的是给大家使用. 

63 将数据转化为二进制
64 主要用于IO流中,用流传输对象的时候,则该对象必须实现序列化接口

//1. 创建序列化流, 封装目的地文件.
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("day12/data/1.txt"));
        //2. 创建JavaBean对象.
        Student s = new Student("刘dd", 33);
        //3. 进行序列化操作.
        oos.writeObject(s);

JDBC

问题

  1. 工具类方法中如何处理异常?
  2. 事务的四大特性是什么?
  3. 不考虑隔离性的并发访问问题有哪些?
  4. jdbc工具类封装的是哪几步?
  5. 什么是事务?
  6. 配置文件一般放在哪?

问题答案

  1. 只能try不能抛
原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 
一致性(Consistency)事务前后数据的完整性必须保持一致。
隔离性(Isolation)事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
脏读:一个事务读到了另一个事务未提交的数据.
不可重复读:一个事务读到了另一个事务已经提交(update)的数据。引发另一个事务,在事务中的多次查询结果不一致。
虚读 /幻读:一个事务读到了另一个事务已经提交(insert)的数据。导致另一个事务,在事务中多次查询的结果不一致。
  1. 1 注册驱动 2 获取连接 6 释放资源
  2. 事务是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败.
  3. resource包下

maven

问题

  1. idea中如何让一个包具有特殊功能
  2. tomcat的作用是什么?
  3. Lombok的作用是什么?

问题答案

  1. 右键,选择make directory as
  2. 方便web服务器操作使用以支持web项目
  3. 只要加上注释,对象直接可以调用用set,get,全参和空参构造
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值