万国商汇

  1. java三大特性,对多态的理解
  • 封装、继承、多态
  • 多态:父类的引用可以指向子类的对象
  1. 事件分发机制
  • 事件传递的顺序:Activity->ViewGroup->View
  • dispatchTouchEvent:分发点击事件
  • onInterceptTouchEvent:判断是否拦截了某个事件
  • onTouchEvent:处理点击,
  1. view的绘制过程
  • 三个阶段
  • measure:判断是否需要重新计算view的大小
  • layout:判断是否需要重新计算view的位置
  • draw:判断是否需要重新绘制view,绘制背景、绘制自身、绘制子view;
  1. 横竖屏切换的生命周期变化
  • 3.2之前
  • onSaveInstanceState
  • onPause
  • onStop
  • onDestroy
  • onCreate
  • onStart
  • onResume
  • 3.2及之后
  • onPause
  • onSaveInstanceState
  • onStop
  • onDestroy
  • onCreate
  • onStart
  • onResume
  1. 引起oom的几种方式
  • 静态集合类
  • 当集合里对象属性被修改时再调用remove时不起作用;
  • 监听器;
  • 各种连接:数据库、网络、IO;
  • 内部类和外部模块的引用;
  • 单例模式:单例对象持有外部引用;

环球优路

  1. dagger
  2. 约束布局constrainLayout
  3. 事件分发机制

合众伟奇

  1. android系统架构图;
  2. intent service中可执行耗时操作;
  3. exception handler:全局异常补货;
  4. web加密:a.接口只允许内网访问;b.接口请求前先和服务端进行验密,获取动态密钥,每个设备请求生成的相关签名等参数都不一致;
  5. socket:原理;mina框架(基于socket);
  6. 热修复原理;
  7. 进程间通信:aidl、广播、ContentProvider;
  8. service的两种使用方式分别是在哪种场景使用的
  • 为了满足开发者处理后台任务的需要,Android提供了Service这个组件,同时为了方便开发者使用Service,又封装了一个IntentService。当然,现在很多App在处理后台任务的时候并没有优先使用Service,而是自己实现了一套线程池机制或者使用Android提供的AsyncTask来执行后台任务,这里我们来分析下他们各自的优劣:
  • i. 用于长期执行某些操作,并且甚至与UI(主)线程没有交互。比如启动app直接去网络下载文件
  • ii. 跨进程间通信,比如appA程序中Service被appB中程序调用
  • https://blog.csdn.net/zjws23786/article/details/51800929

uu跑腿

  1. 在浏览器中怎么打开app:利用scheme来实现
  2. android中activity、service、application的context区别
  3. Arouter的实现原理,如果自己实现跨module跳转和交互,要怎么做?
  4. 全面屏获取屏幕高度
  • mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics); 可以
  • getResources().getDisplayMetrics().heightPixels不行
  1. sqlite怎么建索引,索引的作用?
  • create index idx_ex1 on ex1(a,b)
  • 建了索引之后就好像查字典一样,查询速度很快
  • 索引类型
  • 主键索引:主键是一种唯一性索引,但它必须指向primary key,每个表只能有一个主键
alert table tablename add primary key (`字段名`)
  • 唯一索引:索引列的所有值都只能出现一次,即必须唯一,值可以为空;
  • 普通索引:基本的索引类型,值可以为空,没有唯一性的限制
  • 全文索引:全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。 全文索引不支持中文需要借sphinx(coreseek)或迅搜<、code>技术处理中文。
alter table 表名 add FULLTEXT(`字段名`);
先说优点:
a. 大大加快数据的检索速度,这也是创建索引的最主要的原因
b. 加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
c. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间再说缺点:
a. 创建索引需要耗费一定的时间,但是问题不大,一般索引只要build一次
b. 索引需要占用物理空间,特别是聚集索引,需要较大的空间
c. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度,这个是比较大的问题。
  1. android安全怎么做?
  • 签名
  • 混淆
  • 加密
  • 核心代码,转移到c++层,so库中
  • 加固,加壳脱壳

富士康面试

  1. 四大组件的作用,ContentProvider怎么用
  2. android多线程,线程间如何进行通信
  3. 可能导致内存泄漏的原因
  4. 性能优化怎么来做?主要是是冷启动优化
  5. 利用framework层源码的了解做过哪些东西

