摘要: 作者:July、wuliming、pkuoliver 出处:http://blog.csdn.net/v_JULY_v。说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。------------------------------------第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一. 阅读全文
posted @ 2012-02-29 20:38 ITfresh 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日说明:本文分为两部分,第一部分为10道海量数据处理的面试题,第二部分为10个海量数据处理的方法总结。出处:http://blog.csdn.net/v_JULY_v。------------------------------------------第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1 阅读全文
posted @ 2012-02-29 20:33 ITfresh 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 一生就只一次的经历,值得用文字记录下来,比如找工作,那就总结一下吧,但愿对后人有用。作为一个热爱计算机远胜过老本行通信的异类,我几乎只投了位于上海和杭州的互联网和软件公司,通信电子公司去面试的只有一家(nVidia)。目前拿到的offer有以下一些:1.百度(上海)云计算方向开发职位2.腾讯研究院(上海)应用研发中心开发职位3.微软(上海)测试开发(SDET)职位(这个囧,不知为啥就没让我面SDE)4.阿里巴巴云计算(杭州)数据中心开发职位5.创新工场(上海)开发职位(这个方向是后来选项目才会确定)6.英伟达nVidia(上海)GPU Arch部门开发职位找工作是个累活,各家笔试面试,东奔西走 阅读全文
posted @ 2012-02-27 16:13 ITfresh 阅读(542) 评论(0) 推荐(0) 编辑
摘要: STL入门教程:标准模板库(STL)介绍★★★★★ 本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过。STL实践指南★★★★★ 文章从STL基础知识讲起,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间、STL中的ANSI/ISO字符串、各种不同类型的容器、模板、游标、算法、分配器、容器的嵌套等方面的问题,作者在这篇文章中对读者提出了一些建议,并指出了使用STL时应该注意的问题。三十分钟掌握STL★★★★ 有个叫kary的网友翻译的《using stl》,可以快速浏览,从0开始了 阅读全文
posted @ 2012-02-27 12:12 ITfresh 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一.矢量基本知识 因为后面的计算需要一些矢量的基本知识,这里只是简单的列举如下,如果需要更加详细的信息,可以自行搜索wikipedia或google。1.矢量的概念:如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。2.矢量加减法:设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ),则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 ),同样的,矢量减法定义为: P - Q = ( x1 - x2 , y1 - y2 ) 阅读全文
posted @ 2012-02-25 20:44 ITfresh 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 大多数的编译器只能支持到64位的整数运算,即我们在运算中所使用的整数必须小于等于64位,即: 0xffffffffffffffff,也就是18446744073709551615,这远远达不现代大数的要求。于是需要专门建立大数运算库来解决这一问题。 最简单的办法是将大数当作数组进行处理,也就是将大数用0—9这十个数字组成的数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,因为二进制为1024位的大数其十进制也有三百多位,对于任何一种运算,都需要在两个有数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进退位标志及中间结果。另外,对于... 阅读全文
posted @ 2012-02-20 10:54 ITfresh 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 松弛技术:RELAX(u,v,w) if(d[v]>d[u]+w(u,v)){ d[v]=d[u]+w(u,v); p[v]=u;}松弛是改变最短路径和前趋的唯一方式。算法之间的区别在于对每条边进行松弛的次数,以及对边执行松弛操作的次序有所不同。Bellman–Ford is in its basic structure very similar toDijkstra's algorithm, but instead ofgreedilyselecting the minimum-weight node not yet processed to relax, it simply 阅读全文
posted @ 2012-02-17 14:18 ITfresh 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 基本模型:HMM(Hidden Markov Models): A Tutorial on Hidden Markov Models and Selected Applications inSpeech Recognition.pdfME(Maximum Entropy): ME_to_NLP.pdfMEMM(Maximum Entropy Markov Models): memm.pdfCRF(Conditional Random Fields): An Introduction to Conditional Random Fields for Relational Lear... 阅读全文
posted @ 2012-02-17 13:14 ITfresh 阅读(833) 评论(0) 推荐(1) 编辑
摘要: 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijkstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.8. 调用系统的qsort, 技巧很多,慢慢掌握.9. 任意进制间的转换第二 阅读全文
posted @ 2012-02-16 11:02 ITfresh 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 下面的是学C++时要注意的。绝对经典。!!1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;6.会用Visual C++,并不说明你会C++;7.学cl 阅读全文
posted @ 2012-02-15 15:08 ITfresh 阅读(187) 评论(0) 推荐(0) 编辑