接下来的几篇文章,主要罗列一下Android面试中常见的点,希望可以帮助到大家,这一篇主要针对java中常见的点。
##问题 1:java中==和equals和hashCode的区别
###答案【答案不唯一,可自己衡量】:
①equals
-
equals的作用是判断两个对象是否相等。
-
通过判断两个对象的地址是否相同来判断。
②==
-
一般用于基本类型数据的比较,判断两个值是否相同
-
也可以用于类的比较,同样也是比较两个对象的内存地址。(就是两个对象都是同一个对象)
-
所以在equals没覆盖的情况下,==和equals是等价的。
( 我们可以通过覆盖equals来让相同内容的对象来返回true。)
③hashcode
-
能够高效率的产生一个离散的int值。
-
通过hashCode()来计算出两个对象的hash值然后进行比较。
-
但是会出现不同的类也会有相同hash值,所以这不是安全、不可靠的。
总结
-
总的来说就是一般情况equals和==是等价的。
-
如果两个对象相等,则他们一定是equals返回true。
-
如果两个对象的hashCode相同,也不能 100%保证它们是相同的。
##问题 2:int与integer的区别
###答案【答案不唯一,可自己衡量】:
-
Integer是int的包装类,int则是Java的一种基本数据类型
-
Integer变量必须实例化之后才可以使用,而int变量不需要
-
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
-
Integer的默认值是null,int的默认值是0
##问题 3:谈谈对java多态的理解
###答案【答案不唯一,可自己衡量】:
打个比方 父亲person有行为这个方法,里面包括几个动作:吃饭,睡觉,走路 父亲有三个儿子,三个儿子都继承了父亲的行为方法,所以三个儿子都有吃饭,睡觉,走路这些动作,但是三个儿子又分别有自己的动作–大儿子A会弹吉他,二儿子B会唱歌,三儿子C会打鼓 …
-
Person person = new A(); 不是父类对象指向子类引用而是父类引用指向子类对象
-
这个对象不能调用子类A特有的弹吉他方法–person.guitar(); X
-
如果仅是这么写程序,还不是多态,记住实现多态的三要素:继承 重写 父类引用指向子类对象
-
之后,如果你调用persion.guitar(),此时在代码的编译阶段,persion调用的仍然是自己的guitar(),不是儿子的。而当程序运行时,就是java XXX, persion调用的却是儿子的guitar()。这个动态的过程才是多态 。
Person person;
//父类的引用指向子类的方法;
person = new Student();
//person类型引用做一个判断
//(1)if(person.eat().size==2 )
{
if(person instanceof Person)
{
person.eat();
}else if(person instanceof Student) {
Student stu = (Student)person;
stu.eat();
}
person.eat();//从代码角度看,此时是父类的引用调用的是父类中的eat方法
//(2)子类若覆盖了父类的方法,eat动态绑定到父类的引用Person上,换个名字叫动态绑定
//父类的引用可以调用子类的方法,我们把这一现象成为多态
//从字面意思来理解person这个父类的引用一会是person一会是student
//person有多种状态;
//也叫方法的动态绑定
//继承是通向多态的入口
person.f2();
person.gotobed();
person.eat();
Student stu = new Student();
stu.eat();
stu.gotobed();
//父类的引用能够调用子类的方法
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
结语
网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。
目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。
大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。
现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-Wb6wakEc-1712802495804)]