android 初学 需知

1.新建一个项目时,如果这个安卓项目需要上网,那么必须要在配置文件里面说明,也就是 在AndroidManifest.xml 里面添加 <uses-permission android:name="android.permission.INTERNET"/> ,否则会报错。


2.

import android.app.Activity;
import android.os.Bundle;


public class MainHelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

setContentView(R.layout.main)方法是给Activity设置可以显示的视图(View),视图由R类负责寻找。


3. Gen目录下有个R.Java文件,R文件由ADT自动生成,程序员不需要也不要去修改它,R文件负责调用应用程序中的非代码资源。


4. 在android程序的根目录都会有一个AndroidManifest.xml文件,该文件向Android操作系统描述了,本程序所包括的组件,所实现的功能,能处理的数据,要请求的资源等等。


<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”android.basic.my.helloworld”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.MainHelloWorld”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>


</application>
<uses-sdk android:minSdkVersion=”8″ />
</manifest>

节点属性里有versionCode和versionName来表示应用程序的版本;里面可以包含0个或1个application元素,application可以包含多个activity组件等等。


5. 作为一个Java项目,通常情况下都会引入要用到的工具类,也就是Jar包,在Android开发中,绝大部分开发用的工具包都被封装到一个名叫Android.jar的文件里了。


6.  绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。也就是说,这种布局不是很适合多分辨率适配的情况。


7.相对布局:相对布局的知识参考:

http://android.yaohuiji.com/archives/234

相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

8. SharedPreferences是一种轻量级的数据存储方式。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中。我们可以用一个记录音乐播放进度的例子来学习SharedPreferences的使用。


9.  Android应用程序的四个核心组件是:Activity、Service、Broadcast Receiver 和 Content Provider。在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中。Content Provider 提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。(例子:我在程序里获取手机联系人的数据)


10.  Handler  

当用户点击一个按钮时如果执行的是一个长耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被强制关闭,因此我们需要另外起动一个线程来处理长耗时操作,而主线程则不受其影响,在耗时操作完结发送消息给主线程,主线程再做相应处理。那么线程之间的消息传递和异步处理用的就是Handler。

在这里我感觉当我打开一个新的页面时,如果这个新的页面需要加载从网络上下载的内容时,我可以用handler来做出缓冲的效果。


11.   从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature)。
利用这些传感器我们可以制作出各种有趣的应用程序和游戏。譬如在口袋里晃一晃手机,手机就开始神不知鬼不觉的录音。 就是我们在做工程的时候要记得其实是有感应器这个东西的,它可以帮我们做出许多出色的效果。


12.  mkdir不能创建多个目录,如想一次创建多级目录,需要用mkdirs。也就是说,mkdir和mkdirs是不一样的。

13.scrollview嵌套gridview超出屏幕之后gridview底部的布局消失的问题:http://blog.sina.com.cn/s/blog_9456f8b30100xj63.html


转自:http://blog.csdn.net/djun100/article/details/11884563

Android面试汇总(百度+360+Tencent+淘宝+Qualcomm+HTC)2012年06月14日 08:05:05

汇总笔者经历了一些来自百度,360,淘宝,腾讯,高通中国,htc上海的电话面试及现场面试,还有笔试相关题目
百度:百度在北京中关村上地七街奎科科技大厦,不大但是很安静的一个办公地点。
百度技术面试分为两轮,第一轮基础技术面试,一般为项目负责人,主要考察基本知识及知识广度,第二轮面试一般为部门负责 人,主要考察技术深度。基础面试感觉个人答的还不错,主要询问了一些关于android基本知识的考察,涉及到Activity之间的跳转,然后问了一些 关于所参与项目中遇到的问题,比如现在做的云信项目中,如何提供传输效率等,然后讨论了一下关于View刷新机制等问题。总体来看一面比较容易,时间差不 多一个半小时。
第二轮面试,面试官看起来挺严肃的,当然由于是考技术深度,所以难度加大了,当然自己也败在这里边了。由于看到简历边有说JNI这块,他就特地主要文这块了,所有问题基本都是以C和数据结构为主。
主要问道:
1. 实现Strlen(char* str)
2. 说说常见的两种数据结构之间的区别,这里边问道了MAP,TREE,队列,数据,栈等。并且说说时间复杂度及空间复杂度。
3. 说说地图定位方式,详细说说wifi定位是如何实现的。
总体而言,之所以答的不好,对常见的数据结构确实并不是很熟悉,没有做好充分准备,建议如果去面试,好好复习《剑指名企Offer》。第三个问题,面试官让发挥想象去考虑wifi是怎么实现定位的,没有答出来。

360:位于北京朝阳区大望路地铁站不远处,办公地点环境很好。

涉及的主要问题:
1. 笔试,hashcode 与 equals()区别?
2. 冒泡排序算法实现
3. 常见的排序算法时间复杂度
4. dp,px,sp区别及使用场景
5. lauchmode及应用场景
6. 说说你对android的理解。
7. Android sqlite3是否支持并发访问?
8. 有没有遇到过各个版本之间android api接口的区别?试列举1~2个
9. Android wap访问方式。
360此次面试总体而言,表现挺失败的,笔试题没有答好。面试也没表现好。

腾讯面试:地点在腾讯大厦隔壁的楼里边。

