随笔分类 -  面试题

数据库设计中,动态添加字段
摘要:去面试,拿出了笔试题,让一个个讲思路。因为之前笔试时就不会,能让去面试,已很诧异。看面试官的状态,以为只是HR面。结果,悲剧了,技术面。笔试之后,尽管知道笔的稀烂无比,但是没能回来进行总结和思考。这次面试挂,也是死有余辜。下面开始说,提到的一题。就是动态添加字段。比如,有用户信息,用户名,年龄。后来,需要添加用户单位。怎么来实现?方法一:直接alter,这是最容易想到的。但是,在数据库设计中 ,这个应该是一大忌。而且面试官要求不改变表结构。那好,想出来方法二。方法二:可以建一个表,表设计为用户ID和工作单位。这个方法,面试官说,可以。但是,还有其他方法。绞尽脑汁也没想出来,问猪头,猪头说了种方 阅读全文
posted @ 2012-12-04 22:20 Ming明、 阅读(9046) 评论(1) 推荐(0) 编辑
【转】有序数组求中位数问题
摘要:1、有两个已排好序的数组A和B,长度均为n,找出这两个数组合并后的中间元素,要求时间代价为O(logn)。2、假设两个有序数组长度不等,同样的求出中位数。一:解析: 这个题目看起来非常简单。第一题的话: 假设数组长度为n, 那么我就把数组1和数组2直接合并,然后再直接找到中间元素。对于这样的方案,第一题和第二题就没有什么区别了。这样的话时间复杂度就是O(n)。通常在这样的情况下,那些要求比较高的面试官就会循循善诱道:“你还有更好的办法吗?” 如果比线性更高效,直接能想到的就是对数了O(log(n)),这个时间复杂度在这里可能吗? 当然还是可能的。算法导论上面的分析是这样的:Say the tw 阅读全文
posted @ 2012-11-03 18:27 Ming明、 阅读(311) 评论(0) 推荐(0) 编辑
extern “C”
摘要:在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?这个问题包括两部分。一部分是extern的作用,一个是“C”的作用。下面将从这两个部分分别整理下相关知识。一、extern1、声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。我们在A。cpp文件中定义如下句子int i=0;在B.cpp文件中定义如下句子int i=0;然后分别编译两个文件,此时,编译成功。而当我们将两个文件进行链接时,却提示错误。错误提示是error C2086: 'int i' 阅读全文
posted @ 2012-10-30 11:33 Ming明、 阅读(461) 评论(0) 推荐(0) 编辑
【转】海量用户积分排名算法探讨
摘要:原文:海量用户积分排名算法探讨问题某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。存储结构首先,我们用一张用户积分表user_score来保存用户的积分信息。表结构:示例数据:下面的算法会基于这个基本的表结构来进行。算法1:简单SQL查询首先,我们很容易想到用一条简单的SQL语句查询出积分大于该用户积分的用户数量:select1+ count( 阅读全文
posted @ 2012-10-24 22:12 Ming明、 阅读(389) 评论(0) 推荐(0) 编辑
身份证合法性判定
摘要:问题描述:我国公民的身份证号码特点如下:1、 长度为18位;2、 第1~17位只能为数字;3、 第18位可以是数字或者小写英文字母x。4、 身份证号码的第7~14位表示持有人生日的年、月、日信息。请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除 或 能被400整除的年份,闰年的2月份为29天,非闰年的2月份为28天。校验码验证规则如下:1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 ... 阅读全文
posted @ 2012-10-18 13:13 Ming明、 阅读(1725) 评论(0) 推荐(0) 编辑
哥德巴赫猜想
摘要:一 哥德巴赫猜想哥德巴赫猜想可分为两种猜想,一种也称为“二重哥德巴赫猜想”,另一种就是“三重哥德巴赫猜想”。具体为:1.每个不小于6的偶数都可以表示为两个奇素数之和; 2.每个不小于9的奇数都可以表示为三个奇素数之和;ps:1 不是素数。笔试有题,让输出6~10 0000 之间的偶数都可以用两个奇素数之和表示出来,即 a = b + c,程序输出b,和c,若满足条件的有多个组合,输出一组即可。【注意时间效率】看到这题,首先想到的就是求素数,而且需要注意时间效率。空间置换时间,那就求出小于10 0000的素数保存至数组,然后同时从头和尾扫描这个数组,b指向数组头,c指向数组尾,若b+c=... 阅读全文
posted @ 2012-10-16 16:27 Ming明、 阅读(1218) 评论(0) 推荐(0) 编辑
【转载】面试_现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
摘要:转自:http://blog.csdn.net/kittyjie/article/details/4732415问题:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。分析:这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。先从最简装的一块石头考虑,很显然,X(1,1) = 1X(1,2) = 2X(1,3) = 3.X(1,i) = i再考虑二块石头,显而易见X(2,1) = 1对于X(2,2),我们可这样考虑,当我们扔第一次后,有两种可能:破和不破.如果石 阅读全文
posted @ 2011-11-28 20:22 Ming明、 阅读(1326) 评论(0) 推荐(0) 编辑