面试_存储过程……0042

  今天面试了两家,上午是某国企下属公司--A,下午是某100-499人民营--B。有面试的时候总是很愉快啊,有面试就有收获,嘿嘿。

  上午去A,进去二话不说,先扔过来一份信息表和一份笔试题,习惯了,提笔就写。

  其中有一道分割字符串的问题(T1)有点蒙,题目没看太明白,先空出来了,等到技术面试时,问清楚题意才又把解决方法说了一下。

T1题目大概:在分割字符串的时候,怎样才能保证汉字的完整性,例:“汉 ABC”4,截取后应为“汉 AB”;“汉 ABC 字 DEF”截取后应为“汉 ABC”,而不是“汉ABC+‘字’的半个”。(题目表述不是很清楚,当时没看明白要干嘛。)

  所以我的想法是先将字符串转换成char[]来实现截取,如果是汉字的话,那么转换成的char字符应该>0xff的,否则就是正常的字母或数字等单编码格式的

 public static String truncate(String str, int byteLength) {//将要处理的字符串和字节长度传入
         if (str == null) {//为空则返回
             return null;
         }
         if (str.length() == 0) {
             return str;
         }
         if (byteLength < 0) {
             throw new IllegalArgumentException("Parameter byteLength must be great than 0");
         }
         char[] chs = str.toCharArray();//将字符串转化为Char数组
         int i = 0;
         int len = 0;
         while ((len < byteLength) && (i < chs.length)) {
             len = (chs[i++] > 0xff) ? (len + 2) : (len + 1);//大于一字节则后移2位
         }
         if (len > byteLength) {
             i--;
         }
         return new String(chs, 0, i);
     }
}

  还有就是发现几次面试数据库都是重点,存储结构、左右内外连接、SQL Server2000的索引类型有哪些,等。

  float+float有什么后果?

  编程中没遇到过的同学可能要懵了,那能有啥后果?还是float呗,我也是这么想的,没反应过来想问什么。后来我才知道,人家是想问为啥结果不是double类型的。

科普:因为浮点数在系统中使用的是二进制的科学计数法,浮点运算有误差。很多编程语言都有这种问题。所以引入了专门的十进制运算的类型或者函数来进行计算。
在Java中,就是BigDecimal类。

float a=-3.4f;
float b=3.0f;
DecimalFormat ddf1 = new DecimalFormat("#0.0");
System.out.println(ddf1.format(a+b));

这样结果就会是-0.4了,需要指定精度。
------------------------------------------------------------------

今天就到这里啦,下线学习去。

题外话:今年的就业形势真的不容乐观,中美日韩朝关系紧张,好多外包公司或有外包项目的都取消了。行业不景气啊,╮(╯▽╰)╭。

 

posted @ 2013-04-19 21:18  达 达  阅读(1476)  评论(0)    收藏  举报