2015.4.28 北京未名空间信息技术有限公司

HR说公司的老大是北大毕业的,公司成立快20年了,现在总共有43人,Android的有4个。HR面完让我做一份笔试题,拿走了我的手机,说发现有人百度。

笔试题分Java和Android两部分,Java40分,Android60分,我感觉我做的结果大概是50<score<60;即使>60也没戏,Java第一题就错了。。。

/**
	第一题  short s1 = 1; s1 = s1 + 1; 有错吗? 为什么?
	        short s1 = 1; s1 += 1; 有错吗? 为什么? 
 */
public class TestDataType {

	public static void main(String[] args) {
		
		short s1 = 1; s1 = s1 + 1;
		
		short s2 = 1; s2 += 1;
	}

}
答案详见博客 http://blog.csdn.net/hurryjiang/article/details/9256959

/**
	5.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,
	但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,
	应该输出“我ABC”,而不是“我ABC”+“汉”的半个。
 */
public class TestString {

	/**
		首先要了解中文字符有多种编码及各种编码的特征
	 */
	
	public static void main(String[] args) {
		try {
			String str = "我ABC-123你";
			int num = trimGBK(str.getBytes("GBK"), 10);
			System.out.println(str.substring(0, num));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

	/**
		假设n为要截取的字节数
	 */
	private static int trimGBK(byte[] buf, int n){
		int num=0;
		boolean isChineseFirstHalf = false; 
		for(int i=0;i<n;i++){
			System.out.println(buf[i]);
			if(buf[i]<0 && !isChineseFirstHalf){
				isChineseFirstHalf = true;
			}else{
				num++;
				isChineseFirstHalf = false;
			}
		}
		
		return num;
	}
	
}


你可能感兴趣的:(java,android,面试,笔试,未名空间)