2014美图网校园招聘Android实习工程师笔试试卷详解

来源:互联网 发布:mac视频播放器哪个好 编辑:程序博客网 时间:2024/05/17 08:43

好久没写博客了,说好了要好好些博客的额,但是就是各种事情,也许都是借口吧,其实是自己太懒了,然后还是老毛病,不懂得抓紧时间,专注力不够,没有计划。剩下不到几天了,往前看,抓紧了!

就写一些我认为对大家以后工作面试笔试有作用的几道题目,至少花了时间不要去浪费,好吧,话不多说,接下来看美图网2014的几道笔试题,都不难,没有涉及到算法,基本考察的都是一些基础的东西,面向对象的思想等等。

Q:java语言如何进行异常处理,关键字throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

A:

用法:
try {
       // 可能会产生异常的代码
}
catch ( 异常类型  异常变量名 ) {
       // 某个特定类型的异常处理代码
       // 即使catch块是空的,也算是处理情况
}
catch由上到下只匹配其中一个异常类,而不会再执行别的catch块。
finally语句定义一个总是要执行的代码块,而不考虑异常是否被捕获。
trycatchfinally三个语句块均不能单独使用,三者可以组成try...catch...finallytry...catchtry...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。
try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

····有时默认的错误信息通常晦涩难懂,很难解释程序在何处出了何种问题。

        为了使程序更加健壮,对于有些异常是当前层不能解决的,则可上报给上层(抛出异常),由上层来处理。
  throws关键字:
出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型。
throws用法:方法声明 [throws <异常类>]  {   方法实现…    }
其中:异常类可以声明多个,用逗号分割。
throw关键字:
throw出现在方法体中,用于抛出一个具体的异常对象。
throw用法:if(异常条件) throw  <异常对象> ;  或
                       try{…}  catch { throw  <异常对象>;  }
举个例子:
public class test{
    public static void main(String[] args)  {
        try{
             System.out.println(Math.sqrt(-144) );
         } catch(Exception e) {
            System.out.println("Got a Exception:" +e.getMessage());
            e.printStackTrace();
         }
      }
}
这个例子里面,是不会发生异常的,这回输出NaN,所以底层的源码就不是很好,要自己去优化代码。
自定义ThrowAndThrows. sqrt()方法来改进Math.sqrt()方法,并对异常进行重新封装。
class ThrowAndThrows {
   public static double sqrt(String  nStr) throws Exception {  // throws出现在方法声明中
        if (nStr == null) {
          // throw出现在方法体中,用于抛出一个具体的异常对象
          throw new Exception("输入的字符不能为空!");
        }
        double n = 0;
        try {
          n = Double.parseDouble(nStr);
        }
        catch(NumberFormatException e) {
throw new Exception("输入的字符串必须能够转化成数字!");
        }
        if (n < 0 ){
            throw new Exception("输入的字符串转化成的数字必须大于0!");
        }
        return Math.sqrt(n);  
    }
}
值得一提的是,throw完之后就相当于跳出这个方法了。

其中,Exception是自定义异常类。以上就是我的总结,异常处理机制是java语言健壮性的体现之一,实际开发中要学会去运用这种强大的机制,本质就是程序员捕获到的异常自己处理了不影响正常执行,异常和正常程序分开了。
(补充:
try里面是可以抛出异常的。Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。throw和throws都是抛出异常的,但塔门有区别:throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛 出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异 常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。可见,throw可以主动抛出异常,也就是可以在try中抛出异常。



Q:假设有一个关于Door的抽象概念,该Door可以执行两个动作open和close。此时我们要求给Door加上报警的alarm功能,应该如何去设计程序的类结构?请写出设计代码?

A:

abstract class Door{//抽象类的好处是顾名思义讲一类东西抽象化,体会加内化
public abstract void open();
public abstract void close();
}
//然后再加入自己的东西,和其他不同的是你必须要实现
class TyzDoor extends Door{
@Override
public void open() {
// TODO Auto-generated method stub

}


@Override
public void close() {
// TODO Auto-generated method stub

}
public void alarm(){

}
}
        

关于这个抽象类,接口,多态相关的深层次理解,我之后会写一篇博客来总结。敬请期待。

Q:写一个函数,只能用一个for循环打印九九乘法表

A:

*/

#include<stdio.h>

intmain()

{

         shorti=1,j=1;

         while(i<10)

         {

                   printf("%d*%d=%d\t",j,i,i*j);

                   j++;

                   if(j>i)

                   {

                            j=1;

                            i++;

                            printf("\n");

                   }

         }

         return0;

}



Q: 利用你了解的面向对象的设计思想。设计出一下三种汽车的对象,轿车,货车,长途客车。(提示:一定要使用继承重载,包含信息 汽车的荷载人数,汽车最大载重,轮子,邮箱,其他相关信息可以分析加入到对象属性里面)


A:先空着,我之后会写一篇博客来总结。敬请期待。包括多态的理解。



Q: Android中常用的显示单位有px,dip,sp有什么区别,以及它们之间如何换算?

A:  px = dip*(density/160),sp常常用于字体。


Q:简要介绍android中jni的调用过程。

A:http://blog.csdn.net/conowen/article/details/7521340







0 0
原创粉丝点击