Android面试知识点(四)*

2021-06-24  本文已影响0人  书虫大王X
1、RecycleView与ListView的区别:
    public void updateItemView(ListView listView, int position) {
        //换算成 Item View 在 ViewGroup 中的 index
        int index = position - listView.getFirstVisiblePosition();
        if (index >= 0 && index < listView.getChildCount()) {
            //更新数据
            AuthorInfo authorInfo = mAuthorInfoList.get(position);
            authorInfo.setNickName("Google Android");
            authorInfo.setMotto("My name is Android .");
            authorInfo.setPortrait(R.mipmap.ic_launcher);
            //更新单个Item
            View itemView = listView.getChildAt(index);
            getView(position, itemView, listView);
        }
    }
3、kotlin的拓展方法
class User(var name:String)

// 给user类增加方法
fun User.Print(){
    print("用户名 $name")
}

//调用
fun main(arg:Array<String>){
    var user = User("Runoob")
    user.Print()
}
伴生对象:
kotlin相对于Java有什么优缺点:
面向对象六大原则:

在Java 中抽象指的是接口或者抽象类,两者皆不能实例化。而细节就是实现类,也就是实现了接口或者继承了抽象类的类。他是可以被实例化的。高层模块指的是调用端,底层模块是具体的实现类。在Java中,依赖倒置原则是指模块间的依赖是通过抽象来发生的,实现类之间不发生直接的依赖关系,其依赖关系是通过接口是来实现的。这就是俗称的面向接口编程。

5、Android有哪几种类型的进程
6、server、activity的区别和运用场景:
8、view和layout的关系:
9、Java虚拟机与进程的关系:
10、堆和栈的关系:

11、你学过iOS开发,那你简单说一下iOS和Android引用计数的区别

12、说一下栈溢出,说一下什么情况下会遇到这样的错误,为什么会遇到这样的错误:
13、栈与线程的关系:
14、你觉得你在平时的实践过程中或是在学习过程中有什么做的比较不错的,可以分享一下吗?

1、我有将自己所学习过的东西用简书进行记录的习惯,一方面是为了分享,但在书写的过程中,也加深了对知识点的巩固和理解。同时也方便了以后的复习。我觉得将所学的知识、说写的代码、写代码遇到的问题进行记录是很有必要的。
2、

15、你在GitHub上传过什么
16、你在学校担任过什么职务或者做过什么比较有意义的事,你从中收获了什么?

1、大一大二参加过学校的社团(不是学生会)。在大一时还是个普通会员,每次做事都是学长具体安排,去做就行了。但是到大二就不是这样了,但大二时是社团社团外联部的部长,做的事不再是某个具体的任务,而是要思考一件事要怎么完成、分几个步骤去完成。比如拉赞助:在大一时收到的任务是什么时间到什么地点去找谁获取赞助;但是到了大二,思考的是该向谁获取赞助,以什么样的方式获取赞助,具体的执行有其他人完成。我觉得这跟员工在公司中做事方式是相似的:员工只用负责某件具体的事,而公司领导则赋值公司的走向、战略。
2、在大三时学校老师面向大一的新生举办了一个Android开发培训班,我在那个班上担任助教,帮助他们解决编程过程中遇到的问题:开发工具问题、代码问题、知识点不理解的问题等。在帮助他们解决问题的过程中,我自己也得到了一定的锻炼,表达能力:我觉得很简单的问题,解释给他们听,他们却觉得很难,所以我的转换思路,站在他们的角度去思考问题,然后慢慢的接收给他们听。思维能力:虽然题目现在还在学C语言,问得问题比较简单,但有时候也会有些难题或者不知名的一些错误,我的慢慢去打断点、打印调试代码,找到错误所在,在这过程中我的编程思维和解决问题的能力也得到了一定的提升。

19、组合(引用)跟继承的使用场景区别:
  • 继承的优点:
    支持扩展,通过继承父类实现,但会使系统结构较复杂。易于修改被复用的代码
  • 继承的缺点:
    代码白盒复用,父类的实现细节暴露给子类,破坏了封装性
    当父类的实现代码修改时,可能使得子类也不得不修改,增加维护难度。
    子类缺乏独立性,依赖于父类,耦合度较高
    不支持动态拓展,在编译期就决定了父类
  • 组合的优点:
    代码黑盒复用,被包括的对象内部实现细节对外不可见,封装性好。
    整体类与局部类之间松耦合,相互独立。
    支持扩展
    每个类只专注于一项任务
    支持动态扩展,可在运行时根据具体对象选择不同类型的组合对象(扩展性比继承好)
  • 组合的缺点:
    创建整体类对象时,需要创建所有局部类对象。导致系统对象很多。
java--依赖、关联、聚合和组合之间区别的理解
缓存区:
上一篇 下一篇

猜你喜欢

热点阅读