程序员电话面试题汇总大全.docx

上传人:知****量 文档编号:84296851 上传时间:2023-04-04 格式:DOCX 页数:5 大小:39.34KB
返回 下载 相关 举报
程序员电话面试题汇总大全.docx_第1页
第1页 / 共5页
程序员电话面试题汇总大全.docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《程序员电话面试题汇总大全.docx》由会员分享,可在线阅读,更多相关《程序员电话面试题汇总大全.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、程序员电话面试题汇总大全1.从哈希表,二叉树和链表中取元素需要多少时间如果你有数百万记录呢哈希表需要O(1)时间,二叉树需要O(logN)(N是树中节点数),链表需要O(N)(N是链表中节点数)。如果数据结构正常(比如哈希表没有或只有相对少量冲突,二叉树是平衡的),数百万记录并不影响效率。如果工作不正常,那么效率会随着记录数上升而下降。2.覆盖(Overriding)和重载(Overloading)的区别是什么(detailedanwer)覆盖在运行时决定,重载是在编译时决定。并且覆盖和重载的机制不同,例如在Java中,重载方法的签名必须不同于原先方法的,但对于覆盖签名必须相同。3.fork一

2、个进程和生成一个线程有什么区别当你fork一个进程时,新的进程将执行和父进程相同的代码,只是在不同的内存空间中。但当你在已有进程中生成一个线程时,它会生成一个新的代码执行路线,但共享同一个内存空间。4.什么是临界区(anwer)临界区是一段代码,十分重要,在多线程中同一时间只能被一个线程执行。可以用信号量或互斥量来保护临界区。在Java中你可以用ynchronized关键字或ReentrantLock来保护临界区。5.值类型和引用类型有什么区别(anwer)值类型是更加优化的类型,总是不可变的(immutable),例如Java原始的int、long、double和float。引用类型指向一个

3、对象,可能是可变的,也可能是不变的。你也可以说值类型指向一个值,引用类型指向一个对象。6.什么是在进程中的堆和栈(detailedanwer)在同一个进程中,有两块不同的内存区域。以Java来说,栈用来存储原始值和指向对象的引用类型,但对象本身总是在堆中被创建。堆和栈的一个重要区别是,堆内存被所有线程共享,但每个线程有自己的栈。7.什么是版本控制(anwer)版本控制是用来存储代码和管理代码库版本的软件,例如SVN、CVS、Git、Perforce和ClearCae。它们在对比代码、审查代码和从之前的稳定版本构造时十分高效。所有的专业开发都使用某种版本控制工具,否则你无法有效的管理代码,尤其是

4、如果有20个开发者在同一个代码库上工作的时候。版本控制工具在保持代码库一致性和处理代码冲突上扮演着十分重要的角色。8.什么是强类型程序设计语言(anwer)在强类型语言中,编译器确保类型的正确性,例如你无法在String类型中存放数字,反之亦然。Java是强类型语言,因此存在各种数据类型(如int、float、String、char、boolean等)。你只能将兼容的值存入相应的类型中。与此相反,弱类型语言不要求在编译时进行类型检查,它们根据上下文处理值。Python和Perl是两个常见的弱类型程序设计语言的例子,你可以将数字组成的字符串保存在数字类型中。9.可否描述一下有效(valid)的某

5、ML和格式正确(well-formed)的某ML的区别10.DOM和SA某语法分析器有什么区别(detailedanwer)11.线程和进程的关系是什么(detailedanwer)一个进程可以有多个线程,但一个线程总是属于唯一的进程。两个进程不能共享内存空间,除非它们有意通过共享内存进行进程间通信。但是同一进程的两个线程总是共享相同的内存。12.不可变(immutable)类是什么意思(detailedanwer)一个类,如果在创建之后它的状态就不能被改变,那么他就是不可变的。例如Java中的String。一旦你创建了一个String,例如Java,你就不能再改变它的内容。任何对这个字符串的

6、改变(例如转换到大写、与另一个String连接)将创建一个新的对象。不可变的对象在并行程序设计中很有用,因为它们可以在进程间被共享,不需要担心同步。事实上,整个函数式程序设计的模型都是基于不可变对象构建的。13.你为何要创建模拟(mock)对象(anwer)模拟对象在测试软件中一个独立的单元时很有用,事实上,存根(tub)和模拟都是创建自动化单元测试的有力工具。假设你在写一个显示货币兑换率的程序,但没有一个可以连通的URL,现在如果想测试你的代码,可以用模拟对象。在Java的世界中,有很多框架可以为你生成强大的模拟对象,例如Mockito和PowerMock。14.什么是SQL注入SQL注入是

7、一种安全漏洞,它使得入侵者可以从系统中窃取数据。任何从用户那里得到输入并不加验证地创建SQL查询的系统都可能被SQL注入攻击。在这样的系统中,入侵者可以输入SQL代码,而不是数据,来获取额外的数据。有很多用敏感信息(如用户id、密码和信息)被人利用这种漏洞获取的实例。在Java中,你可以用Prepared语句来避免SQL注入。15.在SQL中,内连接(innerjoin)和左连接(leftjoin)有什么区别(anwer)在SQL中,主要有两种连接类型,内连接和外连接。外连接包括右外连接和左外连接。内连接和左连接的主要区别是,内连接中两个表都匹配的记录才被选中,左连接中两个表都匹配的记录被选中

8、,外加左表的所有记录都被选中。要留意包含所有的查询,它们往往要求左连接,例如写一个SQL查询来找所有的部门和它们的雇员人数。如果你用内连接处理这个查询,你会漏掉没有人工作的空部门。16.MVC中的V代表什么,意味着什么(anwe)在MVC模式中,V是视图(View)。视图是用户看到的东西,比如网页。这是一个非常重要的web应用开发设计模式,它基于关注点分离原则,目的是不同模块可以独立修改,不影响其他模块。在Java的世界中,有很多提供MVC模式的开源框架,例如Strut2和SpringMVC。顺便说一下,M代表模型(Model),C代表控制器(Controller)。模型是实际的业务对象,例如用户、雇员、订单,控制器用来将请求分发给正确的处理单元。17.类和对象的区别是什么(detailedanwer)类是用来创建对象的设计图。一个类包括代码和行为,一个对象包括状态和行为。要创建一个对象,你必须创建一个表达对象结构的类。类还被用来在内存中映射对象,在Java中,JVM替你完成这项工作。18.什么是疏耦合(looe-coupling)疏耦合是一种值得追求的软件特性,它使得对软件一个部分的修改不会影响到其他的部分。例如,在一个疏耦合的软件中,对UI布局的改变不应该影响后端的类结构。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