代码改变世界

字符串操作之循环移位

2012-08-17 16:31 by coodoing, 874 阅读, 0 推荐, 收藏, 编辑
摘要:该篇文章最主要是回顾c语言中字符数组,字符串和指针的处理以及数组越界问题的考虑。 问题描述 编写一个函数,把一个char'组成的字符串循环右移n位。比如原来是"abcdefghi",如果n=2,移位后应该是"hiabcdefgh"。 问题分析 这个问题很简单,主要是看对c中标准库函数的掌握程度,这里主要可以采用两个库函数实现:strcpy和memcpy。这里主要对 memcpy() --... 阅读全文

经典面试智力题和解答

2012-08-16 17:21 by coodoing, 7217 阅读, 0 推荐, 收藏, 编辑
摘要:一、微软58题A.逻辑推理 1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费? 2、请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。 3、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每 次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会 熄灭。问:小明一家如何过桥? 4、一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少 有一顶。每... 阅读全文

【转】基于.NET的大型Web站点StackOverflow架构分析

2012-08-15 23:09 by coodoing, 389 阅读, 0 推荐, 收藏, 编辑
摘要:原文链接:Stack Overflow Architecture Update - Now At 95 Million Page Views A MonthStack Overflow网址:http://stackoverflow.com/当前访问量:每月9500PV(每天300多万PV)当前Alexa排名:149所用.NET技术:C#、Visual Studio 2010 Team Suite、ASP.NET 4、ASP.NET MVC 3、Razor、LINQ to SQL+raw SQL下面是英文原文:A lot has happened since my first article o 阅读全文

链表,栈,队列插入删除操作

2012-08-15 17:46 by coodoing, 4900 阅读, 0 推荐, 收藏, 编辑
摘要:本文主要对常见的几种数据结构的插入删除操作进行整理和说明,具体的可视化程序可参考这里。1、链表 1.1 单向链表插入结点:在指针p所指的结点后插入指针s所指的结点。(1)s->next = p->next;(2)p->next = s删除节点:删除指针p所指的结点的后继节点。p->next = p->next->next具体问题可以参考《编程之美》中的从无头单链表中删除节点问题。 1.2 双链式链表插入结点:指针p所指的结点前插入指针s所指的结点。(1) s->prior = p->prior;(2) p-> prior ->next 阅读全文

栈的push、pop序列-实现

2012-08-14 21:21 by coodoing, 3331 阅读, 0 推荐, 收藏, 编辑
摘要:1、问题描述 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,这样得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。2、分析 这道题的一个很直观的想法就是建立一个辅助栈,每次pus 阅读全文

多个集合合并成没有交集的集合-实现

2012-08-14 17:50 by coodoing, 5145 阅读, 2 推荐, 收藏, 编辑
摘要:1、问题描述 将多个集合合并成没有交集的集合。 给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ccc ddd hhh},{eee fff}, {ggg}。 (1)请描述你解决这个问题的思路; (2)... 阅读全文

单链表是否有环和两个链表是否有公共节点问题

