华为的java面试题

2024-05-17

华为的java面试题(精选8篇)

篇1:华为的java面试题

第一部分:选择题

QUESTION NO: 1

1、public class Test {

public static void changeStr(String str){

str=“welcome”;

}

public static void main(String[] args) {

String str=“1234”;

changeStr(str);

System.out.println(str);

}

}

Please write the output result :

QUESTION NO:2

1. public class Test {

2. static boolean foo(char c) {

3. System.out.print(c);

4. return true;

5. }

6. public static void main( String[] argv ) {

7. int i =0;

8. for ( foo(“A”); foo(“B”)&&(i<2); foo(“C”)){

9. i++ ;

10. foo(“D”);

12. }

13. }

14. }

What is the result?

A. ABDCBDCB

B. ABCDABCD

C. Compilation fails.

D. An exception is thrown at runtime.

QUESTION NO: 3

1. class A {

2. protected int method1(int a, int b) { return 0; }

3. }

Which two are valid in a class that extends class A? (Choose two)

A. public int method1(int a, int b) { return 0; }

B. private int method1(int a, int b) { return 0; }

C. private int method1(int a, long b) { return 0; }

D. public short method1(int a, int b) { return 0; }

E. static protected int method1(int a, int b) { return 0; }

QUESTION NO: 4

1. public class Outer{

2. public void someOuterMethod {

3. // Line 3

4. }

5. public class Inner{}

6. public static void main( String[]argv ) {

7. Outer o = new Outer();

8. // Line 8

9. }

10. }

Which instantiates an instance of Inner?

A. new Inner(); // At line 3

B. new Inner(); // At line 8

C. new o.Inner(); // At line 8

D. new Outer.Inner(); // At line 8//new Outer().new Inner()

QUESTION NO: 5

Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?

A. The encodeURL method of the HttpServletRequest interface.

B. The encodeURL method of the HttpServletResponse interface.

C. The rewriteURL method of the HttpServletRequest interface.

D. The rewriteURL method of the HttpServletResponse interface.

QUESTION NO: 6

Which two are equivalent? (Choose two)

A. <%= YoshiBean.size%>

B. <%= YoshiBean.getSize()%>

C. <%= YoshiBean.getProperty(“size”)%>

D.

E.

F.

G.

QUESTION NO: 7

Which of the following statements regarding the lifecycle of a session bean are correct?

1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.

2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.

3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.

4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.

5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.

第二部分:概念题

1. 描述Struts体系结构?对应各个部分的开发工作主要包括哪些?

2 JSP有哪些内置对象和动作?它们的作用分别是什么?

3、SQL问答题

SELECT * FROM TABLE

SELECT * FROM TABLE

WHERE NAME LIKE “%%” AND ADDR LIKE “%%”

AND (1_ADDR LIKE “%%” OR 2_ADDR LIKE “%%”

OR 3_ADDR LIKE “%%” OR 4_ADDR LIKE “%%” )

的检索结果为何不同?

4、SQL问答题

表结构:

1、表名:g_cardapply

字段(字段名/类型/长度):

g_applyno varchar 8;//申请单号(关键字)

g_applydate bigint 8;//申请日期

g_state varchar 2;//申请状态

2、表名:g_cardapplydetail

字段(字段名/类型/长度):

g_applyno varchar 8;//申请单号(关键字)

g_name varchar 30;//申请人姓名

g_idcard varchar 18;//申请人身份证号

g_state varchar 2;//申请状态

其中,两个表的关联字段为申请单号,

 

华为招聘Java面试题

题目:

1、查询身份证号码为440401430103082的申请日期

2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数

3、将身份证号码为440401430103082的记录在两个表中的申请状态均改为07

4、删除g_cardapplydetail表中所有姓李的记录

 

篇2:华为的java面试题

要点:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

问题:Java为什么要引入异常处理机制

要点:

程序执行时经常会出现除零溢出、数组越界等运行错误,影响程序的正常执行。错误及异常是不可避免的,一个好的应用程序,在满足用户要求的各种功能的同时,还应具备能预见程序执行过程中可能产生的各种异常的能力,并能为异常情况给予恰当处理。在Java语言中,这种技术就是异常处理 Java语言通过面向对象的异常处理机制来解决运行期间的错误,可以预防错误的程序代码或系统错误所造成的不可预期的结果发生。减少编程人员的工作,增加了程序的灵活性,增加程序的可读性和健壮性.问题:什么是JAVA多线程机制

一.什么是多线程?

多线程是指同时存在几个执行体,按照不同的执行线索共同工作的情况。

二.什么是程序,进程和线程?

程序是一段静态的代码,是应用软件执行的蓝本。

进程是程序的一次动态执行过程,它对应了从代码加载,执行至执行完毕的一个完整的过程。这个过程也是进程本身从生产,发展至消亡的过程。

线程是比进程更小的执行单位。

区别:一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索即每个线程也有其从生产,发展到消亡的过程。

三.线程的生命周期

线程的生命周期可分为四个阶段,新建,运行,中断和死亡。

新建:当一个Thread类或者其子类的对象被声明并创建时,新生成的线程就处于新建装他,有了相应的内存空间和其他资源。

运行:线程被创建之后,就有了运行的条件了,一旦轮到它来享用CPU资源时,便可以摆脱创建它的主进程开始了自己的生命周期。

中断:一个正在执行的线程可能被认为的中断,让出CPU使用权,进入阻塞状态。线程阻塞时,不能进入排队队列,只有当引起阻塞的原因被撤销时,线程才可转入就绪状态,重新进入排队队列中,等待CPU资源,以便从中止处开始运行。

死亡:线程死亡有2种情况,一是正常运行,完成了它全部的工作。另一种是线程被提前强制终止。死亡状态下的线程,释放了被分配的内存。

四.线程的优先级

