为您找到与程序员经典面试题相关的共200个结果:
面试是一种经过组织者精心设计,在特定场景下,以考官对考生的面对面交谈与观察为主要手段,由表及里测评考生的知识、能力、经验等有关素质的考试活动。
1、如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?(40秒-3分钟)
2、一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(20秒-2分钟)
3、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢(1分钟)
4、你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟)
5、在9个点上画10条直线,要求每条直线上至少有三个点?(3分钟-20分钟)
6、在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?(5分钟-15分钟)
7、12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时)
浏览量:2
下载量:0
时间:
优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。
浏览量:3
下载量:0
时间:
1. 从哈希表,二叉树和链表中取元素需要多少时间?如果你有数百万记录呢?
哈希表需要O(1)时间,二叉树需要O(logN) (N是树中节点数),链表需要O(N) (N是链表中节点数)。如果数据结构工作正常(比如哈希表没有或只有相对少量冲突,二叉树是平衡的),数百万记录并不影响效率。如果工作不正常,那么效率会随着记录数上升而下降。
2. 覆盖(Overriding)和重载(Overloading)的区别是什么? (detailed answer)
覆盖在运行时决定,重载是在编译时决定。并且覆盖和重载的机制不同,例如在Java中,重载方法的签名必须不同于原先方法的,但对于覆盖签名必须相同。
3. fork一个进程和生成一个线程有什么区别?
当你fork一个进程时,新的进程将执行和父进程相同的代码,只是在不同的内存空间中。但当你在已有进程中生成一个线程时,它会生成一个新的代码执行路线,但共享同一个内存空间。
4. 什么是临界区? (answer)
临界区是一段代码,十分重要,在多线程中同一时间只能被一个线程执行。可以用信号量或互斥量来保护临界区。在Java中你可以用synchronized关键字或ReentrantLock来保护临界区。
5. 值类型和引用类型有什么区别? (answer)
值类型是更加优化的类型,总是不可变的(immutable),例如Java原始的int、long、double和float。引用类型指向一个对象,可能是可变的,也可能是不变的。你也可以说值类型指向一个值,引用类型指向一个对象。
6. 什么是在进程中的堆和栈?(detailed answer)
在同一个进程中,有两块不同的内存区域。以Java来说,栈用来存储原始值和指向对象的引用类型,但对象本身总是在堆中被创建。堆和栈的一个重要区别是,堆内存被所有线程共享,但每个线程有自己的栈。
7. 什么是版本控制?(answer)
版本控制是用来存储代码和管理代码库版本的软件,例如SVN、CVS、Git、Perforce和ClearCase。它们在对比代码、审查代码和从之前的稳定版本构造时十分高效。所有的专业开发都使用某种版本控制工具,否则你无法有效的管理代码,尤其是如果有20个开发者在同一个代码库上工作的时候。版本控制工具在保持代码库一致性和处理代码冲突上扮演着十分重要的角色。
8. 什么是强类型程序设计语言?(answer)
在强类型语言中,编译器确保类型的正确性,例如你无法在String类型中存放数字,反之亦然。Java是强类型语言,因此存在各种数据类型(如int、float、String、char、boolean等)。你只能将兼容的值存入相应的类型中。与此相反,弱类型语言不要求在编译时进行类型检查,它们根据上下文处理值。Python和Perl是两个常见的弱类型程序设计语言的例子,你可以将数字组成的字符串保存在数字类型中。
9. 可否描述一下有效(valid)的XML和格式正确(well-formed)的XML的区别?
格式正确的XML有根元素,所有标签都是正确关闭的,属性是正确定义的,它们的值正确地加上了引号。另一方面,有效的XML可以根据一个XSD文件或模式(schema)进行验证。所以一个XML可能是格式正确但不有效的(因为包含不被模式允许的标签)。
10. DOM和SAX语法分析器有什么区别?(detailed answer)
DOM语法分析器是驻留内存的,将整个XML文件装载到内存中,并创建一个DOM树进行语法分析。SAX语法分析器是一个基于事件的语法分析器,所以它根据收到的事件(如开始标签、结束标签、属性开始和属性结束)来对XML文档进行语法分析。根据他们的分析方法,DOM语法分析器并不适用于大的XML文件,因为它会占用大量的内存空间,你的进程可能会耗尽内存。应该用SAX分析大的文件。对于小的文件,DOM往往比SAX快很多。
11. 线程和进程的关系是什么?(detailed answer)
一个进程可以有多个线程,但一个线程总是属于唯一的进程。两个进程不能共享内存空间,除非它们有意通过共享内存进行进程间通信。但是同一进程的两个线程总是共享相同的内存。
12. 不可变(immutable)类是什么意思?(detailed answer)
一个类,如果在创建之后它的状态就不能被改变,那么他就是不可变的。例如Java中的String。一旦你创建了一个String,例如“Java”,你就不能再改变它的内容。任何对这个字符串的改变(例如转换到大写、与另一个String连接)将创建一个新的对象。不可变的对象在并行程序设计中很有用,因为它们可以在进程间被共享,不需要担心同步。事实上,整个函数式程序设计的模型都是基于不可变对象构建的。
13. 你为何要创建模拟(mock)对象? (answer)
模拟对象在测试软件中一个独立的单元时很有用,事实上,存根(stub)和模拟都是创建自动化单元测试的有力工具。假设你在写一个显示货币兑换率的程序,但没有一个可以连通的URL,现在如果想测试你的代码,可以用模拟对象。在Java的世界中,有很多框架可以为你生成强大的模拟对象,例如Mockito和PowerMock。
14. 什么是SQL注入?
SQL注入是一种安全漏洞,它使得入侵者可以从系统中窃取数据。任何从用户那里得到输入并不加验证地创建SQL查询的系统都可能被SQL注入攻击。在这样的系统中,入侵者可以输入SQL代码,而不是数据,来获取额外的数据。有很多用敏感信息(如用户id、密码和个人信息)被人利用这种漏洞获取的实例。 在Java中,你可以用Prepared语句来避免SQL注入。
15. 在SQL中,内连接(inner join)和左连接(left join)有什么区别?(answer)
在SQL中,主要有两种连接类型,内连接和外连接。外连接包括右外连接和左外连接。内连接和左连接的主要区别是,内连接中两个表都匹配的记录才被选中,左连接中两个表都匹配的记录被选中,外加左表的所有记录都被选中。要留意包含“所有”的查询,它们往往要求左连接,例如写一个SQL查询来找所有的部门和它们的雇员人数。如果你用内连接处理这个查询,你会漏掉没有人工作的空部门。
16. MVC中的V代表什么,意味着什么?(answe)
在MVC模式中,V是视图(View)。视图是用户看到的东西,比如网页。这是一个非常重要的web应用开发设计模式,它基于关注点分离原则,目的是不同模块可以独立修改,不影响其他模块。在Java的世界中,有很多提供MVC模式的开源框架,例如Struts 2和Spring MVC。顺便说一下,M代表模型(Model),C代表控制器(Controller)。模型是实际的业务对象,例如用户、雇员、订单,控制器用来将请求分发给正确的处理单元。
17. 类和对象的区别是什么? (detailed answer)
类是用来创建对象的设计图。一个类包括代码和行为,一个对象包括状态和行为。要创建一个对象,你必须创建一个表达对象结构的类。类还被用来在内存中映射对象,在Java中,JVM替你完成这项工作。
18. 什么是疏耦合(loose-coupling)?
疏耦合是一种值得追求的软件特性,它使得对软件一个部分的修改不会影响到其他的部分。例如,在一个疏耦合的软件中,对UI布局的改变不应该影响后端的类结构。
#p#副标题#e#
19. 组合(composition),聚合(aggregation)和关联(association)的区别是什么? (detailed answer)
关联的意思是两个对象是相互联系的。组合是关联的一种形式,即一个对象由多个对象组成,但是它们必须共存,例如人体由各种器官组合而成,独立的器官不能生存,它们必须在身体内发挥作用。聚合也是关联的一种形式,表示对象的集合,例如城市是居民的聚合。
20. 接口和抽象类有什么区别? (detailed answer)
这是所有程序员面试最经典的问题。接口是最纯粹的抽象形式,没有任何具体的东西。抽象类是一些抽象和具体事物的组合体。这个区别在不同语言中可能会不同,例如在Java中你可以扩展(extend)多个接口,但只能继承一个抽象类。更详细的讨论见于详细答案。
21. 什么是单元测试?(answer)
单元测试是测试独立单元(而不是整个应用程序)功能性的一种方法。在不同语言中,有很多工具可以做单元测试。例如在Java中,你可以用JUnit或TestNG来写单元测试。单元测试经常在构建时自动运行,或者在一个持续的环境(例如Jenkins)中运行。
22. 你能否描述三种不同的在应用程序发布前对其进行测试的方式?
单元测试,集成测试,冒烟测试。单元测试用来测试独立的单元是否依照预期工作,集成测试用来测试已被测试过的独立单元能否共同工作,冒烟测试用来测试软件最常用的功能是否正常工作,例如在一个飞机订票网站中,你应该能订票,取消或更改航班。
23. 迭代和递归有什么区别?(detailed answer)
迭代通过循环来重复执行同一步骤,递归通过调用函数自身来做重复性工作。递归经常是复杂问题(例如汉诺塔、反转链表或反转字符串)的清晰简洁的解决方案。递归的一个缺陷是深度,由于递归在栈中存储中间结果,你只能进行一定深度的递归,在那之后你的程序会因为StackOverFlowError而崩溃。这就是在产品代码中优先使用迭代而不是递归的原因。
24. &和&&运算符的区别是什么?(detailed answer)
&是位运算符,&&是逻辑运算符。&和&&的一个区别是位运算符(&)可以被用于整型和布尔类型,逻辑运算符(&&)只能被用于布尔类型变量。当你写a & b时,两个整型数的每一位都会进行与运算。当你写a && b时,第二个参数可能会也可能不会被执行,这也是它被称为短路运算符的原因,至少在Java中是这样的。我很喜欢这个问题,经常对初级开发者和毕业生问这个问题。
25. 1 XOR 1的结果是什么?
答案是0,因为XOR在两个操作数(按位)不同时返回1,相同时返回0。例如0 XOR 0仍然是零,但0 XOR 1和1 XOR 0的结果是1。
26. 如何得到一个整型数的最后一位? (answer)
用取模运算符,数字 % 10返回数字的最后一位。例如2345 % 10会返回5,567 % 10会返回7。类似的,除运算符可以用来去掉数字的最后一位,例如2345 / 10的结果是234,567 / 10的结果是56。这是值得了解的一个重要技巧,可以用来解决类似回文数、反转数的问题。
27. 什么是测试驱动开发?
测试驱动是一种常见的开发方法,在这种方法中,测试代码在功能代码之前编写。测试决定了程序的结构。测试驱动的纯粹主义者在写为应用写测试之前,不会写一行的应用代码。这能很大幅度地提高代码质量,经常被认为是巨星级开发者的品质。
28. 里氏替换原则(Liskov substitution principle, LSP)是什么?(answer)
里氏替换原则是鲍勃大叔称作SOLID的五条设计原则中的一条。里氏替换原则规定,所有的子类都能作为父类的代理(proxy)工作。例如,如果一个方法需要父类对象作为输入,那么如果你提供一个子类对象,它也应该正常工作。任何不能替代父类的类都违反了里氏替换原则。这实际上是一个难以答出的问题,如果你答出了,那么就会给面试官留下好的印象。
29. 什么是开闭(Open closed)设计原则?(answer)
开闭原则是SOLID中另一个重要的原则,它规定一个系统对扩展是开放的,但对修改是封闭的。意思是说,如果一个新的功能要被加入一个稳定的系统,那么你不需要碰已被测试过的现有代码,新的功能可以通过只添加新类来实现。
30. 二叉树和二叉查找树的区别是什么?
二叉查找树是有序的二叉树,所有节点(例如根节点)的左子树节点的值都小于或等于该节点的值,右子树节点的值都大于或等于该节点的值。它是一个重要的数据结构,可以用来表示有序的数据。
31. 你能否给出一个递归算法的实际例子?(example)
递归算法能适用在很多地方,例如与二叉树和链表相关的算法。几个与递归算法的例子包括反转字符串,计算斐波那契数列。其他的例子包括反转链表、树遍历以及快速排序。
31. 算法的时间复杂度是什么?
时间复杂度表示的是运行时间对输入量的比率。他表示一个算法处理一定量的输入需要多长时间。它是一个估计值,但足够表示输入量从十增长到一千万时,你的算法会有什么样的表现。
33. 链表和数组有哪些重要区别?(detailed answer)
链表和数组都是程序设计世界中重要的数据结构。它们间最明显的区别是,数组将元素存放在连续的地址中,链表将数据存放在内存中任意的位置。这使得链表有巨大的扩展自己的灵活性,因为内存总是分散的。这种情况总是可能的:你无法创建一个数组来存放一百万个整数,但可以用链表来存放,因为空间是存在的,只是不连续。其他的不同都是源于这项事实。例如,在数组中,如果你知道下标,可以用O(1)的时间得到一个元素,但在链表中要花O(n)的时间。更多不同参见详细答案。
33. 在哈希表中处理冲突的方法都有哪些?
线性探测(linear probing),二次哈希(double hashing)和链接(chaining)。在线性探测中,如果桶已经被占据了,那么函数会线性地检查下一个桶,直到找到一个空位。在链接中,多个元素可以存储在同一个桶中。
34. 正则表达式是什么意思? (answer)
正则表达式是在文本型数据上进行模式匹配的方法。它是一种搜索的强有力方法,例如搜索长字符串中的某些字符,例如搜索一本书中是否含有某个单词。所有主流程序设计语言都支持正则表达式,但是Perl正则表达式的能力是著名的。Java的java.util.regex包也支持类似Perl的正则表达式。你可以用正则表达式检查email地址是否有效,电话号码是否有效,邮政编码是否有效,甚至社会保险号(SSN)是否有效。正则表达式最简答的例子之一是检查字符串是不是一个数。
35. 什么是无状态(stateless)系统?
无状态系统是不维护内部状态的系统。这种系统在任何时刻,对相同的输入都会给出相同的输出。编写优化一个无状态系统总是比较简单的,所以如果可能,你总是应该优先编写无状态系统。
36. 写一个SQL查询,在雇员表中查找第二高的工资。 (solution)
这是SQL面试的经典题目之一,尽管已经很老了,还是很有趣,并且可以追问很多问题来测试候选人的知识深度。你可以用相关或不相关的子查询来查找第二高工资。如果你在用SQL Server或MySQL,你也可以用类似TOP和LIMIT之类的关键字,前提是面试官允许。查找第二高工资的最简答方法是:
这个查询首先查找最高工资,然后将它从列表中排除,再查找最高工资。很明显,第二次返回的是第二高工资。
37. 可否描述一下什么是关联的和不关联的子查询?(answer)
在关联的子查询中,内层查询依赖于外层查询,对外层查询的每一行执行。非关联的子查询不依赖于外层查询,可以独立执行。因此,前者慢,后者快。顺便说一下,关联的子查询有一些很棒的应用,其中包括在雇员表中查找第N高的工资,这在上一道SQL问题中也有提到。
39. 不用算术运算符,如何判定一个数是否是二的幂?(solution)
当你听到不能用算术运算符的限制时,应该立刻假定这是一道关于位运算的题。如果没有这条限制,那么你可以轻松地用取模和除运算符检查一个数是不是二的幂。用位运算符,有一个很巧妙的方法来完成任务。你可以用下面这段代码来检查一个数是不是二的幂
1 2 3 | public static boolean powerOfTwo( int x) { return (x & (x - 1 )) == 0 ; } |
x & (x-1)是一个很棒的技巧,可以将最右边的为1的位设为0。我是从《高效程序的奥秘》这本书中学到的。
40. 如何在UNIX上找到一个正在运行的Java进程?(command)
你可以组合使用ps和grep命令来查找UNIX机器上的任何进程。假设你的Java进程有名字,或者有任何可以用来匹配的文字,那么使用这个命令。
ps -ef | grep “myJavaApp”
ps -e将列出所有的进程(所有用户的进程,不只是你的),ps -f将显示所有细节,包括PID。如果你想要深入调查或用kill命令杀死这个进程,你会需要PID。
41. 如何在UNIX中寻找大的文件,例如1GB以上的文件? (command)
你可以轻松地用find命令寻找大的文件,因为它提供依据大小寻找文件的选项。如果你的文件系统满了,你的Java进程因为没有空间而崩溃,那么就使用这个命令。这个命令可以列出所有大于1GB的文件。你可以很容易地改变大小,例如寻找所有100MB以上的文件,就用+100M。
find . – type f -size +1G -print
42. shell脚本是什么?
shell脚本是包含程序元素(例如if和for循环)的一组shell命令,它可以自动做一些重复的任务。例如,你可以写一个shell脚本来每天清理日志文件,为记录历史备份数据,以及其他家务活、版本发布、监视等等。
浏览量:3
下载量:0
时间:
行政文员是公司最常见的工作,同样需要通过面试入职。下面小编就给大家带来一些行政文员经典面试题,欢迎大家参考。
自我暗示,克服害怕心理
第一:平时一见陌生人便脸红、紧张、说不出话,感到浑身不自在,这是陌生恐惧。针对陌生恐惧,我们要暗示自己:对于自己来说,别人是陌生的。但是从另外一个角度来看,对于对方,自己也是一个陌生人,既然大家彼此都是陌生人,那么大家就都是平等的,自己其实没有必要恐惧对方。
第二:参加面试时,若面对7或9名考官,几位计时员和监督员。当我们发觉众人的目光都在投向我们时,便会感到一阵紧张,很不自在,因为对方是一群人,而我们是单独一人,自然而然就产生一种群体恐惧。针对群体恐惧,我们要暗示自己:其实考官越多,就越能避免个别考官的个人倾向性,其实对我们就越有利。因为评分采取的是去掉最高分和最低分,然后求平均分的方式。因此,要相信考官一定能够公正地评价自己。自己一定能够遇到能够识别千里马的伯乐。
第三:我们参加应聘时,面试的主持人如果是高级领导干部,则往往会被他们的赫赫名声吓倒,一见面就会莫名其妙地紧张和不安,这就是高位恐惧。针对高位恐惧,我们要暗示自己:对方地位高,名声大,但他们也是一个普通人,从人格上说,人人都是平等的;而且还要回想起以前与自己老师和领导融洽关系建立的过程,要相信,考官就是自己以后的同事和领导,要相信自己只要把考官当成“自己人”,相信自己一定能够得到考官青睐的。这样便会增加自己的勇气,建立与对方平等的新关系,使面试顺利进行。
克服害怕 懂得四大技巧
第一,必须对面试本身进行充分的准备。只有对面试的流程、面试的题型、面试的过程有了一个充分的把握之后,才能有充分的自信,避免胆怯。这就要求我们对面试进行充分的准备。参加面试培训班是个很好的选择。
第二,面试过程中,要与考官进行亲切有神的目光交流。在目光交流中,会从考官目光中得到鼓励,有助于克服胆怯心理。
第三,发现对方的弱点,减轻心理压力。面试时不妨仔细观察对方的仪容、服装以及谈吐等,借以发现对方的缺点,这时就会产生一种宽松感,减轻心理压力。
第四,做深呼吸。在步入面试大门之前,可以做几次深呼吸,这样心情会平静很多,使勇气倍增。
猜你感兴趣:
浏览量:3
下载量:0
时间:
不管什么行业,招人都有相同的测评因素,目的都是在最短时间内了解最多的个人信息。下面是读文网小编为你整理的关于腾讯公司程序员的面试题及答案,希望你喜欢。
1、腾讯笔试题:const的含义及实现机制
const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
const用来说明所定义的变量是只读的。
这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。
2、腾讯笔试题:买200返100优惠券,实际上折扣是多少?
到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?
由于优惠券可以代替现金,所以可以使用200元优惠券买东西,然后还可以获得100元的优惠券。
假设开始时花了x元,那么可以买到 x + x/2 + x/4 + ...的东西。所以实际上折扣是50%.(当然,大部分时候很难一直兑换下去,所以50%是折扣的上限)
如果使用优惠券买东西不能获得新的优惠券,那么总过花去了200元,可以买到200+100元的商品,所以实际折扣为 200/300 = 67%.
3、腾讯笔试题:tcp三次握手的过程,accept发生在三次握手哪个阶段?
accept发生在三次握手之后。
第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
4、腾讯笔试题:用UDP协议通讯时怎样得知目标机是否获得了数据包
用UDP协议通讯时怎样得知目标机是否获得了数据包?
可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。
发送方在发送数据时将此ID和发送时间记录在本地。
接收方在收到数据后将ID再发给发送方作为回应。
发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。
5、腾讯笔试题:统计论坛在线人数分布
求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
一天总共有 3600*24 = 86400秒。
定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。
然后依次读入每个用户的登录时间和退出时间,将与登录时间对应的整数值加1,将与退出时间对应的整数值减1。
这样处理一遍后数组中存储了每秒中的人数变化情况。
定义另外一个长度为86400的整数数组int online_num[86400],每个整数对应这一秒的论坛在线人数。
假设一天开始时论坛在线人数为0,则第1秒的人数online_num[0] = delta[0]。第n+1秒的人数online_num[n] = online_num[n-1] + delta[n]。
这样我们就获得了一天中任意时间的在线人数。
6、腾讯笔试题:从10G个数中找到中数 在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
不妨假设10G个整数是64bit的。
2G内存可以存放256M个64bit整数。
我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。
如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。
7、腾讯笔试题:两个整数集合A和B,求其交集
两个整数集合A和B,求其交集。
1. 读取整数集合A中的整数,将读到的整数插入到map中,并将对应的值设为1。
2. 读取整数集合B中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2。
通过更改map中的值,避免了将同样的值输出两次。
8、腾讯笔试题:找出1到10w中没有出现的两个数字 有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?
申请10w个bit的空间,每个bit代表一个数字是否出现过。
开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。
然后依次读入已经打乱循序的数字,并将对应的bit设为1。
当处理完所有数字后,根据为0的bit得出没有出现的数字。
首先计算1到10w的和,平方和。
然后计算给定数字的和,平方和。
两次的到的数字相减,可以得到这两个数字的和,平方和。
所以我们有
x + y = n
x^2 + y^2 = m
解方程可以得到x和y的值。
9、腾讯笔试题:需要多少只小白鼠才能在24小时内找到毒药
有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?
最容易想到的就是用1000只小白鼠,每只喝一瓶。但显然这不是最好答案。
既然每只小白鼠喝一瓶不是最好答案,那就应该每只小白鼠喝多瓶。那每只应该喝多少瓶呢?
首先让我们换种问法,如果有x只小白鼠,那么24小时内可以从多少瓶水中找出那瓶有毒的?
由于每只小白鼠都只有死或者活这两种结果,所以x只小白鼠最大可以表示2^x种结果。如果让每种结果都对应到某瓶水有毒,那么也就可以从2^x瓶水中找到有毒的那瓶水。那如何来实现这种对应关系呢?
第一只小白鼠喝第1到2^(x-1)瓶,第二只小白鼠喝第1到第2^(x-2)和第2^(x-1)+1到第2^(x-1) + 2^(x-2)瓶....以此类推。
回到此题,总过1000瓶水,所以需要最少10只小白鼠。
10、腾讯笔试题:根据上排的数填写下排的数,并满足要求。
根据上排给出十个数,在其下排填出对应的十个数, 要求下排每个数都是上排对应位置的数在下排出现的次数。上排的数:0,1,2,3,4,5,6,7,8,9。
11、腾讯笔试题:判断数字是否出现在40亿个数中?
给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中?
答案:
unsigned int 的取值范围是0到2^32-1。我们可以申请连续的2^32/8=512M的内存,用每一个bit对应一个unsigned int数字。首先将512M内存都初始化为0,然后每处理一个数字就将其对应的bit设置为1。当需要查询时,直接找到对应bit,看其值是0还是1即可。
看过“关于腾讯公司程序员的面试题及答案”
浏览量:3
下载量:0
时间:
面试作为一种测评方法和决策工具在人力资源管理中的应用非常广泛,多用于咨询、选拔、招聘、调查以及评估等众多领域。下面是读文网小编为你整理的关于经典的FBI面试题,希望你喜欢。
第一题:迷路的男孩
有个男人开车去机场赶班机,在到了一个三岔口时,看见一个男孩蹲在地上哭泣。男人下车询问男孩为什么哭,男孩说他迷路了。于是男人带着小男孩朝他描述的大致方向找去,在开了很久的车之后,男孩说看见了自己的家,便跳下车。这时,男人发现自己已经误了班机的起飞时间。男人在车里沮丧起来,突然又吓的直冒汗,然后又欣慰的笑了。是什么事造成男人这样的情感变化?
答案:男人10年前将一个出车祸的小男孩送进的医院,10年后又看到这个小男孩,但一时没有想起。忽然车里的广播传来飞机失事的消息,男人因此吓的冒汗,欣慰地笑了是因为他知道是小男孩的灵魂在感恩。
第二题:懦弱的男人
男人和女人坐皮艇在海上时,遭遇了鲨鱼,在鲨鱼离他们只有10米远的时候,男人着急地将女人推进了海里,并抽出匕首指着女人,说道,我们只能活一个!随即男人迅速划船逃离。女人很失望,对于这个懦弱自私的男人,她没有责怪他什么,只怪自己瞎了眼看上他……女人在默默的等待死亡, 五米,四米……鲨鱼速度很快,女人闭上了眼睛,忽然鲨鱼绕过了她,冲向皮艇,将男人拖下水,疯狂的撕咬男人,很快男人便尸骨无存。后来女人被路过的商船救了下来,女人发现船长望着海水在哭泣。女人问他哭什么?船长说出了原因,女人听后伤心欲绝,跳进海里自杀了。船长说了什么?
答案:船长说:我看见那个男人用小刀划破了手腕,他边划边让血流入海里吸引鲨鱼,所以鲨鱼绕过你,去追寻血腥味,你才因此活下来。他是那样的爱你啊!
第三题:地下酒吧的秘密
在地下五层的酒吧中,一个年轻的小伙子坐在吧台边的椅子上焦急的等待。他的眼睛一动不动的注视着天花板上钟表上的时间。突然他像发了狂一样拿出手机,看了一眼,接着将手机狠狠的扔在地上,然后哭着大喊:救命!他一系列行为的原因是什么?
答案:男人在酒吧等待女友,当他看到天花板上的电子钟时,他发现上面显示的时间是在倒记时!他记起酒吧里根本没有钟。所以那是一个定时炸[防抽]弹且马上就要爆[防抽]炸了。男人不想女友出事,便拿手机让她别来了。可在地下5层里没有信号,因此男人在最后5秒时崩溃了,大喊救命并逃跑。
第四题:只有公主逃走了!
王子带着公主逃出了鬼堡,到出口处时,魔鬼出现了,魔鬼说:“白色代表天使,与恶魔对立,所以穿白色连衣裙的公主不能通过,必须死在这里!”说着魔鬼掏出了匕首。结果王子却死了,公主逃出了鬼堡,为什么?
答案:公主杀王子,血染衣红。
第五题:死于心脏病。
花匠和他的女朋友在谈论最近发生的一件变态的碎尸案件,谈着谈着,花匠的女朋友说:“还是谈点别的吧,比如你养的花!对了,你的后园里的花我可以参观一下吗?”花匠表示花还没有开好,等花开的时候再参观吧,女朋友点头同意了。傍晚的时候,花匠的女朋友偷偷进入的花匠的花园,在参观一周后,她突发心脏病死了。她到底受到了什么惊吓才导致心脏病的?
答案:花匠用内脏浇花。
看过“关于经典的FBI面试题”
浏览量:2
下载量:0
时间:
短暂的第一印象已更多地成为了自我实现的预言:面试官只能听到所希望听到的内容,并且一厢情愿地将一时的表现视同一贯的行为。下面是读文网小编为你整理的关于经典JAVA面试题大全,希望你喜欢。
面向对象编程(OOP)
Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:
代码开发模块化,更易维护和修改。
代码复用。
增强代码的可靠性和灵活性。
增加代码的可理解性。
面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。
封装
封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。
下面列出了使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
禁止对象之间的不良交互提高模块化。
参考这个文档获取更多关于封装的细节和示例。
多态
多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。
继承
继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。
抽象
抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。
抽象和封装的不同点
抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。
常见的Java问题
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.JDK和JRE的区别是什么?
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。
3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
4.是否可以在static环境中访问非static变量?
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java支持的数据类型有哪些?什么是自动拆装箱?
Java语言支持的8中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。
6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。
8.Java支持多继承么?
不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
9.接口和抽象类的区别是什么?
Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。#p#副标题#e#
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
也可以参考JDK8中抽象类和接口的区别
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
Java线程
11.进程和线程的区别是什么?
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
12.创建线程有几种不同的方式?你喜欢哪一种?为什么?
有三种方式可以用来创建线程:
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。
13.概括的解释下线程的几种可用状态。
线程在执行过程中,可以处于下面几种状态:
就绪(Runnable):线程准备运行,不一定立马就能开始执行。
运行中(Running):进程正在执行线程的代码。
等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O阻塞(Blocked on I/O):等待I/O操作完成。
同步阻塞(Blocked on Synchronization):等待获取锁。
死亡(Dead):线程完成了执行。
14.同步方法和同步代码块的区别是什么?
在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。
15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。
16.什么是死锁(deadlock)?
两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。
17.如何确保N个线程可以访问N个资源同时又不导致死锁?
使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
Java集合类
18.Java集合类框架的基本接口有哪些?
Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:
Collection:代表一组对象,每一个对象都是它的子元素。
Set:不包含重复元素的Collection。
List:有顺序的collection,并且可以包含重复元素。
Map:可以把键(key)映射到值(value)的对象,键不能重复。
19.为什么集合类没有实现Cloneable和Serializable接口?
集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。
20.什么是迭代器(Iterator)?
Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的
迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。
看过“关于经典JAVA面试题大全”
浏览量:2
下载量:0
时间:
求职者面试回答问题技巧关乎岗位的适合度。那关于面试ASP程序员的一些面试题有什么呢?下面是读文网小编为你整理的面试ASP程序员的一些面试题,希望对你有帮助。
1、简述asp的6个内置对象和其功能
答案 : session ,server ,response,request,objectcontext,application
2、SQL语句:写一条SQL语句,创建一个表名为test的表,内有两个字段一个字段叫ID 是int 类型另一个是Name是nvarchar(50)
答案:create table test (id int,name nvarchar(50))
3、表单提交的两种方法是什么?
答案:两种post ,get
4、asp和asp.net有什么区别
5、如何用asp实现系统的三层结构
答案:windows DNA结构asp + com+ + database (sqlserver)
6、有一个数据库系统设计的时候各个表关系严格按照第三范式设计,现在当数据量到了100万级的时候发现联立2个表或者多个表的视图查询缓慢,你有什么办法。如果你重新设计这个系统你使用什么办法在一开始就避免这种情况。
7、说说为表建立索引的利弊和建立原则。
8、用什么方法可以在客户端验证用户的输入。一般情况下对作为一个对外发布的网站应该如何防止SQL注入的漏洞。
9、谈谈你对网站安全的理解和程序员、DBA、网管各应该负责什么?
10、什么是团队精神
看过“面试ASP程序员的面试题”
浏览量:2
下载量:0
时间:
面试中问题的回答关乎你在用人企业的去留的关键问题。那关于经典的公务员面试题有哪些呢?下面是读文网小编为你整理的经典的一些公务员面试题,希望对你有帮助。
1、领导让你下乡做扶贫工作,你该怎么制定计划?
2、谈谈你对社会腐败现象的看法?
3、你所学的知识,工作经验与考的职位之间有什么对应性?
4、有人拿者介绍信说是灾区来的要你们部门捐款,你怎么办?
5、谈谈你对“有权不用,过期作废”和“为官一方,造福一方”的看法?
6、中国已经加入WTO,谈谈WTO对中国的经济、政治、文化的影响?
7、新领导如何对待前任旧领导?
8、谈谈你对代沟的看法?如果你与领导产生代沟上的问题,你该怎么处理?
9、你有一个非常好的工作设想,你经过实际调查认为这个设想既科学,又可行,但你的领导和同事们很固执,你采取什么办法说服他们与你合作?
10、在你朋友当中,有两位朋友由于发生一些矛盾而中断往来,如果需要协调他们之间的关系,你会如何做?
11、你为什么要报考国家公务员(公安)?
12、谈谈你的个人简历和家庭情况(不能透露自己的姓名)?
13、以前我们的计划经济讲究公平,而现在的市场经济讲究效率,请你就这两点谈谈你的看法。
14、你刚到单位工作,找你的电话很多,你打给别人的电话也很多,有一位老同志看不过眼,批评了你,你会怎么做?
15、你认为你身边的某人犯了错误你会怎么做?
16、你认为DY是邪教吗?为什么?
17、谈谈你对本次公务员考试的看法和建议?
18、工作中你难以和同事、上司相处,你该怎么办?
19、你觉的工作后,工作的单位与你的理想有很大的距离,谈谈你的想法?
20、你的工作计划得到了单位局长的批准,而你部门科长且不同你的计划,你给怎么处理?
看过“20道经典的公务员面试题”
浏览量:2
下载量:0
时间:
面试题是面试官为了考查你的成绩而出的试题。下面是读文网小编为大家带来的2016 java面试题,相信对你会有帮助的。
一、Java基础
第01题:
作用域public,private,protected,以及不写时的区别
第02题:
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
第03题:
Static Nested Class 和 Inner Class的不同
第04题:
&和&&的区别
第05题:
Collection 和 Collections的区别
第06题:
什么时候用assert
第07题:
String s = new String("xyz");创建了几个String Object
第08题:
Math.round(11.5)等於多少? Math.round(-11.5)等於多少
第09题:
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错
第10题:
Java有没有goto
第11题:
数组有没有length()这个方法? String有没有length()这个方法
第12题:
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
第13题:
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别
第14题:
给我一个你最常见到的runtime exception
第15题:
error和exception有什么区别
第16题:
List, Set, Map是否继承自Collection接口
第17题:
abstract class和interface有什么区别
第18题:
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
第19题:
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)
第20题:
构造器Constructor是否可被override
第21题:
是否可以继承String类
第22题:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
第23题:
用最有效率的方法算出2乘以8等於几
第24题:
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
第25题:
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
第26题:
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
第27题:
ArrayList和Vector的区别,HashMap和Hashtable的区别
第28题:
char型变量中能不能存贮一个中文汉字?为什么?
第29题:
GC是什么? 为什么要有GC
第30题:
float型float f=3.4是否正确?
第31题:
介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
第32题:
抽象类与接口?
第33题:
STRING与STRINGBUFFER的区别。
第34题:
谈谈final, finally, finalize的区别
第35题:
面向对象的特征有哪些方面
第36题:
String是最基本的数据类型吗
第37题:
int 和 Integer 有什么区别
第38题:
运行时异常与一般异常有何异同
第39题:
说出ArrayList,Vector, LinkedList的存储性能和特性
第40题:
HashMap和Hashtable的区别
第41题:
heap和stack有什么区别
第42题:
Java的接口和C++的虚类的相同和不同处
第43题:
Java中的异常处理机制的简单原理和应用
第44题:
垃圾回收的优点和原理。并考虑2种回收机制
第45题:
你所知道的集合类都有哪些?主要方法?
第46题:
描述一下JVM加载class文件的原理机制?
第47题:
排序都有哪几种方法?请列举
第48题:
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
第49题:
一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
第50题:
java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
第51题:
java中会存在内存泄漏吗,请简单描述。
第52题:
java中实现多态的机制是什么?
第53题:
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收
第54题:
静态变量和实例变量的区别?
第55题:
什么是java序列化,如何实现java序列化?
第56题:
是否可以从一个static方法内部发出对非static方法的调用?
第57题:
写clone()方法时,通常都有一行代码,是什么?
第58题:
在JAVA中,如何跳出当前的多重嵌套循环?
第59题:
List、Map、Set三个接口,存取元素时,各有什么特点?
第60题:
说出一些常用的类,包,接口,请各举5个
第61题:
写一个Singleton出来。
第62题:
启动一个线程是用run()还是start()?
第63题:
java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
第64题:
sleep() 和 wait() 有什么区别?
第65题:
同步和异步有何异同,在什么情况下分别使用他们?举例说明。
第66题:
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第67题:
请说出你所知道的线程同步的方法。
第68题:
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
第69题:
线程的基本概念、线程的基本状态以及状态之间的关系
第70题:
简述synchronized和java.util.concurrent.locks.Lock的异同 ?
第71题:
java中会存在内存泄漏吗,请简单描述
第72题:
Object的方法
第73题:
文件系统的几个类:FileInputStream、FileOutputStream、FileReader、FileWriter的区别
第74题:
什么是进程和线程?两者的区别是什么?
第75题:
CORBA是什么?用途是什么?
第76题:
描述一下JVM加载class文件的原理机制?
第77题:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
第78题:
写一个方法,将Date类型转为String类型/将String类型转为Date类型
第79题:
写一个排序方法,任意/快速查找
第80题:
写一个方法将excel中的数据导入到程序中
第81题:
String s = new String("xyz");创建了几个String Object?
第82题:
用最有效率的方法算出2乘以8等于几?
第83题:
有a,b两个变量,不用第三个变量,交换a,b的值
第84题:
描述一下JVM 加载class 文件的原理机制?
第85题:
char 型变量中能不能存贮一个中文汉字?为什么?
#p#副标题#e#
二、JavaWeb
第01题:
forward 和redirect的区别
第02题:
jsp有哪些内置对象?作用分别是什么?
第03题:
jsp有哪些动作?作用分别是什么?
第04题:
JSP中动态INCLUDE与静态INCLUDE的区别?
第05题:
两种跳转方式分别是什么?有什么区别?
第06题:
说一说Servlet的生命周期?
第07题:
Servlet的基本架构
第08题:
什么情况下调用doGet()和doPost()?
第09题:
页面间对象传递的方法
第10题:
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
第11题:
Request对象的主要方法
第12题:
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
第13题:
Servlet执行时一般实现哪几个方法?
第14题:
Struts1.x 中 DispatchAction 怎么用?有Action 有哪些区别?
第15题:
MVC的各个部分都有那些技术来实现?如何实现
第16题:
开发中都用到了那些设计模式?用在什么场合
第17题
请你谈谈SSH整合
第18题:
Hibernate外键关联,做多表链接查询出的字段如果没有实体bean与之相对应,该如何解决?
第19题:
Hibernate的sessionfactory和session的区别是什么?如何处理session线程不安全问题?
第20题:
Hibernate如何实现动态查询?DetachedCriteria与Criteria的区别是什么?
第21题:
写一段Jdbc连Oracle的程序,并实现数据查询.
第22题:
Struts优点与缺点
第23题:
Struts提供了几个标签库?都是什么标签库?
第24题:
Tiles框架是什么?
第25题:
Hibernate中的Session. load()和Session.get()的区别
第26题:
Spring和Struts的区别?
第27题:
什么是aop,aop的作用是什么?
第28题:
aop中的关键名词有些那些,相互关系是什么?
第29题:
依赖注入的方式有几种,各是什么?
第30题:
Hibernate中的update()和saveOrUpdate()的区别
第31题:
Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理
第32题:
使用Spring的好处是什么
第33题:
Hibernate是如何延迟加载?
第34题:
说下Hibernate的缓存机制
第35题:
Hibernate的查询方式
第36题:
如何优化Hibernate?
第37题:
HttpSession session = request.getSession()
与HttpSession session = request.getSession(true)的区别?
第38题:
Class.forName的作用?为什么要用?
第39题:
Jdo是什么?
第40题:
说出数据连接池的工作机制是什么?列举几个常用的数据连接池。
第41题:
JDBC如何调用数据连接池
第42题:
xml有哪些解析技术?区别是什么?
第43题:
你在项目中用到了xml技术的哪些方面?如何实现的?
第44题:
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
第45题:
请用编程语言写一个排列组合的算法。可以实现一个简单的算法:存在N个数组,输出在每个数组取一个元素的排列组合结果。假设:
数组A=[X,Y,Z],数组B=[1,2]
组合的结果:
X1,X2,Y1,Y2,Z1,Z2
排列组合的结果:
X1,X2,Y1,Y2,Z1,Z2,1X,1Y,1Z,2X,2Y,2Z
要求程序可以适应N为任意数和每个数组长度不同的情况(假设内存足够大,程序可以不考虑效率)。
第46题:
请描述HTTP交互中Session和Cookies的关系以及二者的区别
第47题:
请用流程图或文字描述Servlet的开发和部署过程,包括从java类的编码到可以通过IE访问
第48题:
多人访问网站,如何减轻服务器压力(程序实现,考虑Hibernet中的方法)
第49题:
多个人访问数据序,一个对数据序进行了修改,而另一个人已在修改前查询到页面,当点击打印时,该怎样做,才能能到修改后的最新数据。
第50题:
MVC是什么?
第51题:
CVS是什么?
第52题:
Struts2和Spring集成的时候,是否可以把Action设置成singleton模式,请简述理由
第53题:
简要叙述Hibernate一级缓存和二级缓存的作用
第54题:
什么是singleton模式和DAO模式?
第55题:
简述Spring中DI、IoC和AOP的含义。
第56题:
请比较Struts1.x和Struts2在多模块开发方面的差异
#p#副标题#e#
三、JavaScrpt和Css
第01题:
编写函数,用于过滤一个数组内重复的元素,并用这些元素重构一个新数组,新数组内也不能有重复元素。
第02题:
javascript是不是面向对象的语言?如果是,怎么实现继承?
第03题:
如何获取表单
第04题:
在JavaScript 中定时调用函数foo()如何写?
第05题:
var a=”10” ; var b=”20”; var c=”10”; var d=10 ;alert(a=b) ; alert(a==b); alert(c==d); alert(a===b);结果是?
第06题:
Var obj =new Object();obj.a=”001”;obj.b=”002”;obj.c=”003”;obj.d=”004”;................... 写一个function遍历obj 对象中的所有的属性对应的值
第07题:
form中的input有哪些类型?各是做什么处理使用的
第08题:
table标签中border,cellpadding;td标签中colspan,rowspan分别起什么作用
第09题:
form中的input可以设置readonly和disable,请问这两项属性有什么区别
第10题:
JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么
第11题:
当点击按钮时,如何实现两个td的值互换?
用javascript实现此功能
第12题:
编写一个方法 求一个字符串的字节长度
第13题:
如何控制alert中的换行
第14题:
解释document.getElementById("ElementID").style.fontSize="1.5em"
第15题:
求y和z 的值是多少?
第16题:
javascript怎样选中一个checkbox,怎样设置它无效?
第17题:
在css中:以下语句各代表什么意思? td{width100%} .td{width100%} #td{width100%}
四、数据库
第01题:
假设tableA为某学校的花名册:a1——学号;a2——姓名;a3——性别;
tableB为各班级花名册:b1——班级号;b2——座位号;b3——姓名;b4——性别; 有同样结构的4张表B1,B2,B3,B4分别代表01,02,03,04级。 1、SQL语句:
请用最简单的操作,使4张表的记录汇总到tableA中。(注:学号=年级号+班级号+座位号)
2、存储过程: 写一个存储根据传入的年级号计算该年级的男女生各自的人数(男女生的参数作为传出参数) 3、函数 新增一个学生时,选择年级和班级号后,自动获取学号(只操作tableA) 4、函数 检查日期的正确性(注意大小月及闰年)
看过“2016 java面试题”
浏览量:3
下载量:0
时间:
回答面试题是java程序员个人求职者在求职面试过程中必须完成的环节。下面是读文网小编为大家带来的2017java程序员面试题,相信对你会有帮助的。
一、基本数据结构
1. 队列和栈的区别和常用操作
2. 队列的实现方式(单向链表、双向链表)
3. 基于队列的算法(主要是排序算法:归并排序,二分法插入排序可以做重点(这两个排序通常会被用来做动态有序队列的维护)。至于快速排序,基本上都用现成的程序库,不需要掌握)
4. 图的基本概念 (有向图,无向图)
5. 图的基本表达方法(邻接矩阵,链接表)
6. 图的基本算法
a) 最短路径Dijstra
b) 最小生成树 Prim
7. 树的基本概念(二叉树,平衡树,森林)
8. 树的基本表达方法
9. 树的相关算法
a) 遍历算法(深度优先、广度优先)构
b) 平衡树(B树)
c) 其他算法(Haffman树)
数据库:资料下载
点击下页还有更多>>>2017java程序员面试知识点
#p#副标题#e#
二、基本概念
1. 数据库、表、视图、Sequence、Index
2. 数据类型的区别(Char 和 varchar的区别)
3. 关系 (外键、主键。1:1, 1:n,n:n关系在数据库中的实现)
4. 范式
三、应用
1. 基本Sql语言
2. Outer join (left, right, full)和 inner join
3. Transaction概念
4. Transaction和Connection的关系
四、高级应用
1. DAO模型
2. Connection Pool
3. OR Mapping Tools (Hibernate)
五、基本概念
1. 语言基本概念
a) Abstract,static,和final修饰符
2. 各种不同类型的类型
a) Normal Class
b) Abstract Class
c) Interface
3. 特殊类型
a) Exception (unchecked 和 checked)
b) System
c) Classloader
d) Thread + Runnable
e) Serializable
f) Comparable
g) Cloneable
h) Object
HashCode ()
Equals ()
Clone ()
ToString ()
4. 基本Pattern的实现
a) Singleton
b) Utility class
5. 对象的基本概念
a) Create a object
b) Lifecycle of object
c) Object reference 和Object的关系
存储位置(Heap和Stack)
对象赋值和修改
二、中级概念
1. String的基本操作方法
2. Java. collections中的基本对象
a) Collection
b) List
c) Set
d) Map
e) 两个Utils类:Collections和Arrays
3. Concurrency的基本概念
a) synchronized
b) Thread 和 runnable的基本概念
c) Concurrency (JDK 1.5)的基本使用方法
ReadWriteLock
Thread pool
d) Dead lock的原因和诊断方法
4. 第三方Utils库的使用方法
a) Log4j
b) Commons-xxx
5. Heap和Garbage Collection
a) Object reuse (Object pool, 对基本类型对象,使用Value Of代替new)
b) Memory leak的原因和诊断方法
六、高级概念
1. J2EE/EJB
a) Stateless / Stateful Session Bean
b) Servlet/MVC/struts
c) Webservice (WSDL/SOAP/AXIS/X Fire)
2. Spring framework
a) 基本概念(IoC, AOP)
3. Hibernate
看过“2017java程序员面试题”
浏览量:2
下载量:0
时间:
逻辑算法题是程序员面试的时候,必考的题型之一。下面是读文网小编为大家带来的程序员逻辑算法面试题及参考答案,相信对你会有帮助的。
【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面,再灌满6向5里倒3升,剩余3升。
【2】周雯的妈妈是豫林水泥厂的化验员。一天,周雯来到化验室做作业。做完后想出去玩。"等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验用的玻璃杯,前面3只盛满了水,后面3只是空的。你能只移动1只玻璃杯,就便盛满水的杯子和空杯子间隔起来吗?"爱动脑筋的周雯,是学校里有名的"小机灵",她只想了一会儿就做到了。请你想想看,"小机灵"是怎样做的? 设杯子编号为ABCDEF,ABC为满,DEF为空,把B中的水倒进E中即可。
【3】三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。小李的命中率是30%,小黄比他好些,命中率是50%,最出色的枪手是小林,他从不失误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。然后这样循环,直到他们只剩下一个人。那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?
小林在轮到自己且小黄没死的条件下必杀黄,再跟菜鸟李单挑。
所以黄在林没死的情况下必打林,否则自己必死。
小李经过计算比较(过程略),会决定自己先打小林。
于是经计算,小李有873/2600≈33.6%的生机;
小黄有109/260≈41.9%的生机;
小林有24.5%的生机。
哦,这样,那小李的第一枪会朝天开,以后当然是打敌人,谁活着打谁; 小黄一如既往先打林,小林还是先干掉黄,冤家路窄啊!
最后李,黄,林存活率约38:27:35;
菜鸟活下来抱得美人归的几率大。
李先放一空枪(如果合伙干中林,自己最吃亏)黄会选林打一枪(如不打林,自己肯定先玩完了)林会选黄打一枪(毕竟它命中率高)李黄对决0.3:0.280.4可能性李林对决0.3:0.60.6可能性成功率0.73
李和黄打林李黄对决0.3:0.40.7*0.4可能性李林对决
0.3:0.7*0.6*0.70.7*0.6可能性成功率0.64
【4】一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?按:心理问题,不是逻辑问题
是让甲分汤,分好后由乙和丙按任意顺序给自己挑汤,剩余一碗留给甲。这样乙和丙两人的总和肯定是他们两人可拿到的最大。然后将他们两人的汤混合之后再按两人的方法再次分汤。
【5】在一张长方形的桌面上放了n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一些彼此重叠;当再多放一个硬币而它的圆心
在桌面内时,新放的硬币便必定与原先某些硬币重叠。请证明整个桌面可以用4n个硬币完全覆盖。
要想让新放的硬币不与原先的硬币重叠,两个硬币的圆心距必须大于直径。也就是说,对于桌面上任意一点,到最近的圆心的距离都小于2,所以,整个桌面可以用n个半径为2的硬币覆盖。
把桌面和硬币的尺度都缩小一倍,那么,长、宽各是原桌面一半的小桌面,就可以用n个半径为1的硬币覆盖。那么,把原来的桌子分割成相等的4块小桌子,那么每块小桌子都可以用n个半径为1的硬币覆盖,因此,整个桌面就可以用4n个半径为1的硬币覆盖。
【6】一个球、一把长度大约是球的直径2/3长度的直尺.你怎样测出球的半径?方法很多,看看谁的比较巧妙
【7】五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆? 底下放一个1,然后2 3放在1上面,另外的4 5竖起来放在1的上面。
【8】猜牌问题S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?于是,S先生听到如下的对话:P先生:我不知道这张牌。Q先生:我知道你不知道这张牌。P先生:现在我知道这张牌了。Q先生:我也知道了。听罢以上的对话,S先生想了一想之后,就正确地推出这张牌是什么牌。请问:这张牌是什么牌? 方块5
看过“程序员逻辑算法面试题及参考答案”
浏览量:3
下载量:0
时间:
在求职面试过程中,要做好知识、技能和从业态度等方面的必备工作,下面是读文网小编为大家带来的程序员面试题,相信对你会有帮助的。
求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
一天总共有 3600*24 = 86400秒。
定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。
然后依次读入每个用户的登录时间和退出时间,将与登录时间对应的整数值加1,将与退出时间对应的整数值减1。
这样处理一遍后数组中存储了每秒中的人数变化情况。
定义另外一个长度为86400的整数数组int online_num[86400],每个整数对应这一秒的论坛在线人数。
假设一天开始时论坛在线人数为0,则第1秒的人数online_num[0] = delta[0]。第n+1秒的人数online_num[n] = online_num[n-1] + delta[n]。
这样我们就获得了一天中任意时间的在线人数。
浏览量:3
下载量:0
时间:
你在面试的时候,被问过哪些经典的问题呢?下面是读文网小编带来的关于经典面试题的内容,欢迎阅读!
例:一份机密文件不见了,当你准备向领导报告。第2天却又出现在你的抽屉里。你如何处理这件事?
首先,我在平时的工作中还是比较细心谨慎的,以前没有发生过也会尽力避免以后发生此类事件。但如果发生了像题目中的类似事件,我会冷静的妥善处理好:第一、我还是会及时向领导报告,详细说明整个情况,对于自己的失职作深刻的检讨。
第二、追查资料被何人传阅过,有什么人接触过资料,防止资料内容落入别有用心的人,并及时向领导汇报有关进展情况。
第三、总结经验教训,自我反省,提高对__的认识,严格按照单位的资料归档管理制度办理,防止此类事件再次发生。
总之,作为一名公务员,面对突发事件,要时刻保持头脑清醒,科学分析,准确判断,果断行动,整合资源,调动各种力量,有序应对突发事件,尽量将损失降到最低。
浏览量:4
下载量:0
时间:
情景面试题是经典的面试题型之一,对情景面试题的回答能体现求职者的应变能力。下面是读文网小编带来的关于经典情景面试题的内容,欢迎阅读!
1、以平和的心态对待考官提出的问题
考生对这类试题回答的质量很大程度上取决于考生的心理稳定性。考生在思考问题的时候要把自己超脱出来,不把自己作为其中的当事人,而是从别人出主意的角度来分析和思考解决问题的办法,再用第一人称表述出来,这样可以排除身份限制带来的压力和紧张,能够使自己的思维更加灵活,思路更加宽阔。
2、灵活应对
避免用社会称许的“道德标准”和“原则性”作为应对变化的唯一根据,考生应该坚持原则的前提下,尽可能录求稳妥应对变化情境,尽可能减少冲突各方的损失,尽可能减少因环境、条件变化而产生的干扰,保证工作的顺利开展或人际关系的正常状态。
3、拟订多个方案,权衡利弊
如果是具体工作中发生的某种突发性变化,那么一定要以保证工作的顺利进行为原则;如果是人际关系中突然出现的某种变化造成人际关系的紧张,那么一定要以不影响工作、同时尽量缓解矛盾、减少各方伤害为原则。
4、总结经验教训
事情解决后,要分析原因,总结经验并从中吸取教训,避免再犯类似的错误,同时为下次解决类似事件积累经验。
看过“经典情景面试题”
浏览量:3
下载量:0
时间:
Java经典面试题及答案(面试必看)
Java面试题涵盖的范围非常广泛,根据不同的岗位和公司要求,面试题可能会有所不同。为了让面试者能顺利应对面试官的问题,下面小编为大家收集整理了关于Java经典面试题及答案的相关内容,希望对大家有所帮助!
Java是一门面向对象的编程语言,其主要用途有以下几个方向:
大数据领域、
Hadoop以及其他大数据处理技术普遍用的都是Java,当然其他语言也有用到,基于Java?的?HBase和Accumulo以及ElasticSearchas。但Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮大,Java依然有潜力占据一部分。
Android应用?
如果你想知道Java应用在哪里,打开你的安卓手机或者任何的App,它们完全是用有着谷歌Android API的Java编程语言编写的,这个API和JDK非常相似。前几年安卓刚开始起步而到今日已经很多Java程序员是安卓App的开发者。顺便一提,虽然我们之前的文章提到的关于安卓App是如何工作的,即安卓使用了不同的Java虚拟机和不同的封装,但是代码仍然是用Java编写的。
网站领域
Java同样也在电子商务和网站开发上有着广泛的运用。你可以运用很多RESTfull架构,这些架构是用Spring MVC,Struts 2.0和类似的框架开发出来的。甚至简单的Servlet,JSP和Struts在各种政府项目也是备受欢迎,许多政府,医疗,保险,教育,国防和其他部门的网站都是建立在java之上的。
浏览量:3
下载量:0
时间:
Java经典面试题200道(带答案)
Java面试题涵盖的范围非常广泛,根据不同的岗位和公司要求,面试题可能会有所不同。为了让面试者能顺利应对面试官的问题,下面小编为大家收集整理了关于java常见面试题的相关内容,希望对大家有所帮助!
1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4.编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。
在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
5.稳健性
Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。
可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
浏览量:5
下载量:0
时间:
2023年Java经典面试题及答案(200道)
Java面试题涵盖的范围非常广泛,根据不同的岗位和公司要求,面试题可能会有所不同。为了让面试者能顺利应对面试官的问题,下面小编为大家收集整理了关于2023年Java经典面试题及答案(200道)的相关内容,希望对大家有所帮助!
简历:简历的编写要真实可信,突出个人亮点,格式无误,排版干净,控制简历页数。
面试准备:了解公司的基本情况、业务范围、市场占比等。
技术准备:熟悉Java开发岗位所需知识,包括Java基础、JVM、多线程、Mysql、Spring、Spring Boot、Spring Cloud等。
非技术准备:了解非技术性方面的问题,如知识结构、沟通能力、学习能力等。
浏览量:8
下载量:0
时间: