随笔分类 -  面试准备

C#薪水和前途
摘要:这1,2年有更新简历,一直在看市场行情,最近这么多年在聊C#的薪水,我也说说我看到的情况,只限上海;仅供大家参考;高端职位: 纯技术,不谈管理, 一般是架构师职位,偶尔可能需要带团队,猎头有报了几个职位给我, 一般都是在40-60万外企高一点,如果报酬中有大量的股票,一般总收入还会再高点,不过我个人... 阅读全文

posted @ 2014-05-04 17:19 听说读写 阅读(24532) 评论(31) 推荐(5) 编辑

面试准备 - HashTable 的C#实现 开放地址法
摘要:Hashtable是很经常在面试中遇到的数据结构,因为他的O(1)操作时间和O(n)空间之所以自己写一份是因为:加深对于hashtable的理解某些公司面试的时候需要coding.......开放地址法 Xn=(Xn-1 +b ) % size理论上b要和size是要精心选择的,不过我这边没有做特别的处理,101的默认size是从c#源代码中抄袭的。。。。代码尽量简单一点是为了理解方便hashtable快满的时候扩展一倍空间,数据和标志位还有key 这三个数组都要扩展删除的时候不能直接删除元素,只能打一个标志(因为用了开放地方方法)目前只支持string和int类型的key(按位131进制)非 阅读全文

posted @ 2014-01-31 08:51 听说读写 阅读(2247) 评论(2) 推荐(1) 编辑