在java系统中,线程调度依据优先级基础上的“先到先服务”原则。

Thread类的setPriority(int a)方法可设置线程的优先级,取值有Thread.MIN_PRIORITY,Thread.MAX_PRIORITY, Thread.NORM_PRIORITY三种,默认级别为Thread.NORM_PRIORITY.五.如何实现多线程

Java编程中实现多线程有两种方式:一是继承Thread类,用其子类创建线程,二是实现Runnable接口

六.线程同步

当两个或者多个线程同时访问一个变量,并且一个线程需要改变某个变量时,需要对修改数据的方法修饰为synchronized.当一个线程在使用同步方法时需要用到某个变量,而此变量又需要其他线程修改后才能符合本线程需要,此时用wait(),让本线程等待。

其他线程如果在使用同步方法时不需要等待,那么当它使用完该方法后,用notifyAll()方法通知所有由于使用该同步方法而处于等待的线程结束等待,(notify()方法只能通知第一个处于等待的线程结束等待)

七.Interrupt()方法

一个线程在run方法执行完后便会自动消灭,如果想在run方法执完毕前就消灭线程,可以使用interrupt()方法,此时该线程会捕获InterruptedException异常,在处理该异常的语句里告诉线程立刻结束run方法的执行。

问题:java多线程使用cup是什么机制

要点:java获得cup使用权根据优先级,高优先的先执行,这个和操作系统是一样的,但是优先级别的控制是通过虚拟机控制的,然后在执行的时候是通过操作系统时间片的机制,多线程java有自己的调度算法,虚拟机会自动调度执行的线程,而操作系统处理的是cpu的执行,其实两者都有调度算法,xp的机制我想和

1、main方法是怎么写的public static void main(String [] args){}

2、变量的命名规则是怎么样的?

采用驼峰命名法,见名知意,以小写字母开始。

常量命名:全部大写。

方法命名: 小写字母开始,驼峰命名。

类命名:首字母大写。

3、if„else„和写两个if 有什么区别

if„else„只执行其中一条,写两个if,两个都要执行

4、在JAVA中直接写浮点常数,默认是什么类型?

默认是double类型

5、什么是标识符?它的命名规则是什么?

凡是可以命名的地方都叫标识符。

标识符有两种:

1、系统标识符(关键字);

2、用户标识符

以字母、数字、下划线、$复活组成,不能以数字开头

6、什么是变量?

变量是命了名的内存空间,并且空间的值是可以改变的。

7、JDK与JRE分别是什么?

JDK叫java开发工具集,包括编译环境、运行环境、调试环境以及基础类库。

JRE叫java运行环境,包括虚拟机、核心类库、以及健接文件。

8、try-catch-finally三个基本块的作用?catch里的代码是干什么的?

try块表示此处代码可能引发异常

catch块捕获try块的异常

finally块通常用于资源的回收,连接关闭,清理工作等

try-catch-finally不能单独存在,try块后必须跟catch或finally

catch或finally前必须跟try块

9、继承类和实现接口分别怎么做?

继承用extends关键字继承

定义接口用interface关键字

实现接口用implements10、如何去获得字符串的长度?

调用String类的length()方法

11、Java的基本数据类型有哪些?

int 4字节 整型

byte 1字节 整型

char 2字节 整型

short 4字节 整型

long 8字节 整型

double 8字节 浮点

float 4字节 浮点

boolean 布尔

12、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

值传递,Java里没有引用传递

13、列出至少5个最常见到的runtime exception并描述在什么情况下出现

IOException在未找到文件时会抛出

NullPointerExecption在对象引用指向空时会抛出

ArrayIndexOutOfBoundsExecption在数组下标越界时会抛出

NumberFormatException在字符串不能转换成数字时会抛出

ArithmeticException在分母为零时会抛出

14、ArrayList和Vector的区别

vector是线程安全的,所以效率低,Arraylist是线程不安全的,但是效率高。

15、在IO中字节流和字符流的父类是什么?

字节流父类是InputStrean和OutputStream

字符流父类是Reader和Writer16、什么是包?定义包有什么好处?

文件夹。

好处:

1、可以有效的组织相关类;

2、可以做到信息的隐藏。

17、怎么样知道磁盘一个目录中有哪些文件?

1、File对象.list()方法;

2、File对象.listFile()方法。

18、如何获得一定范围的随机整数?

x+Math.random()*y 其中x是位移数,确定最小范围,y是放大系数,确定最大数。

(x-y)*Math.randon()+y19、如何获得java当前的工作目录

使用System.getProperty(“user.dir”)能够获得当前工作目录的字符串地址。

20、怎么样判断一个异常类是checked异常还是unchecked异常?

判断当前异常类,是否是RuntimeException的子类,如果是,则是运行期异常否则是编译期异常。

21、log4j一共有几个级别?分别是哪些?级别的高低有什么样的区别.log4j有五个级别:

DEBUG:调试

INFO:信息

WARN:警告

ERROR:错误

FATAL:崩溃

21、静态变量和成员变量应该怎么访问?

静态变量可以通过对象.和类名.的方式访问

成员变量通过对象.的方式访问

22、如何将一个字符串转成一个基本数据类型

Int x = Integer.parselint(“32”);

Double d = Double.parseDouble(“4.5”);

23、如何让JFrame的初始位置居中(在不同的分辨率中)

窗体对象.setLocationRelativeTo(null);

24、谈谈集合的作用

方便对数据进行 存储,检索,操作,传输。

25、类的修饰符能不能是private、static、protected?

内部类可以,因为内部类相当于外部类的属性

26、Try块中是否所有的语句都一定会执行,为什么?

不是,一但try中发生了异常,那么异常发生处下面的语句就不会执行,专区catch块执行

27、什么时候用继承,什么时候用接口?

当需要重用属性和方法时使用继承

当只需要重用方法时用接口

28、finally是不是什么时候都会执行?

是当虚拟机关闭,System.exit(0),finally内容不会执行;

29、什么是主线程?

当main()方法执行时会产生主线程,1最先开始 2最后结束

3产生其他子线程

4回收资源

30、进行IO流操作时,如果操作的文件不存在会发生什么情况?

读取流在文件不存在时,会抛出文件未找到异常

写入流在文件不存在时,会创建文件,但如果该文件所在目录不存在,同时会抛出文件未找到异常

31、IO流操作的步骤是怎么样的?

创建流 操作流 关闭流

32、finally的作用是什么?

无论是否有异常都会执行的代码块,一般用于资源回收,比如流动关闭、数据库的关闭

34、当一个线程进入一个对象的一个同步方法后,能否进入其它非同步方法? 么?一般在什么时候使用? 可以,但不能进入其他同步方法。

33、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?

Finally{}在程序开启时只执行它本身里的代码。

会执行,在方法返回前执行

35、如何启动线程,它直接调用run()方法有什么区别?

启动线程调用start方法,用start方法启动线程后,是多个线程同时进行,使用run()是普通方法,是不会产生新的线程,是单线程。

36、数组有没有length()这个方法? String有没有length()这个方法?

数组有length属性,String有length方法

37、GC是什么? 为什么要有GC?

GC叫做垃圾回收器,为了回收内存不再使用对象,释放内存空间,避免内存溢出。

38、线程同步化会带什么样的结果?

1:可以使数据安全

2:效率会降低

39、什么是线程安全?

当两个或两个以上线程,访问同一个资源时,为了保证数据的安全,只允许同一时间

只能有一个线程访问该资源。

40、服务器类有一个while循环,能否直接while(true)?

可以,但这样缺乏灵活性,没有办法控制循环结束,最好使用boolean变量来控制

循环的运行和结束。

41、java帮助文档是如何生成的?

Javadoc.exe42、什么时候类名和文件名必须一致?

当类的定义为Public时,类名必须与文件名保存一致

43、如何将实现包装类和基本数据类型转化?

包装转基本1:包装类对象.xxxvalue(值);2直接赋值

基本转包装1: Integer = new Integer(90);2直接赋值

44、类InputStream中方法read()的返回值是什么?读出的是什么?

Read()返回的是int,读取的数据

read(byte[])返回int 当前读取的字节数

45、如果一个类实现一个接口,可不可以不实现接口里定义的所有方法?

可以,但这个类只能是抽象类

46、构造方法和方法有什么区别?构造方法能不能被重载,能不能被重写?

构造方法和雷鸣相同,构造方法没有返回类型,在对象创建时,被调用。

构造方法可以重载,不能重写。

47、请列举switch()括号中能接受的所有数据类型。

Char byte short int48、GUI的布局管理器常见的有哪几种?

绝对布局

边界布局管理器

卡片布局管理器

流布局管理器

网格布局管理器

49、断言有什么作用?

断言是一个布尔表达式,当表达式为真继续执行,表达式为假,则抛出一个断言错误,主要用于测试。

50、String和StringBuffer的区别?

String具有长度不可变的特性,当String做添加、删除修改时,会产生一个新对象

StringBuffer是String类的一个改进版,是缓冲区的一个对象,当对该对象进行字符的添加、修改时,不会产生新对象。

51、接口里方法修符是什么?

Public abstract52、接口里可以定义变量吗?

不行,就可中的变量修饰符是public static final 只能定义常量

53、说几个String常用的方法

String.length()split()substring()equals()indexOf()lastundexOf()

54、在Dos界面下如何编译并执行Java程序?

Javac 文件名

Java 类名

55、创建一个线程有几种方法?

集成 thread 类

实现Runnable接口

56、项目开发的流程是怎么样的?

市场调研,需求分析,概要设计,详细设计,编码,测试,维护。

57、java语言的特点是什么?

简单,面向对象,分布式,健壮,可移植,解释性,安全,多线程,垃圾回收

58、main方法中有个参数String[] args。这个参数的值是由谁传递给它的。执行java类时,由控制台传入

59、java中采用什么字符编码集?char类型能不能放入一个中文字? Unicode 该字符集一个字符有2个字节。,char是两个字节可以放一个中文,因为中文是两个字节

60、byte的取值范围

-128~+127(-2的7次方to2的7次方-1)

61、GET方式和POST方式提交时,流有什么不同?

GET和POST是HTTP协议请求服务器的两种方式

GET方式页面参数,是附加在URL后面。/login?userName=XXX

篇3:华为的java面试题

1.1 题目

一道数字组合题要求:9个数字1-9组成3个数, 如:327 654 981, 每个数字只能用一次, 每3个数字组成一个组的数字;第二组数字是第一组数字的两倍;第3组数字是第一组数字的3倍, 用程序实现。

1.2 要点分析

根据题目要求进行要点分析:

(1) 9个数字1-9组成3个数:三组数字中不能能包含0。

(2) 每个数字只能用一次:可以推算出3组数字中最大一组数字的值不能超过987, 最小一组数字的值不能小于123。

(3) 每3个数字组成一个组的数字, 第二组数字是第一组数字的两倍, 第三组数字是第一组数字的3倍:由3组数字之间的关系可以推断出第一组数字为最小, 且最小值为123, 由第三组数字是第一组数字的3倍可以将第一组数字最大值定位在333, 又因为第二个要点决定了第一组数字的第二位只能是2, 不难得出第一组数字的第三位最大就是9了。由此推出第一组数字的最大值为329, 最小值为123。

(4) 第二组数字是第一组数字的两倍, 第三组数字是第一组数字的3倍:根据相互关系很快能够得到第二组数字和第三组数字。同时结合第二点分析进行结果排重后得到正确结果。

