持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
1.C++中,&作为函数的参数的意义?
1)实际上是对实参本身进行操作,而非简单的将实参的值拷贝给形参。 2)系统会在内存中开辟空间用来存储形参变量,因此如果参数传递的数据较大时,建议使用引用作为函数的形参,这样会提高函数的时间效率,并节省内存空间。 ps:操作实参,会改变实参。提高函数效率,节省空间。突然一个想到不恰当的例子。。我不说就是玩儿
2.Mybatis是做什么的?
对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身 ps:也就是JDBC那一套不用你搞了,人家有现成的。
3.hashCode()和equals之间的关系
1)hashCode()是用来获取哈希码的,equals用来判断对象是否相等 2)即便p1.equals(p2) == ture,hashCode(p1)!= hashCode(p2) ps:双胞胎长得一模一样,性格可能不一样阿,哥哥喜欢文静的,弟弟却喜欢辣妹子。。
4.为什么重写了equals就必须重写hashCode()?
因为p1.equals(p2) == ture,hashCode(p1)!= hashCode(p2) 如果不重写hashCode(),则会违反hashCode的约定,即约定相等的对象必须具有相同的散列码 ps:谁定的破规则,我要重写它!哥哥开始热衷辣妹了。。
5.你知道Object()吗?
1)Object()是所有类的基类,位于java.lang包中 2)比如Clone()方法,用于另存当前存在的对象,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常 3)getclass()方法,final方法,用于返回运行时的对象类型 4)notify(),唤醒在此对象监视器上等待的单个线程,ps:notify是通知的意思,唤醒在排队打饭的小卷,你今天有点消瘦啊
6.讲讲类加载机制。
1)类加载是一个将类合并到正在运行的JVM进程中的过程 2)一般分为五个部分:加载,验证,准备,解析和初始化 ps:我加载类,好生成一个类的class对象,然后创建实例啊。中指这个对象,可以代表实例1,也可以是实例“老子看你不爽”,还可以有很多实例。
7.你知道类加载机制中的双亲委派模型吗?
1)由上及下有,启动类加载器——>扩展类加载器——>应用程序加载器——>自定义加载器 2)当一个类加载器收到了类加载的请求,首先不会自己去尝试加载这个类,而是把这个请求委派给父加载器去完成,每个层次的类加载器都是如此 ps:我是自定义加载器,我是家里最小的,不懂事,啥事都不会自己做,有啥事都拼爹,不行就拼娘,我爹娘也是家里最不懂事的。。。一套套三辈。。。
8.什么是Java虚拟机
任何一种可以运行Java字节码的软件均可看成是Java的虚拟机(JVM)
Java号称是一门“一次编译到处运行”的语言,从我们写的java文件到通过编译器编译成java字节码文件(.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪种编译器编译,甚至是手写字节码文件,只要符合java虚拟机的规范,那么它就能够执行该字节码文件。
9.equals 和 == 的区别?
1、==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 2、==是指对内存地址进行比较 equals()是对字符串的内容进行比较 3、==指引用是否相同 equals()指的是值是否相同。
一个比较的是内存空间(或者地址),一个比较的是内存空间的值
10.多态分为重载和重写
重载是指方法相同参数不同 重写是根据需要实现父类的方法、产生不同的子类从而表现出不同的行为(当父类的方法无法满足当前子类的业务需求时),方法名和形参列表相同
11.在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
帮助子类做初始化工作。
12.静态方法和实例方法有何不同?
判断方法:是否有static关键字?调用方式不同。
13.一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?
主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。
14.如何理解Java跨平台?
win 和 linux操作系统的内核肯定是不同的,执行指令的方式也不一样,显然Java程序是不能直接与操作系统打交道的。所以,针对不同的操作系统,Java代码形成不同版本的Java虚拟机(JVM)。JVM再和操作系统打交道。
15.Java的加载与运行
分为编译阶段和运行阶段
- 编译阶段 在Doc命令窗口下采用
javac java源文件的路径
进行编译,编译结束后可以将class文件拷贝至其他操作系统运行。 - 运行阶段 在Doc命令窗口下采用
java 类名
来运行java程序,如A.class
,采用java A
来运行。java.exe命令会启动JVM,JVM会启动类加载器ClassLoader,ClassLoader会去硬盘上搜索A.class,找到后将其加载到JVM中,JVM将A.class字节码文件解释成二进制数据,然后操作系统执行二进制和底层硬件平台进行交互。
16.短路与运算 和 逻辑与运算的区别
int x = 7;int y = 5;
System.out.println(x<y && ++x < y);//短路与运算
System.out.println(x);//7
System.out.println(x<y & ++x < y);//与运算
System.out.println(x);//8
短路与运算:由于x<y为false,不会执行后面的表达式,即短路. 逻辑与运算:两边都要执行。 短路与运算较为常用。
17.面向过程与面向对象的区别?
面向过程的耦合度非常高,但是软件扩展力差,由于没有独立体的概念,无法组件复用。(集成显卡的开发思路) 面向对象,关注独立体(独立显卡的开发思路)