2012-08-14 16:40 by coodoing, 790 阅读, 0 推荐, 收藏, 编辑
摘要:1、单链表是否有环题目描述:有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题: 1、如何判断一个链表是不是这类链表? 2、如果链表为存在环,如何找到环的入口点?一、判断链表是否存在环 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)。 1: boolean isExsitLoop() { 2: Node<T> slow ... 阅读全文

一致性hash算法-consistent hashing

2012-08-14 11:15 by coodoing, 536 阅读, 0 推荐, 收藏, 编辑
摘要:0、应用场景 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法。 典型的应用场景是: 有N台服务器提供缓存服务,需要对服务器进行负载均衡,将请求平均分发到每台服务器上,每台机器负责1/N的服务。 常用的算法是对hash结果取余数 (hash() modN):对机器编号从0到N-1,按照自定义的hash()算法,对每个请求的hash()值按N取模,得到余数i,然后将请求.. 阅读全文

Mathematica's Google Aptitude

2012-08-14 00:16 by coodoing, 367 阅读, 0 推荐, 收藏, 编辑
摘要:The Billboard So perhaps it's no great surprise that Google utilizes unusually mathematically oriented recruitment techniques. In fact, these practices have received widespread coverage in the last f... 阅读全文

高并发系统数据库设计

2012-08-13 19:04 by coodoing, 2171 阅读, 1 推荐, 收藏, 编辑
摘要:在WEB网站的规模从小到大不断扩展的过程中,数据库的访问压力也不断的增加,数据库的架构也需要动态扩展,在数据库的扩展过程基本上包含如下几步,每一个扩展都可以比上一步骤的部署方式的性能得到数量级的提升。 1、WEB应用和数据库部署在同一台服务器上 一般的小规模的网站采用这种方式,用户量、数据量、并发访问量都比较小,否则单台服务器无法承受,并且在遇到性能瓶颈的时候... 阅读全文

【转】国内图片网站Yupoo的架构

2012-08-13 18:53 by coodoing, 352 阅读, 0 推荐, 收藏, 编辑
摘要:之前向大家介绍过全球最大在线图片服务网站Flickr网站架构,Yupoo(又拍网)作为国内最大的图片服务提供商,我们也一起来看看它的架构,同样是提供图片服务,看看他与Flickr的差别在哪里,大家看完本文可以思考一下。 一、先来看看Yupoo网站的基本信息: 带宽:4000M/S (参考) 服务器数量:60 台左右 Web服务器:Lighttpd, Apache, nginx ... 阅读全文

【转】Twitter网站架构介绍

2012-08-13 18:40 by coodoing, 414 阅读, 0 推荐, 收藏, 编辑
摘要:作为140个字的缔造者,twitter太简单了,又太复杂了,简单是因为仅仅用140个字居然使有几次世界性事件的传播速度超过任何媒体,复杂是因为要为2亿用户提供这看似简单的140个字的服务,这真的是因为简单,所以复杂。可是比较遗憾的是目前在中国大陆twitter是无法访问的,但作为一个爱好架构的程序猿,这道墙是必须得翻的,墙外的世界更精彩。今天就结合网络上的一些资料,来浅谈一下我对twitter网站架构的学习体会,希望给路过的朋友一点启示.......一、twitter网站基本情况概览截至2011年4月,twitter的注册用户约为1.75亿,并以每天300000的新用户注册数增长,但是其真正的 阅读全文

【转】数学之美番外篇:平凡而又神奇的贝叶斯方法

2012-08-13 18:32 by coodoing, 447 阅读, 0 推荐, 收藏, 编辑
摘要:概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。 ——题记 目录 0. 前言 1. 历史 1.... 阅读全文

【转】十月百度,阿里巴巴,迅雷搜狗最新面试七十题(第201-270题)

2012-08-13 15:36 by coodoing, 1291 阅读, 0 推荐, 收藏, 编辑
摘要:十月百度:一个数组保存了N个结构,每个结构保存了一个坐标,结构间的坐标都不相同,请问如何找到指定坐标的结构(除了遍历整个数组,是否有更好的办法)?(要么预先排序,二分查找。要么哈希。hash的话,坐标(x,y)你可以当做一个2位数,写一个哈希函数,把(x,y)直接转成“(x,y)”作为key,默认用string比较。或如Edward Lee所说,将坐标(x, y)作为 Hash 中的 key。例如(m, n),通过 (m,n) 和 (n, m) 两次查找看是否在 HashMap 中。也可以在保存时就规定 (x, y) , x < y ,在插入之前做个判断。)百度最新面试题:现在有1千万个 阅读全文

【转】微软、谷歌、百度等公司经典面试题[第101-160题]

2012-08-13 15:09 by coodoing, 580 阅读, 0 推荐, 收藏, 编辑
摘要:微软十五道面试题1、有一个整数数组,请求出两两之差绝对值最小的值, 记住,只要得出最小值即可,不需要求出是哪两个数。2、写一个函数,检查字符是否是整数,如果是,返回其整数值。 (或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)3、给出一个函数来输出一个字符串的所有排列。4、(a)请编写实现malloc()内存分配函数功能一样的代码。 (b)给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。5、怎样编写一个程序,把一个有序整数数组放到二叉树中?6、怎样从顶部开始逐层打印二叉树结点数据?请编程。 7、怎样把一个链表掉个顺序(也就是反序,注... 阅读全文

【转】微软等数据结构+算法面试100题全部答案集锦

2012-08-13 14:53 by coodoing, 1312 阅读, 1 推荐, 收藏, 编辑
摘要:1.把二元查找树转变成排序的双向链表。 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_pLeft; // left child ... 阅读全文

google几道面试题

2012-08-13 13:03 by coodoing, 354 阅读, 0 推荐, 收藏, 编辑
摘要:1、找规律 1 1 1 2 1 1 2 1 1 1 1 1 2 2 1下一行是什么?2、 数列中下一个应该是: 10, 9, 60, 90, 70, 66, ?A) 96 B) 1000000000000000000000000000000000 0000000000000000000000000000000000 000000000000000000000000000000000 C) Either of the above D) None of the above3、有一个特殊的链表,其中每个节点不但有指向下一个节点的指... 阅读全文

【转】高效利用GitHub

2012-08-13 10:19 by coodoing, 299 阅读, 0 推荐, 收藏, 编辑
摘要:转帖:http://www.yangzhiping.com/tech/github.html正是Github,让社会化编程成为现实。本文尝试谈谈GitHub的文化、技巧与影响。Q1:GitHub是什么Q2:GitHub风格Q3: 在GitHub,如何跟牛人学习Q4: 享受纯粹的写作与演讲Q5: 代码帮你找工作Q6: GitHub还在影响一些什么Q7: 除了GitHub,还可以选择什么?Q1:GitHub是什么A1:一家公司位于旧金山,由Chris Wanstrath,PJ Hyett与Tom Preston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git 阅读全文

百度面试题集锦

2012-08-12 22:08 by coodoing, 396 阅读, 0 推荐, 收藏, 编辑
摘要:1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。 例子: func(7) = 4,可以证明最少需要4次运算 n = 7 n-1 6 n/2 3 n-1 2 n/2 1 要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(文字描述),完成代码,并分析你算法的时间复杂度。 答: · int func(unsigned int n) · { ·... 阅读全文

最长递减子序列

2012-08-12 19:30 by coodoing, 2633 阅读, 0 推荐, 收藏, 编辑
摘要:问题描述求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}。问题分析本问题类似编程之美中的求数组中最长递增子序列问题。可以利用动态规划方法解决。假设在目标数组array[]的前i个元素中,最长递减子序列的长度为LDS[i]。那么 LDS[i+1] = max{1,LDS[k]+1},其中array[i+1]<array[k],for any k<=i。即如果array[i+1]<array[k],那么第i+1个元素可以添加到LDS[k]长的子序列后构成一个更长的递减子序列。与此同时,array[i+1]可以由自身构造成一个 阅读全文