863软件

  1. fragment生命周期
  2. 组件化manifest动态配置;
  3. 组件化模块间fragment间相互传值;
  4. glide源码;
  5. 网络请求结束,activity已经没有了,回调过来的数据如何处理;
  6. 微信和支付宝支付流程:微信是预支付订单;
  7. 极光推送怎么单个用户推送;
  8. 四大组件与四大存储;

清南科技

  1. anr的时间是多少?多久不响应就弹出anr了;activity 5s,BroadcastReceiver 10s,Service 20s
  2. fragment的生命周期;
  3. 看过的第三方类库源码;
  4. mvp架构;
  5. final,finally,finalize;try前面设置了一个值,try中返回,finaly里面再重置一下;结果返回了什么?
  6. 看过的第三方开源库的源码;
  7. object的方法都有什么?
  8. 面向对象的三大特征
  9. arrayList和LinkedList的区别
  10. 设计模式都有哪些
  11. rtmp协议;
  12. 对http的了解;
  13. cookie,token,session区别
  14. 自定义组件;
  15. 为什么会有方法数限制65535的问题?因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits,最多能调用65535个方法,所以在生成dex文件的过程中,当方法数超过65535就会报错
  16. 获取一个链表中倒数第k个节点的值(手写代码)
class Node{public Node next;public int ;;
}Node h;a->b->c->d倒数第k/***获取链表的倒数第k个值*
**/
public int getBackNodeValue(Node node,int k){int count=getCount(node);int index=count-k;int result=-1;if(index>=0){
result=getNodeValue(node,index);
}return result;
}/***获取链表的共有多少个节点*
**/
private int getCount(Node node){int count=0;while(node.next!=null){node=node.next;count++;
}return count;
}/***获取链表的第k个值*
**/
private int getNodeValue(Node node,int k){//需要返回的结果,默认为-1int result=-1;//对是否遍历到结果的标识bool flag=false;for(int i=0;i<k;i++){if(node.next!=null){node=node.next;
if(i==k-1){flag=true;
}
}else{break;
}
}if(flag){
result=node.value;
}return result;
}a b c d e f
h    mh    m

开发过程遇到的技术重点和难点(根据个人项目来回答)

  1. 图片问题(后端):api和静态没有独立开来;
  2. android文件读写闪退,安卓7.0读写机制改了;
  3. 动态化:每个原生页面都对应一个pageId,extraParam,根据pageId来跳转;
  4. 混合交互:web调用原生方法,webView.addJavaInterface(); tinker 热修复;
  5. 购物车:三级列表选中互斥关系;第一级商家,第二级商品、礼包,第三极商品; onResume onPause
  6. 超卖问题: 从redis中取数量,if(count>0)( redis自减方法-1 获取到自减结果,如果 自减结果》0,后面正常处理在数据库中-1,如果自减结果小于0,+1)
  7. 图片显示问题(app);Glide 磁盘缓存;
  8. 动态正测试服切换;半个小时,5分钟,sp存一个标识flag,默认是true,officialBaseUrl,testBaseUrl, 在某个设置快速连点5次可以切换,切换时,defalut -》 false true -》 false false -》true ;
  9. 加密:a.签名,key的正序来排列 md5(key1=v1&key2=v2appSecret)=sign;b. https; 阿里云 域名 -》 ip,ip变动 ;

河南思维

  1. socket怎么用?什么格式来传输的,如何自定义协议?

天迈科技

  1. ndk用过吗?说说是怎么用的

外地出差

  1. 性能优化:布局优化(多次measure和draw)、内存优化;嵌套布局为什么性能差?
  2. 第三方数据库(greenDao),性能为什么更好,是原生写的几千倍,ORM对象映射,高性能;
  3. app原生安全相关;
  4. RxJava,都用过哪个关键字
  5. 热修复;
  6. 进程通信(Activity、ContentProvider、Broadcast,AIDL,Socket),应用跟系统之间通信什么时候用Socket什么时候用Binder
  7. so文件
  8. listview性能优化
  • ViewHolder

APUS

