Android高级工程师面试实战,您会挂么?

xxx公司面试总结

面试形势

  1. 群聊(2个面试官+HR+自己)

面试流程

  1. 自我介绍
  2. 面试官根据你的介绍开始问
  3. 你对我们公司有什么想了解的么(复活卡,要时回到没有了也就没有了,可以让面试官给自己提一下建议)

面试题回忆,没有先后顺序

  1. 项目架构,组件化架构(他反而没问插件化)
  2. Android 事件分发机制(问到源码调用细节)
  3. 反射怎么调用一个类的私有方法(这里也是问细节,2个方法的区别)

    Method method=clazz.getDeclaredMethod(name);//可以调用本类中的所有方法(不包括父类中继承的方法)

    Method method=clazz.getMethod(name); //可以调用类中有访问权限的方法(包括父类中继承的方法)

  4. 怎么监听Activity的生命周期

    可能大部分想到的时候自己写个 BaseActivity 就搞定了

    其实是在 Application 里面注册一个监听回调的事情

     this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
         @Override
         public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
         @Override
         public void onActivityStarted(Activity activity) {}
         @Override
         public void onActivityResumed(Activity activity) { }
         @Override
         public void onActivityPaused(Activity activity) { }
         @Override
         public void onActivityStopped(Activity activity) { }
         @Override
         public void onActivitySaveInstanceState(Activity activity, Bundle outState) { }
         @Override
         public void onActivityDestroyed(Activity activity) {}
     });
  5. RxJavaRxAndroid 是否用过,用过的话估计会问原理
  6. 图片缓存框架,用过哪个,原理(这一关想过一定要用透一个)

    ImageLoader(不用考虑了)

    Picasso

    Glide

    Fresco

  7. 网络请求框架用过哪个(OkHttp, Retrofit, Volley

    -->这里他想听到的是 OkGo(基于 OkHttp 封装的一个框架)
  8. 有个业务里面有20几个嵌套的 if else,从设计模式的角度怎么解决这个问题?

    -->他考的是策略模式+工厂模式

  9. HashMap,HashTable,HashSet什么区别?

总结

  1. 这是很有指导意义的一次面试,面试的内容确实比较符合现在对高级Android工程师的要求。
  2. 问的内容比较关注细节,这种要是没有深入了解几乎不知道。
  3. 面试其实是一个学习成长的过程,找几家公司练练手,然后找到套路之后对症下药。

转载于:https://www.cnblogs.com/popfisher/p/10559503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 你对 Android 操作系统的架构有什么了解? Android 操作系统采用了 Linux 内核,并在其上构建了一个应用程序框架。应用程序框架提供了一套 API,使开发者可以创建应用程序,并与操作系统进行交互。Android 操作系统的架构包括四个层次:应用程序层、应用程序框架层、系统运行时层和 Linux 内核层。 2. 你对 Android 应用程序框架有什么了解? Android 应用程序框架提供了一套 API,使开发者可以创建应用程序,并与操作系统进行交互。应用程序框架主要包括以下模块:活动管理器、资源管理器、视图系统、通知管理器、内容提供者、位置管理器、文本到语音、蓝牙和 Wi-Fi。 3. 你熟悉哪些 Android 开发框架? 我熟悉的 Android 开发框架包括:Android Jetpack、Retrofit、OkHttp、Glide、Dagger、Butter Knife、RxJava、Room、LiveData、Navigation 等。 4. 你了解 Android 的多线程编程吗? 是的。Android 的多线程编程可以通过 Java 的多线程机制来实现。常见的多线程编程方式包括使用 AsyncTask、Handler 和 Thread 等。此外,还可以使用线程池来管理线程,以避免因线程数量过多而导致的性能问题。 5. 你熟悉哪些 Android 数据存储技术? 我熟悉的 Android 数据存储技术包括:SharedPreferences、SQLite、ContentProvider、File、Room 等。SharedPreferences 用于存储应用程序的简单键值对数据;SQLite 用于存储结构化数据;ContentProvider 用于在应用程序之间共享数据;File 用于存储应用程序的文件数据;Room 是 Google 推出的 ORM 框架,用于简化 SQLite 数据库的操作。 6. 你了解 Android 的网络编程吗? 是的。Android 的网络编程可以使用 Java 的网络编程 API 来实现。常见的网络编程方式包括使用 HttpURLConnection 和 OkHttp 等。此外,还可以使用 Retrofit 来简化网络请求的代码。 7. 你了解 Android 的推送技术吗? 是的。Android 的推送技术可以使用 Google 推出的 Firebase Cloud Messaging(FCM)来实现。FCM 可以向设备发送推送通知、数据消息和通知消息。开发者可以使用 FCM 控制台或 API 来向设备发送消息。 8. 你熟悉哪些 Android UI 组件? 我熟悉的 Android UI 组件包括:TextView、Button、EditText、ImageView、ListView、RecyclerView、TabLayout、ViewPager、Toolbar 等。此外,还可以使用自定义 View 和自定义布局来实现更复杂的 UI 组件。 9. 你了解 Android 的性能优化技术吗? 是的。Android 的性能优化技术包括:布局优化、UI 绘制优化、内存优化、网络优化、数据库优化、电量优化等。常见的性能优化方式包括使用 ViewHolder、使用 Lint 工具、使用性能分析器、使用缓存策略、使用数据库索引、使用 JobScheduler 等。 10. 你有哪些 Android 项目经验? 我参与过多个 Android 项目的开发,其中包括基于 Retrofit 和 OkHttp 的网络请求库开发、基于 MVP 架构的天气应用开发、基于 Jetpack 组件的音乐播放器开发等。这些项目涉及了网络编程、多线程编程、数据存储、UI 组件和性能优化等方面的知识和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值