YY一面

编程题:

  1. 1000坛酒,里面有1坛毒酒,需要多少只老鼠才能判断出毒酒是哪坛?
    将坛就从1到1000使用二进制进行编号,例如11的二进制数是1011,那么就让1,2,4号小白鼠去喝这坛酒。50的二进制数是110010,那么就让2,5,6号小白鼠去喝这坛酒,1000的二进制最高位是第10位,所以需要10只小白鼠。最后通过死去的小白鼠我们可以确定是那坛酒有毒。
  2. 一个字符串,找出里面所有重复的子串,例如:“abcabda”中重复字串:a、b、ab。
    这道题主要考察kmp算法的应用。

Android:

  1. sp和dp的区别?交换使用会发生什么?
    sp是与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

  2. Android工程下assets和res的区别?
    1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中
    2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。
    res/raw和assets文件夹来存放不需要系统编译成二进制的文件,例如字体文件等
    在res文件夹下还可以定义一下目录:
    res/anim:这里存放的是动画资源。
    res/xml:可以在Activity中使用getResource().getXML()读取这里的资源文件
    res/raw:该目录下的文件可以直接复制到设备上,不能有子文件夹,编译软件时,这里的数据不需要编译,直接加入到程序安装包中,使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX.
    res/value:存放字符串资源
    res/drawable:存放图片资源

  3. 进程和线程的区别?
    进程是系统资源分配的基本单位;线程是系统调度的基本单位。

  4. C++的虚函数是怎么实现的?
    在函数前加上关键字virtual即可。

  5. 把mdpi目录下的文件放入xhdpi中会造成什么影响?
    那么在高分辨率的手机上显示,图片会偏小。

推荐阅读更多精彩内容