zoukankan      html  css  js  c++  java
  • android一些面试题目

    1.ListView怎么提高滑动效率
    2.说下你做过项目的包的构架,(联网,解析,activity,database) 重点
    3.载入大量图片怎么做(包含小图和查看大图) 怎么降低一次跟server的链接数,怎么做缓存,
    4.onInterceptTouchEvent(),onTouchEvent()的关系
    5.怎么在oncreate中大致计算一个view的高度(调一下view的measure,然后再getHeight即可了)
    6.MessageQueue,Looper,handler的关系(重点)
    7.android的widget统计,就是统计从widget中启动的次数
    8.大量数组怎么找出前5个最大的数(nlog5的复杂度,用一个5个元素的堆排序)
    9.final ,finalize,finally差别
    10.怎么写一个线程池(重点)当里面的线程池数满了,外面又来线程怎么办(用缓冲池),还有这个线程池怎么工作的,同步原理
    11.线程的yield,sleep(不释放锁),wait(释放锁,对象级别的)
    12.静态变量和动态变量 在java中的存储有啥区别
    13.java  深拷贝(重点)
    14.android task的形式(singletask,singtop之类的,要弄清楚他们的表现形式)
    15.listView下拉刷新怎么实现的
    16.Gallery的onFling()的实现原理,重写Gallery后onCount()的东西
    17.android的service的启动和销毁(重点)
    18.java有几种方式实现多线程
    19.怎么实现数据库的索引(B-树)
    20.java中的软引用,虚引用之类的表现形式)
    21.java中的垃圾回收 假设让你实现一个,怎么实现(百度面的时候问的)
    22.怎么自己定义一个View onMeasure,onLayout,这些的调用次序
    23.怎么自己定义属性  (要写出来)
    24.android的进程间通信
    25.BitmapFactory.decode()   sdcard中的一个图片  在不同分辨率下的getWidth()和getHeight()有什么区别
    26.让你当场写一个联网(给你url,用httpGet写)
    27.cmwap,cmnet,ctwap,ctnet的差别
    28.android scrollview怎么实现左右滑动  (有个scroller的属性,能够scroller.startScroll)
    29.android怎么实现左右滑动大图)
    30.activity的生命周期(重点)
    31android支持几种动画,还有各种动画的表现形式)(种是Tween动画、另一种是Frame动画。Tween动画,这样的实现方式能够使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 )
    32 gni怎么写的
    33.android 怎么进行传值的,尤其是对象
    34怎么让activity像对话框一样弹出来
    35.怎么写一个contentProvider




    进程间通信的答案:
    IDL的全称是什么?怎样工作?能处理哪些类型的数据?
    AIDL的英文全称是Android Interface Define Language
    当A进程要去调用B进程中的service时,并实现通信,我们通常都是通过AIDL来操作的
    Aproject:
    首先我们在net.blogjava.mobile.aidlservice包中创建一个RemoteService.aidl文件,在里面我们自己定义一个接口,含有方法get。ADT插件会在gen文件夹下自己主动生成一个RemoteService.java文件,该类中含有一个名为RemoteService.stub的内部类,该内部类中含有aidl文件接口的get方法。
    说明一:aidl文件的位置不固定,能够随意
    然后定义自己的MyService类,在MyService类中自己定义一个内部类去继承RemoteService.stub这个内部类,实现get方法。在onBind方法中返回这个内部类的对象,系统会自己主动将这个对象封装成IBinder对象,传递给他的调用者。
    其次须要在AndroidManifest.xml文件里配置MyService类,代码例如以下:
    <!-- 注冊服务 -->  
    <service android:name=".MyService"> 
       <intent-filter> 
       <!--  指定调用AIDL服务的ID  --> 
           <action android:name="net.blogjava.mobile.aidlservice.RemoteService" /> 
        </intent-filter> 
    </service>
    为什么要指定调用AIDL服务的ID,就是要告诉外界MyService这个类可以被别的进程訪问,仅仅要别的进程知道这个ID,正是有了这个ID,Bproject才干找到Aproject实现通信。
    说明:AIDL并不须要权限
    Bproject:
          首先我们要将Aproject中生成的RemoteService.java文件复制到Bproject中,在bindService方法中绑定aidl服务
          绑定AIDL服务就是将RemoteService的ID作为intent的action參数。
          说明:假设我们单独将RemoteService.aidl文件放在一个包里,那个在我们将gen文件夹下的该包复制到Bproject中。假设我们将RemoteService.aidl文件和我们的其它类存放在一起,那么我们在Bproject中就要建立对应的包,以保证RmoteService.java文件的报名正确,我们不能改动RemoteService.java文件
               bindService(new Inten("net.blogjava.mobile.aidlservice.RemoteService"), serviceConnection, Context.BIND_AUTO_CREATE); 
           ServiceConnection的onServiceConnected(ComponentName name, IBinder service)方法中的service參数就是Aproject中MyService类中继承了RemoteService.stub类的内部类的对象。






    Android应用程序结构是:
      Linux Kernel(Linux内核)、Libraries(系统执行库或者是c/c++核心库)、Application  
      Framework(开发框架包)、Applications (核心应用程序)


     在android中,请简述jni的调用过程。(8分)
    1)安装和下载Cygwin,下载 Android NDK
      2)在ndk项目中JNI接口的设计
      3)使用C/C++实现本地方法
      4)JNI生成动态链接库.so文件
      5)将动态链接库拷贝到javaproject,在javaproject中调用,执行javaproject就可以




    自己定义属性的答案:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
          <declare-styleable name="myView">  
             <attr name="textColor" format="color"/>  
             <attr name="textSize" format="dimension"/>  
         </declare-styleable> 
    </resources>
    package cn.com.flyfot.attrs;
      public MyView(Context context, AttributeSet attr) {  
                super(context, attr);  
                mPaint = new Paint();  
                //获取自己定义属性 
                TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);
                //获取尺寸属性值,默认大小为:30
                float textSize = a.getDimension(R.styleable.myView_textSize, 30);
                //获取颜色属性值,默认颜色为:0x990000FF
                int textColor = a.getColor(R.styleable.myView_textColor, 0x990000FF);
                //设置画笔的尺寸和颜色
                mPaint.setTextSize(textSize);  
                mPaint.setColor(textColor);  
                //缓存属性,能够不设置,主要是为了提高效率
                a.recycle();
            }  


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:flyfot="http://schemas.android.com/apk/res/cn.com.flyfot.attrs"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <!-- 设置属性 -->
       <cn.com.flyfot.attrs.MyView 
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        flyfot:textSize="120px"  
        flyfot:textColor="#ABCDEFEF"  
        />
     
    <!-- 
        注意引入命名空间:xmlns:flyfot="http://schemas.android.com/apk/res/cn.com.flyfot.attrs"
         --> 
       
    </LinearLayout>
  • 相关阅读:
    浏览器允许跨域运行字符串
    检查失败,<master>分支有过其他更新,请先在本地合并<master>分支的代码
    微信公众号开发点点滴滴
    手机上的软件开发应该
    见过写过最好的代码
    Prometheus之新版node_exporter监控主机设置
    Granfana设置邮件告警
    linux 中添加自己的库路径的方法 cannot open shared object file: No such file or directory
    C# this.Invoke()的作用与用法
    C#中this.Invoke()中委托的定义
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4543411.html
Copyright © 2011-2022 走看看