2 算法与描述

根据1.2的要点分析Java类基本结构已经呈现出来了, 类中最多需要2个方法:

(1) 校验方法:用于数字排重和排除三组数字中包含0的结果。

(2) 3组数字产生方法:产生的3组数字进行组合进行校验, 符合的就是目标结果。

类中第一个基本校验方法貌似公用的, 这里给出命名为vaildRepeat (String str) , 由函数名可知有重复的返回为true, 否则返回为false。

这个方法输入参数为一个字符串, 该字符串可以是第一组数字、第一、第二组数字组合或者是第一、第二、第三组数字组合的一个字符串。所以方法体定义为如下:

校验方法第一步就是检查方法输入参数中是否包含0, 如果包含0立刻返回一个true, 一行代码:if (str.indexOf ("0") >0) {return true;}

方法第二步就是检查数字1到9在输入参数中出现的次数, 因为题目中已经限制了数字只能出现一次, 所以只要统计这9个数字在字符串中出现的次数就可以了。很明显每个数字统计结果只能是0和1。所以在类初始位置定义了2个final类型的静态常量, 静态常量的修改可以帮助解决本题目后续延伸问题。

统计这9个数字在字符串中出现的次数相信不是件难事, 下面按照对Java编程熟悉程度不同给出4种不同的程序描述。

2.1 入门级代码

入门级代码主要是分别生成3组数字, 因为第一组数字的范围已经可以确定了, 所以循环的起始和终止也就有, 代码如下:

for (int i=123;i<=329;i++) //注意中间是小于等于

入门级代码中需要分别产生出3组数字, 由于每组数字是一个不定长的数组, 在方法的起始的地方定义了2个ArrayList数组, 分别为firstList、secList, 分别用于存储符合条件的第一组数字和第二组数字。

第一组数字要求在123到330之间的所有符合前3位不重复且不含0的数字组合, 符合条件的存入到firstList。

第二组数字是在firstList的范围中*2, 转换成字符串后和第一组数字进行拼接成一个字符串, 调用vaildRepeat () 方法, 返回值为false的存入到secList。

第三组数字在secList列表范围中的数字除以2, 然后乘以3, 除法结果拼接secList记录然后再拼接乘以3的结果转化成字符串, 调用vaildRepeat () 方法返回值为false的记录就是结果。

fun1代码如下:

2.2 改进代码

fun1代码执行结果就本题所需要的结果, 且代码逻辑非常清楚, 代码简单易懂。但是运行效率较为底下, 尤其是分别生成第一组数字、第二组数字和第三组数字时多次采用循环。改进该部分代码就是一次生成3组数字的一个字符串, 然后再进行调用vaildRepeat () 方法返回值为false的记录就是结果。代码如下:

2.3 运用Java API代码

经过改进后的程序代码已经少了很多了, 是否有更简洁的代码取代vaildRepeat () 方法呢?熟悉Java API的高手们根据题目要求很快发现如果对字符串进行排序后的字符串一定为“123456789”, 所以要对上面生成字符串进行重新排序。

使用Java提供API的重新排序功能, 取代了vaildRepea () 方法。排序后结果和字符串“123456789”进行比对, 很大程度上提供了代码执行效率, 代码如下:

public static void fun3 ()

该方法抓住了1-9不可重复, 对新串排序后进行比较, 效率大大提高。

到目前为止本题的算法可以只用fun3 () 就可以得出正确的答案。

2.4 正则表达式方法

除了上面3种程序外, 资深Java程序员又给出了一个更高效、更简洁的方法, 那就是正则表达式。通过正则表达式去做验证从代码的简洁度、代码执行效率上来讲都是无可挑剔的。

使用正则表达式就先要找到一个表达式, 这个表达式需要符合1-9数字不重复且不包含0的2个要求。数字不重复表达式“d* (d) d*1”, 另外一点是不包含0, 在表达式的末尾增加|0, 全部就是“d* (d) d*1|0”。

最后还需针对不同方法引用不同的包:

(1) 入门级代码中需要引入包:java.util.ArrayLis。

(2) 运用Java API代码需要引入包:java.util.Arrays。

(3) 正则表达式方法需要引入包:java.util.regex.Pattern。

在类中定义一个main函数, 分别调用类中的方法得到同样的结果, 为了能在main方法中不定义对象直接调用类中的方法, 需要将各个方法定义成static (静态) 方法。

运行结果如下:

3 结语

回过头来看一下4个方法代码中需要注意的几个点:

(1) final类型的静态常量的运用

在类开始定义了2个final类型的静态常量, 为什么不把fun3 () 中的targetStr也定义成一份final类型的静态常量呢?

按照Java基础知识中对于静态常量的定义也可以将targetStr定义为final类型的静态常量, 但是实际使用过程中targetStr没有被外部函数重复调用, 所以定义为一个方法的局部变量, 方法执行完了targetStr所占用的内存就立刻被释放了。

MAX_DISPLAY_CNT和NBR_STR_ARR在校验函数中频繁使用, 为了避免每次使用时重新分配内存区域, 提高程序执行效率, 在类初始化是加载到静态内存区域中, 随着类对象生命周期结束, 静态变量占用的内存区域也同时被回收。

(2) fun1 () 代码中ArrayList数组为什么是2个而不是3个呢?

因为2个ArrayList对象分别用于临时存储符合条件的第一组数字和第二组数字的, 当secList的对象生成结束后, firstList就已经没有存在的必要了, 可以对其进行置null便于GC进行内存立即回收了。

(3) StringBuffer的使用

代码中多次使用到StringBuffer newStr=null;然后在循环中才进行实例化操作newStr=new StringBuffer () ;, 而不是在循环体内部进行StringBuffer newStr=new StringBuffer () ;, 这样做的好处是newStr内存可以重复使用, 减少内存消耗。另外append () 方法可以直接将int型数字自动转化成String进行字符串拼接。

