Android 15k+面试题

22 篇文章 1 订阅

每个项目产品都会让你加埋点,你是愿意花几天一个个加,还是愿意几分钟一个小时加完去喝茶聊天?来试试这520web工具, 高效加埋点,目前我们公司100号前端都在用,因为很好用,所以很自然普及开来了,推荐给大家吧

http://www.520webtool.com/

自己开发所以免费,埋点越多越能节约时间,点两下埋点就加上了,还不会犯错,里面有使用视频,反正免费 😄

 

转载于:https://blog.csdn.net/Leizi030017/article/details/51766122

1.listView的优化方式

重用convertView
viewHolder
static class viewHolder
在列表里面有图片的情况下,监听滑动不加载图片
多个不同布局,可以创建不同的viewHolder和convertView进行重用

2.listView展示数据几种形式
 

从sqlite拉取数据源显示
从xml使用pull解析拉取数据源显示
从网络上拉取数据源显示
 


50.谈谈你对框架的理解,设计框架的时候你是怎么考虑的,重构项目的时候你都遵循什么原则。

 

1.框架不要为应用做过多的假设
关于框架为应用做过多的假设,
一个非常具体的现象就是,
框架越俎代庖,
把本来是应
用要做的事情揽过来自己做。
这是一种典型的吃力不讨好的做法。
框架越俎代庖,
也许会使
得某一个具体应用的开发变得简单,
却会给其它更多想使用该框架的应用增加了本没有必要
的束缚和负担。
2.使用接口,保证框架提供的所有重要实现都是可以被替换的
 框架终究不是应用,
所以框架无法考虑所有应用的具体情况,
保证所有重要的组件的实
现都是可以被替换的,
这一点非常重要,
它使得应用可以根据当前的实际情况来替换掉框架
提供的部分组件的默认实现。
使用接口来定义框架中各个组件及组件间的联系,
将提高框架
的可复用性。
 3.框架应当简洁、一致、且目标集中
 框架应当简洁,
不要包含那些对框架目标来说无关紧要的东西,
保证框架中的每个组件
的存在都是为了支持框架目标的实现。包含过多无谓的元素(类、接口、枚举等)
,会使框
架变得难以理解,
尝试将这些对于框架核心目标不太重要的元素转移到类库中,
可以使得框
架更清晰、目标更集中。
 4.提供一个常用的骨架,但是不要固定骨架的结构,使骨架也是可以组装的
 比如说,
如果是针对某种业务处理的框架,
那么框架不应该只提供一套不可变更的业务
处理流程,而是应该将处理流程
“单步”
化,使得各个步骤是可以重新组装的,如此一来,应
用便可以根据实际情况来改变框架默认的处理流程。
这种框架的可定制化能力可以极大地提
高框架的可复用性。
 5.不断地重构框架
 如果说设计和实现一个高质量的框架有什么秘诀?答案只有一个,重构、不断地重构。
重构框架的实现代码、
甚至重构框架的设计。
重构的驱动力源于几个方面,
比如对要解决的
本质问题有了更清晰准备的认识,在使用框架的时候发现某些组件职责不明确、难以使用,
框架的层次结构不够清晰等。

51.LRU算法
 

假设 序列为 4 3 4 2 3 1 4 2
物理块有3个 则
首轮 4调入内存 4
次轮 3调入内存 3 4
之后 4调入内存 4 3
之后 2调入内存 2 4 3
之后 3调入内存 3 2 4
之后 1调入内存 1 3 2(因为最少使用的是4,所以丢弃4)
之后 4调入内存 4 1 3(原理同上)
最后 2调入内存 2 4 1 
在指定内存中如果超过内存剔除最近最少用的。


51.自定义控件的生命周期
 

onFinishInflate() 当View中所有的子控件均被映射成xml后触发 
onMeasure( int ,  int ) 确定所有子元素的大小 
onLayout( boolean ,  int ,  int ,  int ,  int ) 当View分配所有的子元素的大小和位置时触发     
onSizeChanged( int ,  int ,  int ,  int ) 当view的大小发生变化时触发  
onDraw(Canvas) view渲染内容的细节  
onKeyDown( int , KeyEvent) 有按键按下后触发  
onKeyUp( int , KeyEvent) 有按键按下后弹起时触发  
onTrackballEvent(MotionEvent) 轨迹球事件  
onTouchEvent(MotionEvent) 触屏事件  
onFocusChanged( boolean ,  int , Rect) 当View获取或失去焦点时触发   
onWindowFocusChanged( boolean ) 当窗口包含的view获取或失去焦点时触发  
onAttachedToWindow() 当view被附着到一个窗口时触发  
onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和  onAttachedToWindow() 是相反的。  
onWindowVisibilityChanged( int ) 当窗口中包含的可见的view发生变化时触发 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值