一面

  • 关于网络,说说你知道的

    • http1.0、http1.1、http2.0发展历程与区别
    • http与https的区别
    • 三次握手与四次挥手
    • 报文结构
    • 一次完整的http请求过程:握手建立连接,先发送请求命令请求头,服务器应答,发送数据,服务器关闭连接
    • 强制缓存和对比缓存
    • https过程
      • 客户端向服务器获取证书
      • 协商加密方案
      • 非对称传输密钥
      • 对称传输数据
  • okhttp有什么优点?源码介绍一下
    • https://blog.csdn.net/qq_23081779/article/details/99237874
  • binder原理
  • android都有哪些动画?详细介绍一下
    • 帧动画、视图动画、属性动画
  • 多线程问题
    • 多线程状态与切换

      • 初始、就绪、等待、运行、阻塞、终止
      • start、wait、notify、sleep、synchronize、yield:几个关键字具体用法
    • volatile变量特性
      • 保证可见性,不保证原子性 a.当写一个volatile变量时,JMM会把该线程本地内存中的变量强制刷新到主内存中去; b.这个写会操作会导致其他线程中的缓存无效。
      • 禁止指令重排 重排序是指编译器和处理器为了优化程序性能而对指令序列进行排序的一种手段。重排序需要遵守一定规则: a.重排序操作不会对存在数据依赖关系的操作进行重排序。
      • 线程池有哪些类型?
        • 不限量cacheThread Pool, fixed固定数量,schedule顺序线程池,single单个线程池
      • 线程池有哪些参数,分别的含义
        • 队列、核心数量、最大数量、缓存时间
      • 写自己的线程池如何实现?
        • 继承 TheadpoolExecutor
  • 数据结构
    • hashmap原理,linkedhashmap与hashmap有什么区别

      • LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的,是有序的,lruCache使用linkedHashMap来存储的;原理
  • 如何做图片优化?
    • 宽高减少,宽高压缩用到哪个函数:BitmapFactory.options的inSampleSize
    • 色彩深度,ARGB_565、ARGB_888
    • 编码优化,例如鲁班,采用了哈夫曼编码,使用频率高的使用短码,使用频率低的使用长码
  • framework
    • handler

      • handler looper MessageQueue工作原理
      • looper是如何存储的,ThreadLocal相关
      • c层是如何实现取消息时阻塞的
      • handler如何进行消息分发:把源码细节回答一下
    • classloader
      • BootClassLoder:加载fw层class文件
      • PathClassLoader:android应用程序类加载器
      • DexClassLoader:加载指定dex
      • tinker热修复为什么需要重启?
      • loadClass源码:DexPathList、DexFile,如果不重新启动,加载过的类就不会再去加载,双亲委托机制

二面

  • ThreadLocal中的ThreadLocalMap 和 HashMap有什么区别

    • ThreadLocalMap 解决散列冲突采用了开放地址法,尝试在数组中寻找其他空的单元,有线性探测法、等
  • 网络七层协议、四层协议,为什么要划分为这几层?目前用的是几层协议
    • 应用层
    • 表示层
    • 会话层
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  • 线程池有几种状态,自己实现线程池如何实现,ThreadPool源码分析
  • https详细服务器间传输解析过程
  • handler的postDelay如何实现?任务是怎么分发的?
    • 发送消息时,按照执行时间有序存放到消息队列中,通过native方法来实现,private native void nativePollOnce(long ptr, int timeoutMillis)
  • 自定义view:一个钟表如何自定义:画线,然后旋转;https://blog.csdn.net/sinat_36668731/article/details/81032530

其他

  1. android从6.0到9.0有哪些新特性
  2. 屏幕适配怎么做
  3. mvp、mvvm怎么用
  4. 混合交互
  5. 怎么做优化

android面试之郑州面试总结相关推荐

  1. 经典Android开发教程!面试字节跳动两轮后被完虐,附面试题答案

    前言 说起IT行业,大多数人脑海里反应出的第一个标签一定是"高薪",而说起程序员,大家更多想到的可能是: 秃顶.木讷.格子衫: 加班多.能赚钱.不花钱: 没对象-- 这难道就是传说 ...

  2. ios和android前景!阿里面试100%会问到的JVM,架构师必备技能

    Android开发的现状 目前,移动开发已经处于饱和的阶段,Android开发也不如当年盛况,已经不再像前几年前那么火爆.正如一种编程语言如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲 ...

  3. 每日一道Android 面试题,面试途中不败题

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题 ...

  4. 【Android面试揭秘】面试官说“回去等通知”,我到底会不会等来通知?

    前言 大部分情况下,面试结束后,面试官都会跟你说:我们会在1-2个工作日内通知你面试结果. 许多人认为:所谓「等通知」其实是面试官委婉地给你「发拒信」.但是,这不是「等通知」的全部真相. 这篇文章,我 ...

  5. 一位Android开发者吐血分享面试的点点滴滴

    来源:www.importnew.com 一.心态 心态很重要! 心态很重要! 心态很重要! 重要的事情说三遍,这一点我觉得是必须放到前面来讲. 找工作之前,有一点你必须清楚,就是找工作是一件看缘分的 ...

  6. Android技术功底不够,面试十家九家难,面霸究竟是怎样炼成的?

    最近在网上看许多面经的文章,有拿到Offer的,也有凉凉的,这些文章中都有一个共同的特点,就是单单的只有面试题目.而没有面试过程中需要注意的细节和面试心得.导致有些面试者们在面试来临,就去盲目的去刷这 ...

  7. Android篇:2019初中级Android开发社招面试解答(下)

    金三银四,冲击大厂,你值得拥有的一份2019初中级移动端社招面试总结+解答 你当前所处: Android篇:2019初中级Android开发社招面试解答(下) Android篇:2019初中级Andr ...

  8. Android进程管理,Android开发者跳槽指南面试必备

    雪上加霜 本人一名Android程序员,今年29岁了.大厂小厂都呆过,现在在腾讯工作!明明工作顺利,家庭和睦儿女成全,但是总是会感觉到,一股无形的压力,推着我走!作为一名程序员我最怕的不是996,也是 ...

  9. 最全面试考点与面试技巧,真香!

    写在前面 身边有不少去大厂面试的朋友,其中小金面试字节跳动的经历很有意义,在这里分享给大家.小金是末流211计算机专业大三本科生,前几天面试了字节跳动的广州Android开发实习生.下面是他的面试经历 ...

最新文章

  1. keras 的 example 文件 mnist_denoising_autoencoder.py 解析
  2. JSP笔记-文件上传
  3. JavaScript 方法传参
  4. 在ubuntu下安显卡驱动
  5. php 解析java map,java_java遍历Map的几种方法分析,本文实例分析了java遍历Map的几 - phpStudy...
  6. 动态规划之图像压缩问题
  7. 李彦宏:百度智能汽车预计2023年和大家见面
  8. java 对象查找_通过Java中的参数集查找最合适的对象
  9. VB利用资源文件进行工作
  10. mysql study_mysql_study_3
  11. 以围棋来说,人工智能程序跟通常程序差异在哪里
  12. 【 Codeforces Round #395 (Div. 2) D】Timofey and rectangles【四色定理】
  13. [JNI]开发之旅(6)JNI函数中访问java类中对象的属性
  14. 【技术分享】数据之大,云动未来 - 弹性云数据库技术解析
  15. 【渝粤教育】电大中专中成药 (2)作业 题库
  16. 电脑桌面图标变成长方形咋办_为什么我的界面上的图标全部被一个长方形的图标覆盖了?...
  17. 00截断上传绕过_上传绕过总结
  18. 生产制造业ERP系统模块
  19. security基于数据库的认证
  20. 根据经度纬度获取距离(km/m)等工具类

热门文章

  1. 创未来,享非凡,openGauss Developer Day 2022圆满举行
  2. CAD使用易语言开发,设置环境
  3. 抖音推出付费功能,花钱看抖音的时代来了
  4. android10原生动态壁纸,三星S10手机原生壁纸下载
  5. oracle触发器insert
  6. python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...
  7. 2019年广东工业大学新生赛 A-原初的信纸
  8. 前端技术分享之3/8女神节抽奖活动
  9. cad画不规则实体_CAD三维实体入门法:制作不规则物体的方法/技巧
  10. php excel前台导出,ThinkPHP Excel导入导出示例