锁定老帖子 主题:上海华为的一次面试经历
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-03
谢谢liquidthinker得精彩解释,长知识了
|
|
返回顶楼 | |
发表时间:2007-10-04
ecipher写的方法很有意思,受教了,虽然逻辑上还有一点错误,但方法很好,值得借鉴
|
|
返回顶楼 | |
发表时间:2007-10-29
public static String cut(String str, int len) {
String resultStr = ""; for (int i = 0; i < str.length(); i++) { if (resultStr.getBytes().length + str.substring(i, i + 1).getBytes().length > len) { break; } else if (resultStr.getBytes().length + str.substring(i, i + 1).getBytes().length <= len) { resultStr = resultStr + str.substring(i, i + 1); } } return resultStr; } |
|
返回顶楼 | |
发表时间:2007-11-11
受益非浅!有这份经历真羡慕!
|
|
返回顶楼 | |
发表时间:2007-11-12
我也贴贴.我的代码
public static void splitString(String string,int bytes){ //获得总长度 int length=string.getBytes().length; if(bytes<=length){ //声明一个byte数组 byte[] b=new byte[bytes]; //获得string的byte数组 byte[] b1=string.getBytes(); //用一个数表示汉字的byte出现了几次 int count=0; for(int i=0;i<bytes;i++){ b[i]=b1[i]; if(b[i]<0) count++; } //如果出现的不是双数,说明多了半个汉字没有截取。就将byte长度。减少 if(count%2!=0) { bytes--; } byte result[]=new byte[bytes]; for(int j=0;j<bytes;j++) result[j]=b[j]; try{ System.out.println(new String(result)); }catch(Exception e){ } }else{ System.out.println("大于了总长度"); } } public static void main(String args[]){ String str=new String("我晕abc"); splitString(str,5); } 不知道各位达人。。觉得我的代码是否正确。 可以test 另外如果我在linux采用eclipse用utf-8的编码。 这个问题就会非常复杂。。 汉字是3个byte的话,这个题的难度就增加了。 不过用我这个算法。只需要将%2改成%3,并相应更改一些。其他的。 不知道我说的对不对 |
|
返回顶楼 | |
发表时间:2007-11-13
能显示中文就是GBK吧,答案要那么复杂吗。给一个简单的
public static String spitString(String str,int num) { if(num>str.getBytes().length) { return null; } else if(num==str.getBytes().length) { return str; } else { String s=new String(str.getBytes(),0,num-1); String s1=new String(str.getBytes(),0,num); String s2=new String(str.getBytes(),0,num+1); if(s1.length()==s2.length()) { return s; } return s1; } |
|
返回顶楼 | |
发表时间:2007-11-14
第2题lz的理解有误吧?从lz的程序中没有看出根据字节作的处理。另外题目出得也有问题,应该说明字符串是什么编码,才能按字节截取。不同编码会导致不同的答案,比如gbk编码下识别汉字就会根据gbk编码的特点来判别。实际上,要求完成的函数参数使用String并不合适,容易使人误解,应该使用byte[]题意更明确些,并告知使用何种编码。java中的String采用unicode,每个字符都占用2个字节,不分中文英文,所以题意肯定不是指unicode编码,而应该指gbk之类的ansi编码。
|
|
返回顶楼 | |
发表时间:2007-11-14
public static String splitString(String str, int k) { if (str == null || "".equals(str) || k < 1) { return ""; } byte[] temp = str.getBytes(); int pos = temp.length < k ? temp.length : k; try { String t = new String(temp, 0, pos, "GBK"); if (str.startsWith(t) == true) { return t; } else { return new String(temp, 0, pos - 1, "GBK"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; } |
|
返回顶楼 | |
发表时间:2007-12-05
汗,上海和南京的华为都去面试过,笔试题都很简单。
上海那回,就那个截取中文的程序没写起来,中午拿了10块钱饭票,贴了5 毛,两回都栽在集体面试上,总感觉很不适应这样的方式,看来还要再积累 经验才行,大公司还是必须适应大公司的那套东西! |
|
返回顶楼 | |
发表时间:2007-12-07
没经历过集体面试
我的3面是和HR单独谈的 用早就背好了的所谓追求人生价值的理论相互忽悠了一番 4面和一位女性领导(3级部门经理)聊了聊职业规划(中间问她一些关于公司培训和工作岗位职责的问题),谈了薪水,感觉她对我比较满意......=.=! 2周后接到录取通知,文化培训后来部门报道,然后发现上当了...... |
|
返回顶楼 | |