腾讯在电话面试中主要问道了:
1. C++ 引用与指针的区别。
2. Android aidl原理。
3. 如何保证service在后台不被kill
现场笔试题如下:
1. Broadcast生命周期。
2. Requestlayout,onlayout,onDraw,DrawChild区别与联系
3. Invalidate 与 postInvaliate区别
4. Android 2D动画框架实现原理
5. Java状态机
6. 线程wait(),yelid(),sleep()区别
7. Java垃圾回收机制
8. 两种单例模式的实现方式
9. 与操作
10.递归算法
11.Map原理
12.Java中int char long各占多少字节数
13.Android为每个应用程序分配的内存大小是多少?
14.Integer与Int的区别。
笔试大概耗时30分钟。
面试过程中,主要是问关于算法与数据结构的题,问了C里边比较经典的一个算法题,求一个数N的2进制表现形式中1的个数。如3(0x0011)中为2个。
没答出来。
腾讯面试兼顾android及java基础知识,并且在面试中主要考察数据结构与算法,但是面试前没有花时间与精力复习此。悲剧的收场。

淘宝:淘宝面试只参与了电话面试,电话面试耗时约1小时,在电话面试中主要问了如下问题:
1. 自我介绍
2. 参考自我介绍,问了很多关于目前所做项目中遇到的问题
3. 在项目中遇到的最大的问题,回答,listview图片缓存机制。
4. 项目亮点:网络架构,说说对AsyncTask的理解。
5. 如何防止service被kill掉。
6. 说说View的刷新机制。
7. 对Java虚拟机的理解。Java内存回收机制的理解。
8. AIDL
淘宝电话面试时由于当时刚入门android没多久,只接触了一个项目,项目经验不够,并且由于对java理解很浅,所以得到的面试结果是:技术基础还可以,但是技术深度不够。

Qualcomm中国:
Qualcomm简历是在51job上投放的,这也是唯一一个通过网投简历获得的面试机会,其余全都是通过内部推荐获取,这也验证了,其实网投被HR看到的几率是很低,效率不高。不能完全依赖网投的方式进行找工作。、
此次电话面试的是Qualcomm中国上海的 android研发测试工程师,虽然是测试工程师职位,但是在面试过程中问到的问题,丝毫不比开发工程师难度低并且远胜过开发职位。
具体面试问题如下:
1. 谈谈对SurfaceView的理解
2. 如何防止进程死锁。
3. OO里边多态的概念
4. ContentProvider实现原理,为什么能够共享数据
5. 下载模块的优化
6. A a 与 Aa = new A();的区别
7. 说说常用的Intent Flag。
具体问题,目前只记得这几个了,但是面试交谈大概耗时一个小时,一个小时中问道了很多问题,包括linux系统知识,OO,C/C++知识,android及java。覆盖范围比较广。

HTC中国上海:
HTC面试也是通过网投的。看来HTC跟Qualcomm等外企通过网投的概率比较大。
HTC也是采取电话面试:
HTC电话面试,从对方听筒的声音来看,对方一共有5~6人参与面试,包括技术与人力。鸭梨山大。
主要问道如下问题:
1. AIDL
2. 强引用,软引用,弱引用之前的区别
3. Epub格式解析过程
4. 网络访问方式。
5. Davink与jvm的区别
6. Jni相关知识
7. ConentProvider实现过程,这个比较偏像于如何实现。
8. 数据库联表查询。
9. 抽象类跟接口的区别。
总体来看,其实HTC电话面试所问问题相对都比较容易答上,并且实际情况也是很容易通过电话面试了,但是考虑到个人职业规划安排,后续没有去上海总部面试。

经历过以上这些面经历,发现自己学到很多,也认识到很多不足:
1.在不断的面试过程中,自己对如何自我介绍这个环节有了一定提高,比如在baidu的面试自我介绍过程中,完美结合自己对产品的理解,以及如何把这个理念在开发中实现,摆脱了之前面试一位的补充简历的弊端。
2.通过不断的面试,发现了自己在技术上的不足,找到了后续提高的点。技术深度上下苦工,并且面试前要好好做好数据结构复习。
3.面试过程中,适度的低调,隐藏自己的知识面,通过 虽然我不知道是怎么做的,但是我想****这种方式来增强面试官对你的印象。
接下来自己要努力的点:
1. 解决上述面试过程中遇到的问题。
2. 在平时的工作中,多问为什么,多想想优缺点。
3. 研究SurfaceView,JNI,view工作原理,2D动画框架
4. 深入理解BINDER,CONTENTPROVIDER。
5. 深入学习java,多问几个为什么。


转自:http://www.cnblogs.com/thirller/p/4340754.html

面试了腾讯的安卓职位,职位的工作是给腾讯做一些SDK及其他一些工作。面试得比较仓促,结果比较明显,遂做一些总结,也给以后的自己提一些要求。

1. 第一轮笔试题目:

  1. 安卓的基本组件,说说都是做什么用的。Activiy、Intent、IntentFilter、BroadCast、BroadCastReciver
  2. Activity的生命周期
  3. 安卓定时器的实现,列举出来,越多越好
  4. 代码实现判断手机有无内存卡
  5. MVC模式在安卓中是如何体现的
  6. BroadCastReciver有几种注册方式,各有什么优缺点

2. 第二轮面试:

  1. 先是简单的自我介绍
  2. 项目经验介绍
  3. 项目中一些知识点提问
  4. 项目中遇到过的难题,是怎么解决的?
  5. 现场画出一个项目中网络请求的流程图

 

3. 总结:

   由于这次面试的比较仓促(腾讯也急缺人),在面试过程中,回答的问题总是显得不够条理,叙述不够有力,逻辑性不是很强。据朋友说,腾讯需要的人,是需要你在面试过冲中,显得比较强势,一定要够自信。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值