上面4种算法由浅入深地介绍了本题解决方案, 运行效率不断提升。从4种方案让人感受到了Java程序开发之美。但是由此题进行延伸的话, 将题目中的每个数字只能用一次改为每个数字只能用N次, N在1到9之间。

摘要:对数字组合题本身进行要点分析, 通过4种不同的程序风格由浅入深地介绍Java程序开发之美。

篇4:微软的面试题

一个求职者应聘微软的部门经理,面试官抛出一道考题:一天晚上,结伴同行的4个人要由一座小桥的一边到达另一边,过桥时必须用到手电筒,但手电筒只有一支,而小桥每次最多只可以通过两人。4个人的过桥时间分别为1分钟、2分钟、5分钟、10分钟。要让所有人安全通过小桥。最少需要多长时间?

听完,求职者立即埋头计算。来微软之前,他曾经在别的公司做过项目经理,他想,这完全是一个考查优化的问题。

聪明的人马上就能想到这样的方法:先让1、2过去,1回来,5、10再过去,2回来,1、2再过去,总共17分钟。

可是,求职者算来算去,总比标准答案的时间多。看他左右为难的样子,面试官问要不要提示,他立马说不,又埋头做了5分钟,结果还是没做出来。

面试官点评说:“其实你解题的思路很好,可惜你没有理解清楚我的问题,最关键的是,你没有问我手电筒能照多远?如果将手电筒放在桥中间,朝左朝右各能照到桥的一半,那就不需要来回在桥上走了。

最后,面试官重申:出这样一道面试题,当然不是为了考求职者的数学水平,而是有没有理清问题细节的能力。这对一个项目经理来说,是非常重要的素质。

篇5:华为Android面试题

1.简要解释一下Activity、Service、Broadcase、BroadcaseReceiver、ContentProvider、ContentResolver、Intent、Intent filter

2.说一下项目中最擅长的方向。例如:界面美化,网络请求,数据存储,Camera

相关,图片处理,视频方向。简述下你用过哪些技术,或者是开源包。

3.Handler机制和原理

4.写出几种你认为可以提高Android程序运行效率的方法

5.AsyncTask 的异步机制和普通线程有什么区别,分别有哪些优缺点。

6.多线程间通信和多进程之间通信有什么不同,分别怎么实现?

7.请介绍下Android的数据存储方式。请写出熟悉程度,并对应举例适合不同

存储方式的数据

8.说几个你认为非常好的软件或者游戏,概括下优缺点并且说下如果让你开发

这个软件,你如何构架,可能用到哪些技术点,对于你来说有哪些技术难点。

9.简述三个你遇到印象最深刻的bug,你是如何解决的,是否完全解决问题。

10.含有图片的listview 如何进行优化其流畅度和图片加载方向的内存管理

11.如果让你独立完成一个项目(此项目11个界面,需要和网络进行数据交互,需要在本地采用多种方式进行数据存储,有图片等相关操作),请简述下你工作顺序。

12.如果让你分配给3个同事一个项目(此项目11个界面,需要和网络进行数据

交互,需要在本地采用多种方式进行数据存储,有图片等相关操作),请简述下你将如何分配。

13.ScrollView嵌套listview是否会出现bug,为什么会出现bug,如果解决

14.说说mvc模式的原理,它在android中怎样运用,你在具体工作中怎样具体

运用mvc模式的。

15.编程题: 用最有效率的方法算出2乘以128等於几? 16.Android 中如何调用c++的方法。你是否可以熟练使用NDK编程

17.用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell

排序、快速排序、归并排序、堆排序等。18.写出怎么把前边的表查询成后边结果的格式的Sqlite语句

yearmonth amount结果

199111.1year m1m2m3m4

199121.21991 1.1 1.2 1.3 1.4

199131.31992 2.1 2.2 2.3 2.4

199141.4

199212.1

199222.2

199232.3

199242.4

19.写一个最简单的外连接查询(表名1:a 表名2:b)的sqlite语句

20.封装正式版APK时候有那些注意事项,上线到多个应用商城需要注意那些。

注:请认真选择其中6到10题,用简练语言作答。

篇6:华为招聘面试题精选

华为效率很高,果然是狼性文化啊,从一面到最后一面,一天结束,我比较幸运的是最后一面已经知道自己能拿到offer啦,小小的得意一下。

华为分为4面,技术面,集体面试,压力测试和主管面。下面分结合我自己的经历进行分部分介绍。

第一面:技术面

通知我18日10:30去面试,我接近10点的时候过去,晕,还是好多人,然后排了号等待吧。这里提醒大家,华为的面试通知时间只是他们的对人数的一个估计,面试的早晚是按你到来的早晚进行的,好多公司都是这样,所以以后要想早点面试的话,可以提前去,交简历排队等等。接下来我就是在焦急的等待中。终于到了11点多一点,叫道我了。一个身材稍微有点发福的大叔。挺和气的。首先是自我介绍,还发生了点小插曲。当我说我喜欢打篮球的时候,这个面试官大叔笑着说:“看的出来”。这一刻我真的很纠结,这也能看的出来?介绍完之后,他问我专业排名,我说自己大学还行,研究生就马马虎虎了,然后他又问具体拍多少,当我说到50%,他又问有多少人排多少,我如实相告,98人排50多名,他笑着很纠结的给哥来了句,“那就是中下等了呗,打篮球打的了吧!”。无比纠结。闲话不说啦,进入技术面,出的题目挺多,我尽可能的多想出来点。

指向指针的指针的用法,作用

双向链表节点的删除

冒泡排序(蛋疼,唯一答错的一道题,我把冒泡和选择整混了,我还一直坚持我的意见,我还引导他,后来,我引导到最后发现,我错了,好尴尬。)

