工作面试
战辉
一直从事自然语言处理(NLP),对于自然语言生成、机器翻译、语言模型等研究较多
展开
-
互联网工作面试资源整理
写下此篇日志用于记录自己找工作的经历和感受,并同时总结相关笔试和面试资源。下面是自己参加过笔试和面试的公司列表:1) google,通过内部推荐直接进入面试环节,参加完三面之后进入等待期,估计没戏了。2) WAP(Work Applications),通过最初的笔试环节,然后参加了两轮面试,拿到实习生offer,实习期间只参加了3天,后期未去。3) 阿里巴巴,2013年4月份参加两原创 2013-12-01 15:54:12 · 2329 阅读 · 4 评论 -
LeetCode — Single Number 解题报告
题目如下:题目解析: 给定一个含有n个整数的数组,该数组中每个元素出现过两次,唯独有一个出现过一次。求这个数是什么? 题目的要求是:线性时间的复杂度,并且尽量别使用额外的内存空间。 这道题目最先想到的方法就是排序,然后从头到尾进行检测。 其次,想到的方法是利用额外的内存空间进行存储,扫描一次数组就OK。 上面两种方法原创 2014-03-27 15:23:58 · 1173 阅读 · 0 评论 -
LeetCode — Word Break 解题报告
题目解析: 判断给定的字符串能否用词典进行切分,切分的每一部分都是词典中的单词。这道题目最容易想到的策略就是O(n^2)的方法,两层for循环即可解决。外层循环i是单词的第一个位置到最后一个位置,内存循环j是从i-1到0,判断是否可以切分。原创 2013-12-25 22:07:36 · 1544 阅读 · 0 评论 -
LeetCode — Copy List with Random Pointer 解题报告
题目解析: 这道题目是“复杂链表的复制”。很经典的一道题目,可以从网上进行搜索,比如可以参考这篇文章:复杂链表复制。我们按照传统的做法进行解题。总共分为三步: 1、申请结点并且连接成一个链表 2、random pointer的赋值 3、拆分链表成两个链表原创 2013-12-26 10:06:16 · 1597 阅读 · 0 评论 -
LeetCode — Word Break II 解题报告
题目解析: 给定一个字符串以及一个词典,返回字符串合法的所有切分,所谓的合法就是单词都要在词典中出现。 这道题目很久之前是用递归进行解决的,一直是time exceed limited。最近又重新做了这道题目,感觉递归耗费的时间太多,于是就改成了循环的形式。以题目中的示例为准,建立如下二维数组:原创 2013-12-25 21:40:24 · 1656 阅读 · 0 评论 -
LeetCode — Linked List Cycle II 解题报告
题目解析: 这道题目是“判断单链表是否有环,如果有环,求入环点,如果没有返回NULL”。 首先我们需要判断是否有环,可以用经典的做法,设定两个指针,一个快指针,一个慢指针,快指针每次走两步,慢指针每次走一步,如果两个指针重合,则说明环存在。当环存在的时候,链表有一个性质,就是头结点到入环点和快慢指针碰撞点到入环点的距离相等。利用这个性质,我们就能很方便的求出入环点。只要从碰撞点和头结点一起走,知道两个相遇就是入环点。原创 2013-12-24 21:03:57 · 1642 阅读 · 4 评论 -
LeetCode — Linked List Cycle 解题报告
题目解析: 这道题目是“判断一个单链表是否有环?”,最经典的做法就是设定两个指针,一个快指针,一个慢指针,快指针每次走两步,慢指针每次走一步,如果存在环的时候,快慢指针会重合。如果没有环,则会走到链表的末尾。原创 2013-12-24 20:51:25 · 1585 阅读 · 0 评论 -
LeetCode—Reorder List 解题报告
题目解析: 这道题目的意思“给定一个单链表,原地修改链表的顺序,修改的规则为0->n->2->n-1。。。。”。 最简单并且直观的做法就是: 1、将链表从中间断开 2、后面链表反转 3、两个链表进行合并原创 2013-12-23 20:10:04 · 2177 阅读 · 0 评论 -
LeetCode—Binary Tree Preorder Traversal 解题报告
题目解析: 这道题目是“二叉树的前序遍历”。通常有两种做法,递归求解以及循环求解。 递归求解,较为简单,先访问当前节点、访问左孩子结点、在访问右孩子节点。详细可参照如下代码。 循环求解,较为麻烦。但是相对于递归求解而言,这种方法耗费的函数栈空间更小,并且省去了大量的函数调用时间的开销,速度更加快,只不过程序不如递归求解的美丽客观。循环求解,需要使用一个栈保存已经访问过的数据,以便于对节点的右孩子结点进行访问。当面对一个节点的时候,我们有两种选择: 第一:该节点不为空,访问该节原创 2013-12-23 10:12:49 · 1405 阅读 · 1 评论 -
LeetCode—Binary Tree Postorder Traversal 解题报告
此题是“二叉树的后序遍历”,一般最经典的模式就是递归方式,也是非常容易实现的一种。但是函数递归会耗费大量的栈空间,有可能会产生栈溢出错误。我的经验是,能用“循环”解决的事情,尽量不要用递归。对于这道题目,我会采用两种方法进行写代码。 第一种就是:递归模式。先访问左子树,在访问右子树,然后访问根节点,程序的思路和这个是一样的,很方便实现。 第二种就是:循环模式。这种方法比较难实现。由于必须先访问左子树,在访问右子树,才能访问根节点,因此,我们必须使用了一个堆栈进行保存数据。当访问到一个结点的时原创 2013-12-21 20:38:09 · 1548 阅读 · 0 评论 -
LeetCode—LRU Cache解题报告
题目中有两个操作,get和set操作。 get操作获取key对应的值,如果存在,则返回该值,如果不存在,则返回-1。 set操作包含两层含义: 1、如果key值存在,则更新对应的value值,并把该元素放在最前面。 2、如果key值不存在,则申请新的结点给它,并且把该元素放在最前面。如果达到缓存容量的时候,最老的那个元素释放掉。 从上面的分析可以看出,元素根据访问时间的先后是有一定顺序性的,我们应该采取什么数据结构保存它呢?其次,每一个元素是原创 2013-12-20 16:23:23 · 2634 阅读 · 1 评论 -
LeetCode—Insertion Sort List 解题报告
题目解析: 题目的意思是“用插入排序的思想对单链表进行排序”。具体的算法已经告诉我们,“插入排序”,算法的时间复杂度为O(n^2),我们可以通过两层循环即可解决问题。外层循环每次都从head结点开始和后面的元素进行比较,内层循环每次都会从head走到链表的末尾,将最大的元素保存在链表的尾部。原创 2013-12-20 10:08:43 · 1341 阅读 · 0 评论 -
LeetCode—Sort List解题报告
题目解析: 题目要求是对单链表进行从小到大排序,要求的时间复杂度为O(nlogn)。 从时间复杂度上分析此题,可以排除插入排序等O(n^2)的算法。 剩余两种排序算法,快速排序和合并排序。这两种算法究竟使用哪一个呢?此时我们要结合题目的数据结构——单链表进行分析,看哪一个更加方便快捷。快速排序的思想是选定一个pivot点,在该点之前的都小于此点,在该点之后的都大于此点,然后前半部分和后半部分分别递归排序,繁杂的操作就是调整指针。对于合并排序而言,从中间将链表拆分成两原创 2013-12-19 15:21:03 · 1327 阅读 · 0 评论 -
LeetCode—Evaluate Reverse Polish Notation解题报告
题目解析: 简单明了的一句话就是:求解算术表达式的值。最经典的做法就是使用栈来解决此种问题。对于此道题目,我们使用一个“操作数栈”保存操作数,当遇到“操作符”的时候,就从栈中pop出两个元素,进行计算,然后将结果push至“操作数栈”中,然后继续进行扫描即可。最终“操作数栈”的栈顶就是我们所需要的结果。原创 2013-12-16 13:41:37 · 1589 阅读 · 0 评论 -
面试数据结构篇—单链表常考点汇总
单链表是最基本的数据结构,由于其简单的构造以及相关操作代码的简短,特别受面试官的青睐,面试官可以通过在短短的15分钟内让你写出单链表的操作,而对你的代码能力进行判断。所以掌握单链表是重中之重,对常考的知识点必须熟记于心,能够快速的写出来,并且bug-free。单链表的定义常见的定义方式如下: // Definition for singly-linked list. stru原创 2013-12-05 17:44:28 · 1859 阅读 · 0 评论 -
面试字符串篇—字符串常考知识点汇总
下面我将总结常见字符串常考知识点:1、atoi实现(字符串转换为整数)2、itoa实现(整数转换为字符串)3、strcmp实现(比较两个字符串大小)4、strcpy实现(拷贝字符串到指定位置)5、strlen实现(字符串长度)6、strstr实现(寻找子串出现的位置)7、memcpy实现(内存级的复制内容)8、memmove实现(内存级的复制)9、reverse实现(反转一个字符串)10、reverse_sentence(反转一句话中的每一个单词)原创 2013-12-09 20:32:17 · 2966 阅读 · 0 评论 -
LeetCode — Single Number II 解题报告
题目如下:题目解析: 题目的意思:给定含n个整数的数组,其中除了1个数之外,其余的数出现3次。求这个出现1次的数字是什么? 在Single Number这道题目的时候,我们巧妙的使用了数学运算中的异或操作,扫描一次数组就解决了问题。 对于这道题目,我们最先想到的方法就是排序,然后从头到尾进行扫描一次就OK,算法耗费的时间为nlgn+n,不需要额外的空间。原创 2014-03-27 16:30:56 · 1477 阅读 · 0 评论