我是昨天下午4点在华工参加了美团网的笔试。技术类的笔试题都是一样的。我报的是研发工程师。笔试题总共8道大题,后面还有针对不同方向的附加题。都是需要些代码的编程题,考察数据结构的知识。要求在一个半小时之内做完。时间根本不够用,我一个小时才做完整了2道题。剩下的时间我就写了其他题的解决思路。我以为自己没戏了,结果当天晚上12:30接到了hr通知面试的电话。。。这么晚了还打电话。我第二天早上8:30到华工面试的。下面说下我的面试经历。
面试官是个不到30的年轻人。寒暄之后他拿出了我做过的试题。问我答得的怎么样,我说时间不够,答的不好,之后他让我写我没有做完的题,给我一道判断一棵树是否是水平镜像对称的题,经过几番努力我终于做出来了核心的代码。后面他就问我一些基础知识。
1、你了解tcp、ip吗,和对http的理解之类的。
而DNS是有状态协议 。
2、你项目中用过mysql,说明他的存储引擎是怎么样的……我完全没看过这方面的。
存储引擎是什么?
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
3、你用过jquery,那你说说jquery中的$如何和其他第三方的库中的$相区别。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD> <TITLE> New Document </TITLE> <script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript"></script> <SCRIPT LANGUAGE="JavaScript"> <!-- //第三方库 function $(str) { return document.getElementById(str) ; } function jQuery(str) { return document.getElementById(str) ; } //--> </SCRIPT> </HEAD> <BODY> <input type = "text" id = "txt1" value = "aa" /> </BODY> </HTML>
在如上示例中 第三方库同时使用了"$"与"jQuery",此时jQuery入口被第三方库覆盖了。jQuery提供了noConflict函数解决冲突,例2:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD> <TITLE> New Document </TITLE> <script src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js" language = "javascript"></script> <script> //兼容代码 var $1 = $.noConflict(); $1(document).ready(function(){ alert($1("#txt1").val()) alert($("txt1").value) ; }) </script> <SCRIPT LANGUAGE="JavaScript"> <!-- //第三方库 function $(str) { return document.getElementById(str) ; } function jQuery(str) { return document.getElementById(str) ; } //--> </SCRIPT> </HEAD> <BODY> <input type = "text" id = "txt1" value = "aa" /> </BODY> </HTML>
noConflict重新将jQuery入口指针指向$1,此时可以用$1访问jQuery库,其中兼容代码要写在第三方库载入之前(如果写在之后,jQuery的$和jQuery入口被第三方库覆盖了,无法调用兼容代码)。