很简单的数据库操作,就是两个简单的排序,使用到order by和between and

自己做的项目很多都是负责数据库的设计和优化,这个要是问的更深点,哥还是真不怕的。倒是希望能多问点这方面的,毕竟这方面还是有点水平的,嘿嘿。

socket编程,服务器端和客户端各个函数,只要能说出大概就行

服务器端:socket, bind(), listen(), accept(),….close(),

客户端:socket(), connect(),close()等等

进程的通信方式,我讲的是linux下的6中进程通信方式,只要说出名字就行

介绍下数据挖掘。我研究生主要是做数据挖掘的,他应该主要是考察我对自己的方向的熟悉程度。我就结合一个做过的863的项目,给他一顿的忽悠,感觉自己还挺能忽悠的,呵呵,主要是做过的东西还是了如指掌的,介绍起来也没什么难度。

了解什么设计模式,举出来一个例子。

当听到这个问题的时候,我当时就“震精”啦,这个c++面试还问设计模式,我人品有这么差吗?幸亏“四人帮”的那本《设计模式》还是看过的。本来想说工程模式呢,但是想想,估计很多人对这个都很熟,还是说个单件吧。我就解释下单件,他还让我写下单件的实现代码,我靠,这是华为的面试吗,至于吗?没办法,就写个个很常规的动态申请实现的单件模式,他还挺满意,然后我还不忘的秀一下,说:这个不是最好的实现,我在论坛的帖子上看到过更好的一种实现,就是将对象放在静态存储区,这样能保证一个进程中只有一个实例存在。哈哈,这下他很开心的笑啦,我知道,我这样说,代表了很多。呵呵,这个表象还是相当满意的。

解释下c++中继承和多态

这个没什么可说的,关键点在于:继承的作用是实现代码重用,从父类中继承共性的东西,加入一些个性的东西,继承分为public,protected和private继承。多态是根据上下文环境,调用不同的实现代码,它的作用是实现接口重用,它分为静态多态和动态多态。静态多态的可以用重载和模板实现,动态就是我们经常使用的virtual关键词,我们一般说的多态就virtual表示的动态多态。它是运行时根据实际的对象进行调用的。

其中,还有三四个题想不起来了,感觉问的很多

最后他应该是很满意我的表现,说我这关你是过了,你前边3,4个人我这关都没过去,你表现还挺好。

然后给我出了个自由发挥的题,说:现在有一个视频挖掘方面的项目,而你是做文本挖掘的,这两种的处理方式肯定有很大的处理差别,你会这么做。这个就自我发挥了。我就说查资料啊,请教他人啊什么的,后来他问我:你对这个项目的态度是做还是不做,靠,这个肯定是做啦,然后我很坚定的说,做,肯定做,这个对我自己的发展也是一种积累,能让我有更广阔的技术积累。哈哈,这个面试官很开心的笑了,然后给我讲了些华为艰苦奋斗啊什么的,然后我我在第二轮的时候可能会问到这些,自己要坚定什么的。呵呵,挺口气是希望我过第二轮啦,好high啊

然后道谢,出来啦。问了接近25分钟,我旁边那组面了2个人,我这边才我一个。

出来后,和同学一交流我郁闷啦,

好多都是问两三个问题,然后聊聊天。我去,我人品确实很差啊,郁闷。这个面的也未免太多了吧,比丫的腾讯还多。

技术面总结:这个技术面有很大的运气成分在里边,有的面试官问的不多,就聊聊天,有的就是问的很多,像面我的这个,应该是技术大牛之类的吧。不过还是平常多做开发,实际项目中用到的知识远比看什么程序员面试宝典重要,呵呵,尽管我也看了下,但是里边有很多错误的地方。自己在平常做项目的时候,最好能将一些自己不太熟的技术难点做下笔记,在这中面试前拿出来可以看下,很有帮助的,我研究生期间笔记记了三大本,博客也有,这些你写下来的过程,相当于又思考了一遍,对自己挺好的,以后拿出来看的时候能很快回想回来。像其他的一些题啊什么的,平常注意积累就行了。

第二面:群面

首先是自我介绍,必须包含自己的专业,排名,兴趣爱好,优缺点,性格和职业规划。

大家就在这边一顿的猛吹,不过看的出来大家都很紧张,我一看大家都挺紧张,然后感觉有点自信啦,哈哈,轮到我的时候而是一顿忽悠。不过自我介绍还是挺重要的,直接关系到面试官对你的印象。

第二个环节是分组讨论题目是成功的因素是什么,给了13个词语,按照对成功的重要性从高到低进行排序。在5分钟内给出自己的答案,交给面试官,然后给15分钟小组讨论,小组得出一个统一意见的排序。这个环节我们组表现很好,很团结,另外一个小组内部出现了意见的不同意,然后被面试官猛问。这个时候,基本上可以预想到他们要杯具啦。不是我们太优秀,而是他们自身出了很大的问题。第三个环节就是互相评价,并排除最好到最差的顺序这是华为群面最让人蛋疼的一个环节,还好今天大部分是对对方小组成员的排序。终于面完了,从两点多面到接近5点,丫的面了两个半小时。在教室等了会,一会结果出来了,12个人,刷掉5个,我们组只刷掉一个,对方小组刷掉4个人。果然和我猜测的差不多。群面总结:群面不能说太多,也不能什么也不说。说的太多的话,除非你是特别优秀,否则肯定是被刷。我们组的组长说的挺多的,但是很优秀,最后留下了,而对方小组组长,就是反面教材了,一方面说自己又多么优秀,另一方面基本小组成员不太赞同他,肯定杯具啦。也不能说太少,要在适当的时候提出自己的观点,不能太偏激,提出观点的时候不能太具攻击性。中庸最好了。我这也是在挫折中成长的,丫的华赛在群面的时候,就是因为我说的太少而导致出局的。汲取教训才是王道啊。哈哈。

