百度电话面试试题整理

1.说一下java GC算法

参考这篇博客:https://blog.csdn.net/d6619309/article/details/53358250

大概就是分代回收

我们一般讨论的垃圾回收主要针对Java堆内存中的新生代和老年代,也正因为新生代和老年代结构上的不同,所以产生了分代回收算法,即新生代的垃圾回收和老年代的垃圾回收采用的是不同的回收算法。针对新生代,主要采用复制算法,而针对老年代,通常采用标记-清除算法或者标记-整理算法来进行回收。


2.Android中为什么主线程不会因为Looper.loop()方法造成阻塞

参考:https://www.zhihu.com/question/34652589

           https://www.jianshu.com/p/cfe50b8b0a41


3.view的绘制过程

https://blog.csdn.net/guolin_blog/article/details/16330267

第一步:测量,确定大小

onMeasure()

第二步:布局,确定位置

onLayout()

第三步:绘制,总共可以分成六步

onDraw()


4.handler的send、post

https://blog.csdn.net/u013168615/article/details/47024073

post的延时是0?


5.java偏向锁、轻量锁和重量锁

https://blog.csdn.net/makecontral/article/details/79435933


6.安卓优化过的数据结构

https://blog.csdn.net/jasonwang18/article/details/70597665


7.LinearLayout和RelativeLayout性能对比-百度

  1. RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View2次onMeasure
  2. RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
  3. 在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。

最后再思考一下文章开头那个矛盾的问题,为什么Google给开发者默认新建了个RelativeLayout,而自己却在DecorView中用了个LinearLayout。因为DecorView的层级深度是已知而且固定的,上面一个标题栏,下面一个内容栏。采用RelativeLayout并不会降低层级深度,所以此时在根节点上用LinearLayout是效率最高的。而之所以给开发者默认新建了个RelativeLayout是希望开发者能采用尽量少的View层级来表达布局以实现性能最优,因为复杂的View嵌套对性能的影响会更大一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值