`
清泉风影
  • 浏览: 108023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

上海华为的一次面试经历

阅读更多

从接到华为面试电话那天起就在想,到底要不要走。去了是不是浪费自己的时间,在大脑反复的琢磨。直到今天早上起床的时候都在犹豫。发到我的邮箱的内容如下:

华为招聘:请于本周六8:30到浦东峨山路91弄98号陆家嘴软件园餐厅二楼参加工具开发部的技术面试,接待人张小姐,请带学位证、毕业证、英语四六级证、身份证以上四证的原件及复印件,简历,笔。若无法参加面试,请反馈给13661609375张先生。交通:地铁四号线到蓝村路下,219、东川线、871、隧道9线、970、619、819、610等到峨山路的车。
怎么是早上8:30呀!那我还不要6:30就要起床,因为要坐共交还要座地铁,真是够折磨人的。真的去了面试的地方太知道自己错,错在自己太守时了。实际上用不着去那么的早的。因为他有很多的场次,这场赶不上就下场,反正就一天的时间。听说是四面,到底是几面后面再说。接着往后说,我拿了一份应聘登记表,一五一十的填写个人相关的信息,具体什么内容,只要参加过相关面试的人都知道。接着就是上交应聘登记表,等待相应的面试官,在这过程中有两面,都是技术方面的面试。第一、问问相关的工作经历什么的。第二、就是做Java方面的面试题。不是我说,那Java面试超级的简单,都是我博客里的相关题目,这里我就说下最后那个编程题吧。
 
java 代码
  1. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。   
  2. 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。   
  3. public class ThreadTest1{   
  4. private int j;   
  5. public static void main(String args[]){   
  6. ThreadTest1 tt=new ThreadTest1();   
  7. Inc inc=tt.new Inc();   
  8. Dec dec=tt.new Dec();   
  9. for(int i=0;i<2>   
  10. Thread t=new Thread(inc);   
  11. t.start();   
  12. t=new Thread(dec);   
  13. t.start();   
  14. }   
  15. }   
  16. private synchronized void inc(){   
  17. j++;   
  18. System.out.println(Thread.currentThread().getName()+"-inc:"+j);   
  19. }   
  20. private synchronized void dec(){   
  21. j--;   
  22. System.out.println(Thread.currentThread().getName()+"-dec:"+j);   
  23. }   
  24. class Inc implements Runnable{   
  25. public void run(){   
  26. for(int i=0;i<100>   
  27. inc();   
  28. }   
  29. }   
  30. }   
  31. class Dec implements Runnable{   
  32. public void run(){   
  33. for(int i=0;i<100>   
  34. dec();   
  35. }   
  36. }   
  37. }   
  38. }   

 

java 代码
  1. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。    
  2.   
  3.   答:代码如下:   
  4.   
  5. package test;    
  6.   
  7. class  SplitString {   
  8.  String SplitStr;   
  9.  int SplitByte;   
  10.  public SplitString(String str,int bytes) {   
  11.   SplitStr=str;   
  12.   SplitByte=bytes;   
  13.   System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);   
  14.  }   
  15.   
  16.  public void SplitIt() {   
  17.   int loopCount;   
  18.   loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);   
  19.   System.out.println("Will Split into "+loopCount);   
  20.   for (int i=1;i<=loopCount ;i++ ) {   
  21.    if (i==loopCount){   
  22.     System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));   
  23.    } else {   
  24.     System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));   
  25.    }   
  26.   }   
  27.  }   
  28.   
  29.  public static void main(String[] args) {   
  30.   SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4);   
  31.   ss.SplitIt();   
  32.  }   
  33. }    
  34.   

 

这个我做的很不错已经给了面试官一个不错了印象,然后就让我做数据结构相关的题目。拿起试题就感觉到有点不对劲了,以前很熟悉的链表,遍历等等现在脑子里一点概念都没有了。随便做了下,结果很不理想。所以说想去华为面试之前一定要把数据结构的东西再回味一下。可能因为Java面试做得不错的原因吧,第一面就这样过了。等了一会,第二面开始了,先也是很谈谈工作经历什么的,接着就是让我做一份与操作系统相关的题目,然后就提了几个问题,就这样我的二面就过了,可能这就是他们一惯面试流程。面试官说你到下午1:30再进行三面吧。整个二面完是10:30左右。这就是说我的技术面试都面完了。

听说中午可以免费在华为的食堂吃饭,这个都是蛮不错的,还没有一个公司面试还提供免费午餐的。等到吃饭的时间去领了张饭票,上面的标价是9元。我随便先了二、三个就11元,只好自己再补二元。哈哈。。感觉不错,比我们以前公司里的食堂的饭菜强多了。中午休息的时候找到了个打乒乓球的地方,不过要收费(场地费6元,租用球拍2无,乒乓球2元,时间一个小时),好几年都没有打乒乓球,比较的爽。

反正等了很久再到三面。我们正式三面时候是5:00左右的样子,进去之后就来个自我介绍,由于我是坐在第一个坐子,因此从我第一个开始自我介绍。我一开始说了太多,被面试官打断了说你说简单点,就说说你的优点、缺点、个人爱好就可以了。由于我是第一个说的,不是很理想。每个人介绍完后面试官就发话了,你随便的说说在所有的自我介绍中谁给你的影响最深。然后一个一个接着发言,竟然有人说我对他留下的影响最深,说我是第一个发言的,还能随机应变,我那个时候真的很爽。。哈哈。我猜可能是因为我们有共同的爱好足球,所以才给他留下的影响最深。不管怎样还是很谢谢他。接下来就是相关活动的游戏测试。具体如下:接这次三面的人分成二组A,B,共同去完成这样的一件事。假如我们在月球上的飞船碰到了相应的故障,放在飞船上的物资要做相关的处理,下列的15种物资(水、氧气、食物、指南针、地图、PM、信号弹、急救箱、火柴、50米的绳子等等)中你会怎样排选,把你认识最不可少的列在第一位,如此类推。我就是在这个环节中被淘汰的。

今天刚刚面试完,回来就把全部的相见相闻都写了下来。不管怎样,有这样的一次面试机会真的是收获不小。因为在此之前我从来没有见过样的面试场面,大概有1000号人左右吧。下次有机会一定还要去华为面试。

 

分享到:
评论
31 楼 jieyuan_cg 2007-09-21  
piaoyyliu 写道
:) 其实也不能怪lz, 出题的人没说清楚, bytes你也的说清楚基于什么charsetname, 如果是ISO88591, lz肯定没问题, 如果是charset(gb2312, GBK, BIG5), 就有问题拉,汉字在中确实占两个字节,问题的关键在于考虑截取长度的最后一个字节,如果是属于一个汉字的第一个字节,忽略即可。

华为在广州的时候,我也去面试过,大概有个六轮面试,最后因小弟的一些非面试上的问题, 没有去。 顺便问下老兄们, 一直从事Java工作快5年了,在广州工资大概能拿多少,刚刚从西部过来三个多月, 临时在一家外包公司, 不懂行情, 目前工资向人家要了个6k, 是不是很低?


字符集要是ISO88591,对汉字还有意义吗?
30 楼 jieyuan_cg 2007-09-21  
楼主的第二道程序题目写的MS有点问题,好像没有切题。。。题目要求按字节长度分,而楼主的程序是按字符长度来分。。。这个。。。。
29 楼 piaoyyliu 2007-09-20  
:) 其实也不能怪lz, 出题的人没说清楚, bytes你也的说清楚基于什么charsetname, 如果是ISO88591, lz肯定没问题, 如果是charset(gb2312, GBK, BIG5), 就有问题拉,汉字在中确实占两个字节,问题的关键在于考虑截取长度的最后一个字节,如果是属于一个汉字的第一个字节,忽略即可。

华为在广州的时候,我也去面试过,大概有个六轮面试,最后因小弟的一些非面试上的问题, 没有去。 顺便问下老兄们, 一直从事Java工作快5年了,在广州工资大概能拿多少,刚刚从西部过来三个多月, 临时在一家外包公司, 不懂行情, 目前工资向人家要了个6k, 是不是很低?
28 楼 interpb 2007-09-20  
去年到南京华为 面试过

Java题目也是比较简单

传值传引用之类


27 楼 zlpgm 2007-09-20  
class  SplitString {   


static void fun(String str,int length){

System.out.println("输入的原始字符串为:" + str);

System.out.println("输入的原始字符串长度为:" + str.length());

StringBuffer sb = new StringBuffer();

for (int i = 0; i < length; i++) {
char[] c = new char[]{str.charAt(i)};
if((new String(c).getBytes()).length==2){
// 先将汉字加上
sb.append(str.charAt(i));
// 如果是汉字将求的长度减短一位,因为汉字站两位
length--;

}else{
// 不是汉字的情况
sb.append(str.charAt(i));
}
}

System.out.println("输出的结果字符串为:" + sb.toString());

}

public static void main(String[] args){

SplitString.fun("t汉t汗st", 5);
}


}   
这样是不是更方便呢
26 楼 zlpgm 2007-09-20  
metaphy 写道
String str = "我ABC汉DEF" ;
为什么我这字节长度显示为8?

package test;

public class StringBytesTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String str = "我ABC汉DEF" ;
		byte[] strb = str.getBytes() ;
		System.out.println (strb.length) ;
		byte[] byteNew = new byte[6] ;
		for (int i=0 ; i< 6 ;i++) {
			byteNew[i] = strb[i] ; 
		}
		String strNew = new String(byteNew) ;
		System.out.println (strNew) ;
	}
}


结果:
8
?ABC?D

英文windows XP, JRE 1.5,eclipse 3.3,代码编码UTF-8.


我测试输出怎么是10呢,应该说是10个字节,虽然一个char能放下一个汉字,但是一个汉字还是占2个字节
25 楼 hotfoxhot 2007-09-20  
liquidthinker 写道
liangwj72 写道
抛出异常的爱 写道
应该 是8 啊?

a
b
c

d
e
f

一个char可以放下一个汉字。。。


他用的是getBytes(),不是toCharArray(),不应该是8,是10

不知道他的机器运行结果为什么是8。


我来解释一下,首先确定是说的getBytes(),以及由此的一些测试
在这个讨论中的字符集有两种情况:
(1).java文件编码的字符集,默认是utf8,所以你可以用中文来命名类或者变量等等。metaphy所说的“代码编码”其实是指的这个,java文件的编码方式,仅此而已。所有语言平台下的这个默认字符集都是utf8,不管中文或者英文平台。
(2)j2se里面encode和decode使用的默认字符集,这个和jdk(jre?os?)有关,比如metaphy说的他是英文os,我猜想他的jdk也是英文的,encode和decode使用的默认字符集就是iso-8859-1(虽然他的java文件编码方式为utf8),在这个字符集里是不会认识中文的,因此getBytes()出来会是8位,中文和英文统一对待,原因就是iso-8859-1是西欧的,不会遇到用中文字符集编码解码。getBytes方法可以有一个字符串的参数,这个参数就是字符集,如果没有参数,那么默认使用平台字符集,在英文os下,有可能就是iso-8859-1了。

如果在中文平台下,由上面提到第2点知道getBytes()调用了中文平台的默认编解码字符集gbk,实际上相当于getBytes("gbk"),关于怎样构造字,一个汉字几位的问题暂不讨论,可以先明确的说gbk一个汉字两位,utf8一个汉字3位,具体原因可以搜索论坛上一个朋友写的东西(名字忘了,sorry),因此在中文平台下getBytes()或者getBytes("gbk")出来后是10位;同理getBytes("utf8")是12位。
希望有所帮助。





试了试,确实这样!受益了
24 楼 ganggang 2007-09-20  
感觉lz第二道题有问题呀?人家要求输出的是字节数阿

引用:如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。    


但按照lz的代码执行:
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4); 

结果:
test
中dd文
dsaf
中男大3
443n
中国43
中国人0
ewld
fls=
103

显示的结果却是字数。

偶得思路是:判断每个字节是否在0-127之间,来区分中文还是单字符, 不知是否可以。



23 楼 soso 2007-09-20  
个人感觉你哪个有点问题,看看我下面这个:
package com;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

static void fun(String str,int length){

Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");

System.out.println("输入的原始字符串为:" + str);

System.out.println("输入的原始字符串长度为:" + str.length());

StringBuffer sb = new StringBuffer();

for (int i = 0; i < length; i++) {
char[] c = new char[]{str.charAt(i)};
Matcher matcher = pattern.matcher(new String(c));
if (matcher.matches()){
//                                   先将汉字加上
sb.append(str.charAt(i));
// 如果是汉字将求的长度减短一位,因为汉字站两位
length--;

}else{
//                                   不是汉字的情况
sb.append(str.charAt(i));
}
}

System.out.println("输出的结果字符串为:" + sb.toString());

}

public static void main(String[] args){

Test.fun("t汉te汗st", 5);
}

}
22 楼 yanbory 2007-09-14  
zhang26chao 写道
那道截取字符串的题目做的对不对啊?题目要求按字节截取字符串,"我ABC"按4个字节截取出"我AB",截取的字符串总共有4个字节。是我理解错了吗?


其实,LZ的代码没有完全对题,他用的是char,而不是byte,但是也不能说LZ的编程就有问题,通常面试试题考的是应聘者的编程能力,虽然LZ没有完全对题,但是就上面的代码而言是:40%切题分+60%编程能力分。这种情况就要看阅卷人的出发点了,如果严格按题目要求,LZ的答案就是错的,反之亦然。

我改了一下,应该可以切题:

public void SplitIt() throws Exception {   
     
    byte[] splitBytes = SplitStr.getBytes("GBK");

    byte[] outBytes = new byte[SplitByte];

    for(int i=0; i<SplitByte; i++){

        outBytes[i] = splitBytes[i];

    }

    System.out.println("OUT: " + new String(outBytes));
    
}


顺便YY一下:要是LZ到我们公司来面试,我可能会因为LZ思维不严谨,态度不认真为由不给你机会,呵呵

个人见解,请各位大大指教,谢谢。   
21 楼 BirdGu 2007-09-12  
回家的路上又想了一下,第二点我说得不对。

由于加法和减法符合交换律,所以虽然线程运行过程中j的值不可预测,但所有线程执行完毕后j的最终值还是可以预测的。但如果不加synchronized,这一点就做不到了。
20 楼 BirdGu 2007-09-12  
引用
# 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。  
# 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。


这道题目的意思很模糊。
首先j到底是什么变量?类的静态变量?实例变量?线程的局部变量?没有作用域的变量名是没有意义的。

第二,也许出题的人是想考synchronized关键字。可是就LZ写的程序看,在任意时间"j"的值是不可预测的,因为4个线程的执行顺序是不可预测的。那么即使不加synchronized,也不会使这种不可预测性发生质的变化。所以synchronized根本没有必要。
19 楼 liquidthinker 2007-09-12  
另外在j2ee里面对应的encode和decode又不一样,因为jsr规范的原因,比如servlet容器,要求的默认编码是iso-8859-1,经常看到tomcat乱码等等,就是这里引起的,但另一方面servlet api提供了相应的更改编码的方式,因此这些问题都可以很好解决
18 楼 liquidthinker 2007-09-12  
ddandyy 写道
默認的不是什麽項目編碼  (也可能是俺孤陋了  還真是頭一次聽到)

默认是说的什么默认呢?
如果说java文件保存的编码默认,那么是utf8,与语言平台无关
如果说java里面用于encode和decode的编码,比如getBytes(),默认是语言平台默认的,中文平台位gbk,英文平台为iso-8859-1
上面两点一定不要混为一谈了
17 楼 ddandyy 2007-09-12  
默認的不是什麽項目編碼  (也可能是俺孤陋了  還真是頭一次聽到)
16 楼 liquidthinker 2007-09-12  
liangwj72 写道
抛出异常的爱 写道
应该 是8 啊?

a
b
c

d
e
f

一个char可以放下一个汉字。。。


他用的是getBytes(),不是toCharArray(),不应该是8,是10

不知道他的机器运行结果为什么是8。


我来解释一下,首先确定是说的getBytes(),以及由此的一些测试
在这个讨论中的字符集有两种情况:
(1).java文件编码的字符集,默认是utf8,所以你可以用中文来命名类或者变量等等。metaphy所说的“代码编码”其实是指的这个,java文件的编码方式,仅此而已。所有语言平台下的这个默认字符集都是utf8,不管中文或者英文平台。
(2)j2se里面encode和decode使用的默认字符集,这个和jdk(jre?os?)有关,比如metaphy说的他是英文os,我猜想他的jdk也是英文的,encode和decode使用的默认字符集就是iso-8859-1(虽然他的java文件编码方式为utf8),在这个字符集里是不会认识中文的,因此getBytes()出来会是8位,中文和英文统一对待,原因就是iso-8859-1是西欧的,不会遇到用中文字符集编码解码。getBytes方法可以有一个字符串的参数,这个参数就是字符集,如果没有参数,那么默认使用平台字符集,在英文os下,有可能就是iso-8859-1了。

如果在中文平台下,由上面提到第2点知道getBytes()调用了中文平台的默认编解码字符集gbk,实际上相当于getBytes("gbk"),关于怎样构造字,一个汉字几位的问题暂不讨论,可以先明确的说gbk一个汉字两位,utf8一个汉字3位,具体原因可以搜索论坛上一个朋友写的东西(名字忘了,sorry),因此在中文平台下getBytes()或者getBytes("gbk")出来后是10位;同理getBytes("utf8")是12位。
希望有所帮助。
15 楼 liangwj72 2007-09-12  
getBytes(),默认就是用项目的编码。他已经说明是"UTF-8"了。不需要指明编码
14 楼 ddandyy 2007-09-12  
沒有指定編碼          
13 楼 liangwj72 2007-09-12  
抛出异常的爱 写道
应该 是8 啊?

a
b
c

d
e
f

一个char可以放下一个汉字。。。


他用的是getBytes(),不是toCharArray(),不应该是8,是10

不知道他的机器运行结果为什么是8。
12 楼 zhang26chao 2007-09-11  
那道截取字符串的题目做的对不对啊?题目要求按字节截取字符串,"我ABC"按4个字节截取出"我AB",截取的字符串总共有4个字节。是我理解错了吗?

相关推荐

    中专生华为面试的真实经历.docx

    "中专生华为面试的真实经历" 知识点1:华为公司概况 华为是一家创造神线、G、高科技、高速成长、全民持股和民营企业,目前是在国内电信第一大供商货商,海外市场也越来越火红,正在蚕食网络商老大 CISCO 的本土美国...

    中兴 华为 腾讯 MTK 上海 Intel Marvell 面试经验

    3. **华为面试历程**:华为的面试流程相对严格,但从机试到多轮面试,求职者展示了良好的适应能力和解决问题的能力。最终成功获得Offer,证明了准备充分和积极应对挑战的价值。 综上所述,求职者在IT行业的求职过程...

    华为面试笔试题集合之精华

    本章节收集了求职者分享的华为面试经历,旨在帮助后来者更好地准备面试。 **4.1 华为面试流程** - **自我介绍**:简要介绍自己的教育背景和工作经验。 - **技术面试**:根据应聘岗位的不同,面试官会提出相应的...

    菜鸟取经·程序员面试(第1期)

    1.26 一次谷歌面试趣事 1.27 Google 的面试经历 1.28 IBM 面试记 1.29 Infosys 面试经历 1.30 搜狐,百度和豆瓣的面试感受 1.31 百度面试归来,经验值又+1 了 1.32 淘宝面试记 1.33 淘宝面试失败总结 1.34 腾讯实习...

    华为面试大礼包--2010

    ### 华为面试大礼包知识点总结 #### 一、公司相关信息 **公司概述:** - **成立时间与地点:** 华为技术有限公司成立于1988年,总部位于中国深圳。 - **业务范围:** 主要从事通信网络技术与产品的研发、生产和...

    上海贝尔_高质量C++编程指南

    6. **企业实践**:与华为、上海贝尔、中兴等公司的交流显示,提高质量和生产率是软件工程的核心问题。高质量的程序设计是实现这一目标的关键步骤。 综上所述,高质量C++编程不仅仅是熟练掌握语法和技巧,更是关于...

    某天大同学求职经验总结

    - **注重积累**:每一次面试都是积累经验的过程,无论是成功还是失败,都要从中吸取教训。 - **把握时机**:注意各行业招聘的时间节点,合理安排投递简历的时间。 - **心态调整**:保持积极乐观的心态面对求职过程中...

    面试简历模板

    【面试简历模板】是求职者展示自己技能、经验和能力的重要文档,它涵盖了个人基本信息、教育背景、工作经历、技能特长、自我评价以及求职意向等多个方面。以下是对张三的简历内容进行的详细解读: 1. **个人信息**...

    应届生找工作应聘必看的经典好文

    这篇文章是一位应届毕业生分享自己找工作的全貌,从求职目标设定到最终签约的经历。作者以系列文章的形式详细讲述了求职过程的各个阶段,包括前期准备、投递简历、笔试、面试、签约/违约以及总结。文章中,作者强调...

    代先生-嵌入式软件开发_网络公司it人员简历_程序员简历模板_计算机相关专业.docx

    在华为技术有限公司,代先生是嵌入式软件开发团队的一员,专注于无线链路性能优化和家庭路由智联组网。他带领一个6人团队,运用MU-MIMO、WMM、beforming、RTS/CTS等技术提升无线性能。在华为家庭网络荣耀路由项目组...

    名企2011校园招聘网申截至日期汇总

    【名企2011校园招聘网申截至...同时,准备充分的个人简历、实习经历以及面试技巧也是成功获得职位的关键。对于那些希望在知名公司开启职业生涯的毕业生来说,把握好这些时间点,提前准备,才能在激烈的竞争中脱颖而出。

    2008通信行业笔试题

    综上所述,2008年的通信行业不仅经历了重大的行业变革,如运营商重组、3G牌照发放等,还面临着新的技术和市场挑战。对于求职者而言,了解通信行业的基本情况、掌握必要的技能和知识是非常重要的。

Global site tag (gtag.js) - Google Analytics