第三面压力测试

这个环节好像出什么问题了,直接进入四面,大boss面

第四面大boss面

等到下午5点多,终于等到最后一面了。被我们称之为大boss的人估计至少是主管之类的以上的级别。人还是挺和气的。我进去了,我们就随便聊了几句。就是问你有女朋友吗,家乡是哪里的,家里人同意你在深圳工作吧…,主要是考察你给你offer之后是否拟会签。这个我已经是想好了的答案。感觉自己答得还是挺好。然后他就说:对你基本上没什么问题了,第一面的面试官对你的评价很高,他希望你能跟他做他那个方向。我k,我还不知道他是什么方向呢,然后我很愕然的说他做的什么方向,这次轮到大boss愕然了,然后说他没和你沟通,我说没有啊。然后我说我希望做云计算方面的。然后我们又是一阵讨论,反正基本上他的意思是第一个面试官对我评价很高,要我去他的那个方向,然后就是说云现在就是炒作的一个概念。我无语啦,然后又说每个方向都是很有前途的…,靠,不管了,我说:那我就服从公司的决定吧。靠,这次丫满意的笑了。然后说,今天就面试到这吧,过几天我们的工作人员会联系你的。

出来啦,靠算是安心啦,如果我没理解错的话应该是没什么问题了。好,拿到一个垫底的offer,下一步就是好好的准备腾讯和百度。

篇7:java面试题

至于是堆内存溢出还是方法区内存溢出还是栈内存溢出,其实可以用一些工具比如

JConsole来监视

2. JVM 的内存结构,Eden 和 Survivor 比例。

3. jvm 中一次完整的 GC 流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的 jvm 参数。

4. 你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,包括原理,流程,优缺点

5. 垃圾回收算法的实现原理。

6. 当出现了内存溢出,你怎么排错。

7. JVM 内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存等。

8. 简单说说你了解的类加载器。

9. 讲讲 JAVA 的反射机制。

10. 你们线上应用的 JVM 参数有哪些。

11. g1 和 cms 区别,吞吐量优先和响应优先的垃圾收集器选择。

12. 请解释如下 jvm 参数的含义:

-server -Xms512m -Xmx512m -Xss1024K

-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly。

blog.csdn.net/a503921892/article/details/39048889

Xmx3550m:设置JVM最大可用内存为3550M。

-Xms3550m:设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xss128k: 设置每个线程的堆栈大小。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,

经验值在3000~5000左右

-XX:MaxPermSize=16m:设置持久代大小为16m

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。

如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

开源框架知识

1. 简单讲讲 tomcat 结构,以及其类加载器流程。

2. tomcat 如何调优,涉及哪些参数。

3. 讲讲 Spring 加载流程。

4. 讲讲 Spring 事务的传播属性。

PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

5. Spring 如何管理事务的。

6. Spring 怎么配置事务(具体说出一些关键的 xml元素)。

tx:advice,aop:config

7. 说说你对 Spring 的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop 的实现原理,说说 aop 中的几个术语,它们是怎么相互工作的。

8. Springmvc 中 DispatcherServlet初始化过程。

操作系统

1. Linux 系统下你关注过哪些内核参数,说说你知道的。

2. Linux 下 IO 模型有几种,各自的含义是什么。

3. epoll 和 poll 有什么区别。

4.平时用到哪些 Linux 命令。

5. 用一行命令查看文件的最后五行。

输出test文件的后五行:

liyi@liyi:~/Desktop >tail -n 5 test

输出test文件的前五行:

liyi@liyi:~/Desktop >head -n 5 test

6. 用一行命令输出正在运行的 java 进程。

7. 介绍下你理解的操作系统中线程切换过程。

8. 进程和线程的区别。

多线程

1. 多线程的几种实现方式,什么是线程安全。

2. volatile 的原理,作用,能代替锁么。

3. 画一个线程的生命周期状态图。

4. sleep 和 wait 的区别。

5. Lock 与 Synchronized 的区别。

6. synchronized 的原理是什么,解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁。

7. 用过哪些原子类,他们的原理是什么。

8. 用过线程池吗,newCache 和 newFixed 有什么区别,他们的原理简单概括下,构造函数的各个参数的含义是什么,比如 coreSize,maxsize 等。

9. 线程池的关闭方式有几种,各自的区别是什么。

10. 假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有 10 个线程同时调用它,如何做到。

11. spring 的 controller 是单例还是多例,怎么保证并发的安全。

singleton : bean在每个Spring ioc 容器中只有一个实例。

prototype:一个bean的定义可以有多个实例。

request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。

12. 用三个线程按顺序循环打印 abc 三个字母,比如 abcabcabc。

思路:解题思路大概是这样的,开启三个线程,每个线程一次打印一个字母,并且按照一定的顺序打印,当打印A的时候,其他线程处于阻塞状态,打印完A以后,

将线程解锁,让打印B的那个线程开启,其他线程处于阻塞状态,同理打印C的时候,阻塞其他线程,这三个线程顺序循环,就达到顺序多次打印ABC的目的了。

这道题看似思路简单,其实主要需要用到wait()方法和notify()方法,还有关键字synchronized,只有充分理解了这些,才能解出这道题。下面我有必要讲解一下这两个方法,

还有关键字synchronized。

13. ThreadLocal 用过么,用途是什么,原理是什么,用的时候要注意什么。

14. 如果让你实现一个并发安全的链表,你会怎么做。

15. 有哪些无锁数据结构,他们实现的原理是什么。

16. 讲讲 java 同步机制的 wait 和 notify。

17. 多线程如果线程挂住了怎么办。

18. countdowlatch 和 cyclicbarrier的内部原理和用法,以及相互之间的差别。

19. 使用 synchronized 修饰静态方法和非静态方法有什么区别。

所有的非静态同步方法用的都是同一把锁――实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,

该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁,

可是别的实例对象的非静态同步方法因为跟该实例对象的非静态同步方法用的是不同的锁,

所以毋须等待该实例对象已获取锁的非静态同步方法释放锁就可以获取他们自己的锁。

而所有的静态同步方法用的也是同一把锁――类对象本身,这两把锁是两个不同的对象,

所以静态同步方法与非静态同步方法之间是不会有竞态条件的。但是一旦一个静态同步方法获取锁后,

其他的静态同步方法都必须等待该方法释放锁后才能获取锁,而不管是同一个实例对象的静态同步方法之间,

还是不同的实例对象的静态同步方法之间,只要它们同一个类的实例对象!

20. 简述 ConcurrentLinkedQueue 和 LinkedBlockingQueue 的用处和不同之处。

21. 导致线程死锁的原因?怎么解除线程死锁。

22. 非常多个线程(可能是不同机器),相互之间需要等待协调,才能完成某种工作,问怎么设计这种协调方案。

23. 正确使用 Volatile 变量

正确使用 volatile 变量的条件

您只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:

1对变量的写操作不依赖于当前值。

2该变量没有包含在具有其他变量的不变式中。

www.ibm.com/developerworks/cn/java/j-jtp06197.html

TCP与HTTP

1. http1.0 和 http1.1 有什么区别。

在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,

当浏览器下次请求的时候又要建立连接,显然这种不断建立连接的方式,会造成很多问题。

在http1.1中,引入了持续连接的概念,通过这种连接,浏览器可以建立一个连接之后,

发送请求并得到返回信息,然后继续发送请求再次等到返回信息,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来。

2. TCP 三次握手和四次挥手的流程,为什么断开连接要 4次,如果握手只有两次,会出现什么。

3. TIME_WAIT 和 CLOSE_WAIT 的区别。

4. 说说你知道的几种 HTTP 响应码,比如 200, 302, 404。

5. 当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤。

6. TCP/IP 如何保证可靠性,说说 TCP 头的结构。

7. 如何避免浏览器缓存。

8. 简述 Http 请求 get 和 post 的区别以及数据包格式。

GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头

POST提交:把提交的数据放置在是HTTP包的包体

篇8:天才的面试题

1.房里有三盏灯, 房外有三个开关, 在房外看不见房内的情况, 但可以任意扳动开关。你只能进门观察一次, 你用什么方法来区分哪个开关控制哪一盏灯?

2.有两根粗细不均匀的香, 燃烧时快时慢, 但每根香烧完的时间确定是一小时。你能用什么方法来确定45分钟的时间?

3.村子里有50个人, 每个人都有一条狗, 在这50条狗中有病狗 (这种病不传染) , 人们要找出病狗。每个人可以观察其他49条狗, 以判断它们是否生病, 但只有自己的狗不能看, 观察后得到的结果不能交流, 也不能通知病狗的主人。主人一旦推算出自己的狗有病时, 就必须在一天内将其枪毙, 而且只有权力枪毙自己的狗, 没有权力打死其他人的狗。第一天大家全看完了, 但枪没响, 第二天枪也没响, 第三天才传来枪响。问:村里共有几条病狗?如何推算出来的?

4.在太平洋的一个小岛上生活着土著人, 他们不愿意被外人打扰。一天, 一位探险家到了岛上, 被土著人捉住, 土著人的首领告诉他:“你临死前可以有个机会留下一句话, 如果这句话是真的, 你将被烧死;如果是假的, 你将被五马分尸。”可怜的探险家说什么才能活下来?

5.一个老师为了测试一下A、B两个学生哪一个反应速度更快, 就把他们带到一个伸手不见五指的黑房子里。老师打开灯说:“这张桌子上有五顶帽子, 两顶是红色的, 三顶是黑色的。现在, 我把灯关掉, 并把帽子的顺序搞乱, 然后, 我们三人每人摸一顶戴在头上。当我把灯打开时, 请你们尽快说出, 自己头上戴的是什么颜色的帽子。”然后老师把灯关掉了, 三个人都摸了一顶帽子戴在头上, 同时, 老师把另外两顶藏起来了。电灯打开后, 那两个同学看到老师头上戴着的是顶红色的帽子, 过了一会儿, A喊道:“我戴的是黑帽子。”请问A是如何推理的?

答案 (仅供参考) :

1.先打开两个开关, 等一段时间再关上其中一个, 马上进里观察。打开的灯对应打开的开关, 用手摸到热的关闭的灯对应刚刚关闭的开关, 凉的灯对应始终没打开的开关。

2.点燃其中一根, 并把另一根两头点燃。第二根烧完恰好过去30分钟, 第一根剩下部分应该能支撑30分钟的燃烧。然后把第一根剩下的部分两头点燃, 15分钟即可燃尽。此过程一共耗时45分钟。

3.若只有一条病狗, 病狗的主人看到其他的狗都没有病, 那么就知道自己的狗有病, 所以第一天晚上就会枪响。因为没有枪响, 就说明病狗数量大于1。若有两条病狗, 病狗的主人会看到有一条病狗, 而第一天没听到枪响, 说明病狗数大于1, 所以病的主人也会知道自己的狗有病, 因而第二天会听枪响, 既然第二天枪也没响, 说明病狗数大于2。依此类推, 如果第三天听到枪响。说明有三条病狗。

4.这是一个悖论问题, 探险家只能描述一种非真非假的状况, 比如:我将被五马分尸。如果土著判定这话是真的, 那么他将被烧死———这样“五马分尸”就成假的了。如果土著判定这话是假的, 那他将被五马分尸的话就变成了真的。

上一篇:内部人才招聘市场管理暂行办法(银行)下一篇:端午节活动名称学校名