Android面试题

看了那么多书,真心发现一个道理:看懂了并不表示会说会用。

怎样改变 int 的第二个字节;

答:一种是采用位运算。
还可以通过将 int 转换成二进制的字符串,针对字符串进行操作。
(可我当时是什么情况呢,我忘了 int 有几个字节了)
面试题-2021-08-23-14-18-06

Java 怎么实现乘以 2 的操作;

答:通过移位操作的左移运算;(这个也要忘掉?)

介绍下二叉树

答: 每个节点最多有 2 个子树的树结构。
使用场景:常被用于实现二叉查找树和二元堆积。
存储表示:通过数组和链接串列来存储。
访问二叉树的方法:前序遍历,中序遍历,后序遍历。
参考资料: 二叉树-维基百科
(还是将数据结构和算法恶补下吧,基础太薄弱了)

view 中的draw()onDraw()区别

答:

  • onDraw()draw()方法的一部分;
  • 自定义 View 时只需要重写onDraw()方法;
    (通过源码public void draw(Canvas canvas) ,
    发现在draw()方法中,对onDraw进行了调用)
1
2
3
4
5
6
7
8
9
10
11
/*
* Draw traversal performs several drawing steps which must be executed
* in the appropriate order:
*
* 1. Draw the background
* 2. If necessary, save the canvas' layers to prepare for fading
* 3. Draw view's content
* 4. Draw children
* 5. If necessary, draw the fading edges and restore layers
* 6. Draw decorations (scrollbars for instance)
*/

When implementing a view, implement onDraw instead of draw(Canvas)

参考资料: