1. 程序员面试的时候考官一般问什么问题
基本问题
主要包括介绍自己。学历工作经验家庭住址等
业务问题
按你应聘的岗位进行询问,看你了解多少,或者你的态度
综合问题
主要看你对待工作的态度,为人等问题。
2. 精选程序员面试常问的逻辑题
大家在面试的时候,难免会遇到让人摸不着头脑的逻辑题,这类题目让同学们往往连答案应该回答些什么都摸不清楚,只能和面试官四目相对,非常尴尬。
其实,很多面试的考官,都是从题库随机挑选逻辑题来考验同学们,面试官有时候自己也未必完全摸透这类题目,所以面试的时候不必过于紧张,就算答不出来啊也非常正常。
在我的理解中,这类题目主要还是考大家的思路,至于答案标准与否,其实不是特别重要。
本文总结了面试中我自己面试中遇到的几道非常常见的逻辑题,大家可以作为面试前的突击复习材料。
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
三个人
若是两个人,设A、B是黑帽子,第二次关灯就会有人打耳光。原因是A看到B第一次没打耳光,就知道B也一定看到了有带黑帽子的人,可A除了知道B带黑帽子外,其他人都是白帽子,就可推出他自己是带黑帽子的人!同理B也是这么想的,这样第二次熄灯会有两个耳光的声音。
如果是三个人,A,B,C。A第一次没打耳光,因为他看到B,C都是带黑帽子的;而且假设自己带的是白帽子,这样只有BC戴的是黑帽子;按照只有两个人带黑帽子的推论,第二次应该有人打耳光;可第二次却没有...于是他知道B和C一定看到了除BC之外的其他人带了黑帽子,于是他知道BC看到的那个人一定是他,所以第三次有三个人打了自己一个耳光
N个人是黑帽子,就会在第N天,有N个人打自己一个耳光。
一个是两种药片,每种有两个,一个人需要早上吃两种药片各一个,现在这四个药片混在一起了这个人什么方法吃。
把所有的4颗药丸都切开成相等的两半,然后早上和晚上,分别吃掉每颗药丸的一半
一个5L,一个6L的瓶子,要得到3L的水,问什么方法
6-5=1 1L水放在5L那个瓶里面,然后再装6L水,往5L(里面已经有1L)里面倒,这样就会剩下2L水在6L里面,再把2L水放在5L里面,再装一次,不就可以6L那里到处3L水到5L里面,自己就剩下3L了
一共1000瓶酒,其中一瓶有毒。如果一只老鼠喝了有毒的酒,会在一天之后死亡,那么如果给你一天时间,然你判定哪瓶酒有毒,至少需要几只老鼠?
答案是10只。这个需要使用二进制编码来解决,1000瓶酒至少需要10位二进制数来进行编码。然后取十只杯子分别代表这是个二进制数的十个位,分别将1000瓶酒倒入其编码为1的对应的杯子中。取十个老鼠分别喝十个杯子中的酒,一天之后,就可以根据喝哪些杯子的老鼠死掉来确定出有毒的那瓶酒的编码,从而确定哪瓶酒有毒。其根据就是只有有毒酒的编码对应的毒死老鼠的杯子位置。这个题目就是利用了二进制编码的一些特性。
还有一些其他的题目也使用这些特性,比如使用特殊的位运算,一般使用比较多的位运算就是与、或和异或。
这样,就可以对应到现实生活中的一些为题,比如一个类似的问题原本我们想需要用900多台服务器来解决,经过这样分析后就可以使用10台服务器来解决,大大节约了成本。
再比如,国王有10000桶酒,已知一桶酒有毒,喝了之后一定会在23-24小时内死亡(例如0点喝,会在23-第二天0点这个时间段死亡)。现在国王要在48小时后举办一个宴会,需要用罪犯实验,请问最少几个罪犯。(可以混合酒)
如果是常规利用二进制解题的话,那就需要14个犯人,2^14=16384>10000,但是这样一来死亡时间这个条件就用不到,也不是最优解。
应该利用酒死的时间是固定的,一个罪犯像上面那样可以表示成25种状态,三个罪犯就可以表示25 x 25 x25种状态,超过10000了,所以只需要三个罪犯。
有8个小球,其中七个的重量是相同的,有一个较轻。给你一个天平,问秤几次能找出那个较轻的小球,若天平只能秤两次,又该怎么秤
第一次两边各放随机三个,如果平了,则另外一个是轻的,若不平,还有第二次,拿出那三个轻的,在两边随机放一个,就能测出哪个最轻了。
本体图解参考:
https://blog.csdn.net/hinyunsin/article/details/6632062
已知: 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有单独的加油机),一箱油可供一架飞机绕地球飞半圈
问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
分为3架飞机5架次和3架飞机6架次
1. 3架飞机6架次
(上图)ABC 3架同时起飞
(上图)1/8处,C给AB加满油,C返航。此时飞机的油量分别是:A: 3/4, B: 3/4, C: 3/4。此时C分别给A和B加满油,三架飞机当前油量分别是:A: 1, B: 1, C: 1/4。C返回机场。A、B继续向前飞行。
(上图)1/4处,B给A加满油,B返航,A到达1/2处,此时C已经返回机场,三家飞机此时油量分别是:A: 3/4, B: 3/4, C: 0。此时B给A加满油,C加满油,此时三架飞机的油量分别是:A: 1, B: 1/2, C: 1。然后B返回机场,A继续向前飞行。
(上图)当A飞行至半圈位置时,B已经返回机场并且加满了油(假设加油时间为0),此时,B和C沿逆时针方向飞行,三架飞机当前油量分别是:A: 1/2, B: 1, C: 1。A继续向前飞行。
(上图)当A飞行至另外半圈的1/4位置时,三架飞机剩余油量分别是:A: 1/4, B: 3/4, C: 3/4。此时,C给B加满油。此时三架飞机油量分别是:A: 1/4, B: 1, C: 1/2。C返回机场,B和A继续向前飞行。
当A飞行至另外半圈的1/2位置时,C已经返回机场,A和B相遇,此时三架飞机剩余油量分别是:A: 0, B: 3/4, C: 0。B给A加1/4的油,三架飞机剩余油量:A: 1/4, B: 1/2, C: 1。C加满油从机场逆时针飞出,B返回机场,A继续向前飞行。
(上图)当A飞行至另外半圈的3/4位置时,A和C相遇。此时三架飞机的油量分别是:A: 0, B: 1/4, C: 3/4。C给A加1/4的油,此时三架飞机的油量分别是:A: 1/4, B: 1/4, C: 1/2。C掉头返回机场,A和B继续向前飞行。
(上图)三架飞机顺利回到机场!
2. 3飞机5架次
(1)3 架飞机同时从机场出发,飞行八分之一周(A点),各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地;
(2)另一架飞机和目标机结伴,飞至四分之一周(B点),给目标机补满油,自己返回;
(3)目标机独自飞行半周(C点);
(4)与从基地反向出发的一架飞机相遇,2 机将油平分,飞至最后八分之一处(D点);
(5)与从基地反向出发的另一机相遇,各分四分之一油,返回。
75道程序员面试逻辑题和答案
https://blog.csdn.net/qq_38361726/article/details/79824632
3. 你要面试一个程序员,应该问他什么问题
首先面试程序员分有没有经验
面试没有经验的程序员就随便问问点ssm,ssh五大框架问题,多线程什么的,再问问是否会点前端技术
有经验就看看他的简历,问他简历项目上的问题,可以围绕着简历上的项目问,通过他的回答涉及到的技术点之类的,拓展出去问其他的
4. 程序员面试经常被提到的问题
java 程序员常用面试题- -
Java程序员面试三十二问
Java程序员面试三十二问
作者:佚名 来自:未知
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert.
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz");创建了几个String Object?
第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
第十二,sleep() 和 wait() 有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()?
它们有何区别?
第十七,给我一个你最常见到的runtime exception.
第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract class和interface有什么区别?
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是
synchronized?
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体
类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它
方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行
,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等于几?
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后
的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
以下是答案
第一,谈谈final, finally, finalize的区别。
final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父
类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,
可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能
读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供 finally
块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入
finally 块(如果有的话)。
finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去
之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是
在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执
行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口
,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套
类最大的不同就在于是否有指向外部的引用上。具体可见http:
//www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2
不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步
的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为
false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a > 0); // throws an AssertionError if a <= 0
断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。
不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参
数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任
何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收
集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。
第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为
s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更
高的优先级,(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对
象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto?java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类
之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其
父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子
类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或
有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改
变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它
们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相
等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的
内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException,
BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException,
CMMException, , DOMException, EmptyStackException,
IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException,
IllegalStateException, ImagingOpException, IndexOutOfBoundsException,
MissingResourceException, NegativeArraySizeException, NoSuchElementException,
NullPointerException, ProfileDataException, ProviderException, RasterFormatException,
SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException,
UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能
处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基
本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而
可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象
静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代
之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的
接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量
。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即
将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类
型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是
synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类
(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类
必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由
JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它
方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行
,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等于几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后
的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数
的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int
、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,
在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为
contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,
不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
5. 浙江北大青鸟:程序员面试有什么注意事项
面试是每个普通程序员面前的一座大山,给了大家无尽的苦恼和困惑。
程序员面试很难吗?难!正常的,要经过两轮技术面试以及一轮经理面试,也有不少顶尖公司甚至需要三到五轮的技术面试。
几轮面试下来,能熬到最后,这绝对是真正意义上的“过五关斩六将”了。
很多优秀的程序员业务能力很过硬,但都因为在面试的时候发挥失常,从而屡屡与大厂失之交臂。
所以,每一个面试成功者,都算是勇士。
要给自己点个赞!那么面试时,我们究竟需要注意什么呢?今天,北大青鸟http://www.kmbdqn.cn/就教给大家几个面试成功的技巧。
1、首先,要确保你理解了面试官的问题。
许多问题都是故意措辞模糊或者模棱两可,这个时候你可以请面试官把问题说清楚,从而确保你真正回答面试官的问题。
你的提问同时还有一个好处,就是它能给你自己一些时间,让你的脑子转起来。
2、用一到两个例子来确定问题的限制条件和要求(在现场面试时在白板上完成这个过程,在电话面试时在笔记本上完成)。
尝试用中等规模的例子,以便覆盖到一些特殊情况。
如果你能想到可能相关的表格,就把它画出来。
事实上,把你想到的任何东西都写下来是会有帮助的,因为它能为你提供一个视觉锚点,从而让你在走不通时或者思考过程中随时返回某一个点。
3、把话说清楚,这可能是最重要的一步。
要试着让面试尽可能有更多的互动,面试官不知道你在想什么,而让他们参与到你的思考过程里,会让她给你一些有用的提示,防止你偏向错误的方向。
你的目标就是要先和面试官确证你的答案,然后再去写代码,而且你考虑答案越清晰、越高效,你得到的即时反馈也就越好。
4、通过应用以下技巧来找到答案回想一下你遇到的类似问题,再想想它们是如何被解决的,尝试各种不同的算法(分治算法、贪心算法、递归、排序,等等),把问题分解成更小的、可处理的小问题(这样你就能得到相应部分的分数),最后再通览一遍你列出的数据结构,因为有时候,只要想到了正确的数据结构,就能给出正确的答案。
5、当你向面试官问清楚了问题、并向她解释了你的答案之后,就可以开始写代码了。
在共享文档里写代码的时候,你可以复制粘贴、写评论,而且能回过头来完成骨架算法和功能。
但在白板上写代码就不一样了,它需要你的头脑很清醒,而且需要你具备管理白板空间的技能。
6. 程序员的面试问题(希望全面点)
很多用这个. 1. 问:怎样用 Win95 的记事本 (Notepad) 来编辑 Java源程序? 答:记得存档时扩展名要加上".java",文件类型改成:“所有的文件(*.*)”。 2. 问:到底 Java 是如何传递参数的?是by value或by reference? 答:All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。 3. 问:String这个类型的class为何定义成final? 答: 主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。 4. 问:finalizers和C++ 的 destructors有何差异? 答:Java内部具有“内存使用回收” 的机制, 虽然它也提供了类似 (C++ 的) destructors的 finalize(),每个对象都可以使用这个方法 method,但必须冒着破坏原先回收机制的危险。所以建议尽量避免使用finalize(),不妨考虑多使用 null 及 dispose() 来释出资源会好一些。 5. 问:继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢? 答:记住每当您定义了一个 class的constructor,除非您一开始就去call 这个constructor,否则 Java 会自动引入superclass原先不含参数的 constructor, 如果superclass的 constructor都是有参数的,那么问题中的错误提示便出现了。 解决的方法很简单, 找一找 API文件,加上正确的参数就得了。 6. 问:怎样让char类型的东西转换成int类型? 答: char c = 'A'; int i = c; //反过来只要作强制类型转换就行了 c = (char) I; 7. 问:我的applet原先好好的, 一放到web server就会有问题,为什么? 答:一般来说,从以下方向试试: 确定class文件的格式没错——已经编译过,也没有损坏的情形; 确定所有用到的class文件放到web server上,少一个都不行; 确定所有的文件名和class名称一致,特别检查大小写有无差错; 如果程序中用到package,web server上的目录就要当心了。譬如您在class中宣告了一个叫COM.foo.util的package,那么web server的applet codebase目录底下就非得有 COM/foo/util这个子目录不可。(注意目录名称也有大小写之分); web server上的文件档案应该事先设定好。(尤其是search,read和execute权限) 8. 问:怎样在 Applet中用某个图形涂满整个背景? 答:在背景建立 Panel 或 Canvas, 然后用图形填满它。 9. 问:怎样在 Applet 中建立自己的菜单(MenuBar/Menu)? 答:首先在Applet的init() 方法中建立Frame instance, 然后将Menus, Menubar都加上去即可。 (setMenuBar() 是 Frame下的方法)或者,找到Applet上层的Frame后依法炮制。 Container parent = getParent(); while (! (parent instanceof Frame) ) parent = parent.getParent(); Frame theFrame = (Frame) parent; 注意:第二个方法在Mac或某些browsers上并不可行。 如果您使用的是JDK 1.1,也可以考虑使用popup menu,这样就不必理会Frame的问题了。 10. 怎样比较两个类型为String的字符串? 答:在两个对象之间使用 "==",会将“两个对象是否有同一reference”的结果传回。也就是说, 这等同于“两个对象是否拥有同一地址 (address)”,或者“两个对象物件是否为同一对象”。如果您的意思是判断两个字符串的内容是否相同,那么应该使用以下的方法才对: if (s1.equals(s2) ) or if (s1.equalsIgnoreCase(s2) ) or if (s1.startsWith(s2) ) or if (s1.endsWith(s2) ) or if (s1.regionMatches(s1_offset, s2, s2_offset, length) ) or if (s1.compareTo(s2) <0) 11. 怎样将浮点数(float)相加 ? Float 好像没有办法? 答:我猜想您的程式大概写成这样: Float One; Float Two; Float Hard = One + Two; 请注意 float 和 Float 是不同的,前者是 Java 基本类型之一, 而后者却是class。您应该将源代码改为: float One; float Two; float Hard = One + Two; 或 Float One = new Float(1.0); Float Two = new Float(2.0); Float Hard = new Float(One.floatValue() + Two.floatValue());
7. 北大青鸟分享程序员面试有什么注意事项
面试是每个普通程序员面前的一座大山,给了大家无尽的苦恼和困惑。程序员面试很难吗?难!正常的,要经过两轮技术面试以及一轮经理面试,也有不少顶尖公司甚至需要三到五轮的技术面试。
几轮面试下来,能熬到最后,这绝对是真正意义上的“过五关斩六将”了。很多优秀的程序员业务能力很过硬,但都因为在面试的时候发挥失常,从而屡屡与大厂失之交臂。所以,每一个面试成功者,都算是勇士。要给自己点个赞!
那么面试时,我们究竟需要注意什么呢?今天,北大青鸟http://www.kmbdqn.com/就教给大家几个面试成功的技巧。
1、首先,要确保你理解了面试官的问题。
许多问题都是故意措辞模糊或者模棱两可,这个时候你可以请面试官把问题说清楚,从而确保你真正回答面试官的问题。你的提问同时还有一个好处,就是它能给你自己一些时间,让你的脑子转起来。
2、用一到两个例子来确定问题的限制条件和要求(在现场面试时在白板上完成这个过程,在电话面试时在笔记本上完成)。
尝试用中等规模的例子,以便覆盖到一些特殊情况。如果你能想到可能相关的表格,就把它画出来。事实上,把你想到的任何东西都写下来是会有帮助的,因为它能为你提供一个视觉锚点,从而让你在走不通时或者思考过程中随时返回某一个点。
3、把话说清楚,这可能是最重要的一步。
要试着让面试尽可能有更多的互动,面试官不知道你在想什么,而让他们参与到你的思考过程里,会让她给你一些有用的提示,防止你偏向错误的方向。你的目标就是要先和面试官确证你的答案,然后再去写代码,而且你考虑答案越清晰、越高效,你得到的即时反馈也就越好。
4、通过应用以下技巧来找到答案
回想一下你遇到的类似问题,再想想它们是如何被解决的,尝试各种不同的算法(分治算法、贪心算法、递归、排序,等等),把问题分解成更小的、可处理的小问题(这样你就能得到相应部分的分数),最后再通览一遍你列出的数据结构,因为有时候,只要想到了正确的数据结构,就能给出正确的答案。
5、当你向面试官问清楚了问题、并向她解释了你的答案之后,就可以开始写代码了。
在共享文档里写代码的时候,你可以复制粘贴、写评论,而且能回过头来完成骨架算法和功能。但在白板上写代码就不一样了,它需要你的头脑很清醒,而且需要你具备管理白板空间的技能。
8. hr面试程序员问什么问题,程序员在面试的时候的注意事项
01 和优秀开发者沟通
如果你本身没有编程背景,那就尽量找到一些优秀的开发人员给你指点迷津。
02 问专业的问题
1. 简要介绍一下你自己以及你最近在做的项目吗?
作用:这个问题可以让你更好地了解你的候选人,而谈论近期工作能了解他对工作的热情和奉献。
2. 其他时间有别的项目要做吗
作用:鉴于你的项目的时间长短和工作复杂程度,你可能只想找一个能完全投入到这个项目的人。但是很多程序员都会同时兼顾好几个项目,你要确保彼此双方的需求是什么。
3. 你是怎么看待自己的身份的?开发?产品经理?还是二者都是?
作用:理想的回答一般是‘二者都是’, 但是你要认真评估每个候选人可能给你团队带来的有利和不利影响。产品经理可以帮助设计新的功能和交互,但是你也需要足够的开发才能跟上方向从而建构你想要的内容。
4. 你会如何管理一个程序员团队?
作用:这个问题可以帮你了解候选人的领导能力和风格。
5. 告诉他们公司想要的人是怎样的。
作用:直截了当地告诉对方你的期望。像工作时间,项目长短,目标等等,这些都是对方很想知道的。就像你评价他是否适合公司一样,对方也会评价你的公司是否适合他。
03 去合适的地方招聘
你不能指望天上会掉下个好程序员给你,微软和谷歌的优秀程序员也不会自己蹦到你跟前。你的机会在于,很多这样的程序员都拥有或追求商业想法。
你可以多去一些网站、活动大赛等地方探索发掘,这比你在社交网站上找到他们的运气要大得多。
· 编程大赛
编程大赛就是程序员高手们云集在一起,合作共同完成一个软件的开发。
猿圈会定期举办此类招聘编程大赛,帮助企业挑选优质人才,提高企业品牌雇主形象。
· 开放性源代码贡献者
一些网站比如GitHub,提供在线代码存储库, 程序员可以自由对开源项目贡献自己的代码。
所以,在招聘之前,你可以先去这种网站上找一找有潜力的候选人。
· 大学
· 软件开发大会
尽可能多的去参加一些和你的产品相关的软件开发大会。
· 技术博客
你能根据他们的博客判断他们的技术技能、解决问题的能力以及写作和沟通能力。
04 没通过编程测试,坚决不录用
你只能记住一条原则,那必须是,没有让候选人参加编程测试之前,千万不能决定录用与否。
通常情况下,出于项目的紧迫,我们会倾向于选择看起来靠谱的第一个程序员,但是不拿到他的编程测试结果,不要冲动地下offer。
我也是个不懂代码的HR,但是我善于利用各种各样的工具,前段时间发现了一个猿圈测评的工具,我用它测试程序员候选人,通过测试结果判断是否值得邀约来面试,这个我觉得很赞,你可以试试看