views:

3765

answers:

6

I'm a Python and iPhone developer, with some previous C# experience. I've been asked to do an initial screen of some candidates so someone with more experience in Android is going to be following up.

I did some searching on Stackoverflow and Google but wasn't able to find a good list of interview questions for an Android developer. Does anyone have suggestions for questions for a mid-level developer?

+2  A: 

I would look for a good coder first. Person who likes to do it as hobby as well. I'd ask to take a look for code examples he/she created in the past ( regardless of the language ). I'd also try to understand how fast this person can learn/adopt to new things. Hey, we have 3 new mobile OS released in last two years so we live in rapidly changing world. I'd also try to guess who well we're going to work together. Then you look for gravy - android experience. Apps on the market huge plus. Ask about choices of UI. Show your iPhone app and ask person how he would create same things android way. Specifics - i don't know, ask for core stuff like Activity life cycle

Bottom line - best interview get person a trial period like a months or so and see results. No interview replace the real experience.

Alex Volovoy
+2  A: 

Android is very different from iPhone. There are no real applications or windows, but there are background tasks and you can directly interact with other programs. Read up a little on Services, Activities, and Intents then formulate some questions about them. Could be as simple as What is an Activity? If you will have background processes, then ask How does a Service interact with the user? How do you declare a background process or Service? If you are doing gaming or animations, ask how to draw from a background thread. Understanding the manifest is important, so ask a few questions about that. Either what can you do with a manifest, or questions where the answer is put a line in the manifest. How do you let other apps control yours? How do you open a URL in a web browser? You can also look for some generic Java questions. An activity is usually terminated and relaunched for many system events like opening or closing the keyboard. Ask how to save state. Instead of nib/xib Android uses layout xml files. You could ask how interfaces are laid out. In Android, Views do not have a frame or bounds and are instead laid out by various kinds of ViewGroup, so you ask what a ViewGroup is. If you have some specific things from your projects, you could ask how they will be done. If you play audio, ask about that. Here are some places to start reading.

The Activity is a foreground task and the closest thing to a UI application on Android.

http://developer.android.com/reference/android/app/Activity.html

The Service is a background task.

http://developer.android.com/reference/android/app/Service.html

The manifest is like an Info.plist but does a lot more. All permissions and system interactions are in the manifest.

http://developer.android.com/guide/topics/manifest/manifest-intro.html

Hope that gets you started. You really have to tailor questions to your expectations. Not being familiar with the material, it would be easy to ask trivia type questions. I have been reading a lot of other SO answers on interviews because I am going to be doing some soon, and asking concept questions instead of trivia questions is a pretty strong theme. I would probably miss a lot of trivia questions even though I know the concepts and know where to look up the details.

drawnonward
+2  A: 

I would ask them to explain previous applications that they worked on, what level of involvement they had in development, and try to choose an area like Intents or Services, and see if they can explain them in a manner that you're able to see how they work. If after you ask that final question you don't understand Intents or Services, then I'd question either their knowledge on the topics, or their abilities to communicate the topics (which in some environments is just as bad).

Adam
A: 

Explaining how to do an app that gets data from a web-service and updates an app.

Macarse
+1  A: 

Just ask some basic stuff about programming mobile applications. The next interview will filter all the people that don't know what an Intent, an Activity and an manifest file are.

First use your knowledge to see if the person is a coder. Try some basic interview questions like let them "program" something easy on a white board like fizz buzz and see if they can do that. If they have problems doing that on the spot there is no need to ask them about mobile development. After that ask them what is special about developing on a phone. Technical like low memory, small screen mostly touch input. But also ask them from the User Experience view: Short interactions with the program, start where I left, fast program start for example.

For the android part there are some general questions you can use to see if the really thought about developing real applications for android.

Some of this questions that come to my mind are:

  • How do you write apps for multiple screen sizes (no fixed coordinates, use nine patch drawables, favor density independent pixels over pixel). Tell the interviewee that you have not programmed for android and that they should explain the whole area to you in a way you can understand. This also tests the communication skills of the person in front of you.

  • What are the problems publishing to the market, with the fragmentation of Android in multiple OS Versions and multiple phones. (Again let them explain it as if you are the manager not knowing Android and the Dev needs to justify why he needs other resources then the Iphone developer)

  • What is the basic setup of an Android app? You are programming it in Java. But it is compiled on a special compiler for android. Does that mean you can't use third party libraries you only get as compiled jar? (No the compiler works on class files.)

  • How do you define the user interface? (Mostly xml).

  • What do you have to do to test a new program on a real phone?

  • What is the result of the compilation process (An apk that bundles resources like image and class files)

This should be enough to see if the job interviewee knows enough to go into the next level. If he begins to stammer and can not explain all thing things in very general way he hasn't worked professionally with Android yet.

Janusz
A: 

What is an action?

A description of something that an Intent sender desires.

What is a resource?

A user-supplied XML, bitmap, or other file, injected into the application build process, which can later be loaded from code.

What is a Sticky Intent?

sendStickyBroadcast() performs a sendBroadcast (Intent) that is "sticky," i.e. the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver (BroadcastReceiver, IntentFilter). In all other ways, this behaves the same as sendBroadcast(Intent).

One example of a sticky broadcast sent via the operating system is ACTION_BATTERY_CHANGED. When you call registerReceiver() for that action -- even with a null BroadcastReceiver -- you get the Intent that was last broadcast for that action. Hence, you can use this to find the state of the battery without necessarily registering for all future state changes in the battery.

How will you record a phone call in Android? How to get a handle on Audio Stream for a call in Android?

Permissions.PROCESS_OUTGOING_CALLS: Allows an application to monitor, modify, or abort outgoing calls.

What's the difference between file, class and activity in android?

File - It is a block of arbitrary information, or resource for storing information. It can be of any type.

Class - Its a compiled form of .Java file . Android finally used this .class files to produce an executable apk

Activity - An activity is the equivalent of a Frame/Window in GUI toolkits. It is not a file or a file type it is just a class that can be extended in Android for loading UI elements on view.

Describe the APK format.

The APK file is compressed the AndroidManifest.xml file, application code (.dex files), resource files, and other files. A project is compiled into a single .apk file.

What is activity?

A single screen in an application, with supporting Java code.

What is intent?

A class (Intent) describes what a caller desires to do. The caller sends this intent to Android's intent resolver, which finds the most suitable activity for the intent.

How is nine-patch image different from a regular bitmap?

It is a resizable bitmap resource that can be used for backgrounds or other images on the device. The NinePatch class permits drawing a bitmap in nine sections. The four corners are unscaled; the four edges are scaled in one axis, and the middle is scaled in both axes.

What languages does Android support for application development?

Android applications are written using the Java programming language.

Android Developer