.net 开发人员面试题 - 多线程
摘要:最近园子里好多人谈到了招聘面试,特别是多线程这个问题出现了很多次;多线程也是我在面试中很喜欢问的一个题目,和大家分享一下(仅限.net)为什么喜欢在面试中问这个问题 因为这是一个很好的了解面试者知识深度的问题,在现代CPU都是多核的背景下,多线程作为一种能充分发挥CPU资源的技术使用的越来越广泛. 而且这个问题可以把普通的应用开发人员(增删改查)和有一定技术深度/专研精神的人区分出来 (此外:没吃过猪肉好歹要见过猪跑吧,没见过猪跑...这个就有点诡异了)背景: 面试.net中高级软件工程师/架构师 (事先可能不知道对方的目标等级,要在这次面试过程中确定, 多线程不是初级/中级开发人员... 阅读全文

posted @ 2012-05-19 16:01 听说读写 阅读(13934) 评论(39) 推荐(9) 编辑

面试-算法 已经排好序的数组中求两个数的和等于N
摘要:已知一个拍好序的数组,长度为M在其中找两个数,其和为N刚刚拿到这个题目的时候,首先的常规想法是遍历循环求出所有数的和,最终其值为N的就是结果,这个算法时间复杂度为o(N*N)可能还有一些扩展的想法,那就是先把数组中比N大的元素去掉,这样少检查几个元素这是典型的程序员思维,太早开始考虑实现细节了作为一个算法题目首先要把算法复杂度降低下来,然后再考虑常数C。。。不要太早开始考虑这种相对不重要的问题由于要寻找的是一个数对,假设这里存在解的话,考虑用N减去数组中的每一个值生成一个新数组M2,假设M2的值在M中出现,那么就可以找到解,(用两个指针 一个从M的左边 一个从M2的右边)算法复杂度可以做到o( 阅读全文

posted @ 2011-12-23 22:34 听说读写 阅读(2926) 评论(6) 推荐(0) 编辑

常见算法面试题的常见解法-1 Counting Sort
摘要:算法面试题中经常出现的一种题目就是 查找 或者是排序. 个人感觉有80%的题目都和查找排序有关大部分常用的排序算法时间复杂度都是O(nLogn)这个只能说是通用解,一般解对于算法面试题中往往要求很低的时间复杂度,例如下面这个题目已知一个数组长为m 中间存放的都是整数 其值范围为1-m ,中间的元素有可能重复 也有可能不重复如何在O(M)的情况下查到 (1-m)的数中 哪些数重复了,哪些数没有出现counting sort 的本质是 新建一个长度为M的数组An 每一个数组下标代表一个数,数组中的值代表这个元素出现的次数 (初始值都为0)那么, 遍历一次m 遇到一个数 就在对应的下标上加1那么最终 阅读全文

posted @ 2011-04-13 16:28 听说读写 阅读(2328) 评论(1) 推荐(0) 编辑

几个简单的基础面试题 C#
摘要:1. c# 接口有多继承么2. 接口可以继承接口么3. 抽象类可以继承接口么4. 抽象类可以有实现么5. 抽象类和普通类什么差别 阅读全文

posted @ 2011-04-08 17:56 听说读写 阅读(519) 评论(0) 推荐(0) 编辑

微软面试题 单向链表找环
摘要:已知一个单向链表 如何检查这个单向链表中有没有环的存在例如 a->b->c->d->e->b就是一个环我自己能想到的最佳算法就是O(n)的....话说这个题目真是太常见了.... 阅读全文

posted @ 2011-04-08 17:43 听说读写 阅读(489) 评论(0) 推荐(0) 编辑

微软面试题, 美国 Asp.net Team 第一面 , 正则
摘要:这个面试题是 朋友面试美国微软asp.net team的时候第一面的问题,一般来说第一面都会比较简单.....1. 对方通过邮件和livemeeting 把题目发给你2. 这个题目要求提供最终代码(C#)3. 限制时间30分钟, 包括阅读文档和提交代码的时间..(其实是一个小时2个题目啦..不过另外一个和这个差不多困难,另外这个文档真是相当的长...说的很清楚)4. 该最终代码必须可以编译,运行,并实现以下的业务功能业务功能: 设计一个正则表达式解析器支持: 常量查找 例如表达式是abc 就匹配abc , a就匹配a ,长度无限制 \d 匹配一个数字 \d+ 转义 \\ \\d 之类的 传入的 阅读全文

posted @ 2011-03-23 10:31 听说读写 阅读(988) 评论(1) 推荐(0) 编辑

微软面试题 麻将胡牌算法
摘要:1. 这个题目要求提供最终代码(C#)2. 该最终代码必须可以编译,运行,并实现以下的业务功能3. 限制时间一个小时, 包括阅读文档和提交代码的时间业务功能: 给定若干张的麻将牌 (假设只有 万 一种类型,没有条和筒)最终胡牌必须满足以下条件 所有的牌必须连成顺子或者3张 即:123 或者111 最后还要有一对, 例如 11方法签名如下:bool Test( int [] cards){ //这里是你的代码}传入参数例如 { 1, 1 , 2 , 3} 代表传入2张一万,一张2万,一张3万返回参数是true 就代表胡牌, false 代表不能胡牌例如 1 1 2 2 2 是可以胡的1 1 2 阅读全文

posted @ 2011-03-22 13:51 听说读写 阅读(6389) 评论(0) 推荐(0) 编辑

面试题:从10G个数中找到中数
摘要:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。(中间大小的数)内存限制为 2G。解法:假设都是4字节的数 (更长的也一样)那么一共是32个位按照前N位进行分组统计,例如000000 2个 000001 100个类推那么可以找出中间的几组数, 进一步分组就可以找到中间数由于内存是2g 那么第一次分组前28位是最理想最快的情况算法复杂度是O1 阅读全文

posted @ 2011-03-01 23:36 听说读写 阅读(1102) 评论(0) 推荐(0) 编辑

面试题:根据上排的数填写下排的数
摘要:根据上排的数填写下排的数,并满足要求。根据上排给出十个数,在其下排填出对应的十个数, 要求下排每个数都是上排对应位置的数在下排出现的次数。上排的数:0,1,2,3,4,5,6,7,8,9。答案:上排的数:0,1,2,3,4,5,6,7,8,9下排的数: 6 2 10 0 0 1 0 0 0 阅读全文

posted @ 2011-03-01 23:35 听说读写 阅读(765) 评论(1) 推荐(0) 编辑

面试题 拿钻石
摘要:已知一个有10层楼, 每层都有一个钻石1.你在一个电梯里面,电梯向上,每层只停一次 然后就到上一层2.一共只能拿一次钻石, (不允许交换!), 当然每层你都可以观察钻石问如何让 "拿到最大钻石" 的概率最大化假设 最大的钻石叫D10 最小的叫D11. 假设只观察第一层 后面的楼层中 只要有比第一层大的就拿走 2. 假设只观察前两层 记录下最大的钻石,后面的楼层中 只要有比前两层最大的钻石还要大的钻石就拿走 ,那么最高的概率是多少呢? 阅读全文

posted @ 2011-02-16 22:07 听说读写 阅读(1261) 评论(2) 推荐(1) 编辑

面试题:红绿灯
摘要:已知一个十字路口,1.每次切换红绿灯的时间间隔总是M2.相对的红绿灯总是同样的状态3.相邻的红绿灯总是不同的状态( 即状态要么是 0101 要么是1010 不可能出现其他状态,如1100)4.一个人通过一个人行横道的时间是N (N<M)5.请问一个人任意时间到达路口,到达对角所需的平均时间6.按照国外的情况 只要你上人行道的时候还是绿灯, 那么你就可以一直走过去 (即使下一秒变成了红灯)大意就是碰运气啦 一个人要走到对角 平均需要多久 阅读全文

posted @ 2011-02-14 11:06 听说读写 阅读(915) 评论(2) 推荐(0) 编辑

面试题 M大小的数组中选出前N个元素
摘要:已知一个大小为M的数组 里面放着M个整数现在要找出前n个最大的元素问: 最优的算法,时间复杂度和空间复杂度解法有很多,最好的不好找, 这里随便先举几个一般的: 1.先给M的数组做一次排序 那么前n个元素就是结果, 假设用快速排序 那么时间复杂度就是 M*logM 2.已知使用冒泡法找出最大的一个元素, 需要M次, 那么找出N个,就需要M*N ,如果N很小这个算法就很优化补充以下是个人觉得最好的算法(快速排序的一部分)随机在m中挑选一个值, 然后比m小的放在m左边, 比m大的放在m右边假设右边有c个元素, 如果c小于5个, 在左边的元素中继续寻找 最大的n-c个元素,否则丢弃所有左侧元素,... 阅读全文

posted @ 2011-01-01 12:58 听说读写 阅读(1909) 评论(1) 推荐(0) 编辑

微软面试题 状态机
摘要:已知 圆盘上有4个开关 分布在正方形的4个角上1.每个开关都只有两个状态 开或者关 ; 触摸一下开关 它的状态就会互相转换(开-关 关-开)2.你看不到现在开关的状态是什么,你也不能通过触摸判断现在的开关是开还是关3.每一次操作你可以选择改变一个开关的状态,或者改变两个开关的状态4.操作完成后 ,圆盘会随机转动, (也就是说你下一次操作的时候这些开关的位置都已经移动了)5.由于正方形的相邻点和对角点距离不一样 ,那么在你改变两个开关的时候,你可以通过这个判断你改变的是对角点还是相邻点6.当开关完全打开或者完全关闭的时候, 外面有个灯就会亮起来, 那么恭喜你 你搞定了问:有没有一种严格的流程 阅读全文

posted @ 2010-12-31 09:45 听说读写 阅读(1739) 评论(2) 推荐(1) 编辑

面试:等车时间
摘要:已知我家门口的公交站有两班公交车.其中一辆每隔M分钟经过我家门口.另外一辆每隔N分钟经过我家门口.我随便等到一辆车都可以坐车去上班....那么平均情况下 我要等多久 才能等到一辆车??应用场景是在做地图寻路算法的时候....要计算等车时间, (用于估计你要多久才能到达目的地).一个很简单的提示:如果只有一辆车M,平均时间是M/2,如果多了一辆车n...用的时间必然小于M/2.PS: 有很多朋友会认为答案是(M+N)/2 这明显是不对的 因为我只要随便等到一辆车就能上班了.PS: M*N/(M+N)也是错的.PS:我也不知道什么时候出门等车啦 ,也不知道m和n什么时候发车,反正就是随机的.附上一 阅读全文

posted @ 2010-12-22 22:52 听说读写 阅读(920) 评论(3) 推荐(0) 编辑

有趣的面试题 1-1 单向链表
摘要:已知内存中存在一个单向链表,表示方法为 1 2 3 .... n现在只给你一个 节点m , 只知道节点m一定在这个单向链表上要求是删除节点m不知道单向链表的起点在哪里常规思路,是找到m的前一个节点 m-1,然后将 m-1 指向m的下一个数据 m+1 ,但是这里的问题是, 这是一个单向链表,根据m根本无法查到 m-1所以要换一种思路思考所谓的删除操作可以换一种方式来做,知道m 那么就知道m+1 m+2....n那么将m+1的值拷贝到 m ,将m的下一个元素指向m+2那么在内容上就删除了m这个节点当然这个删除是不完美的他最大的难度是要开阔你的思路,不要老是局限于已经有的知识,先尝试解决问题,再解决 阅读全文

posted @ 2010-11-15 14:06 听说读写 阅读(582) 评论(3) 推荐(1) 编辑

导航