`
文章列表
宏定义发生在预编译阶段,简单的说本质就是文本替换。使用时,有以下注意事项: 1,用宏定义表达式时,要使用完备的括号 如一下三个例子: #define ADD(a,b) a+b #define ADD(a, b) (a + b) #define ADD(a, b) (a) +(b) 这三种定义,全部都是不符合要求的。陷阱如下: 在计算ADD(a,b)*ADD(c,d)时,显然第一种出问题了。 #define MULTIPLE(a, b) (a*b) 在计算(a+b)*c时,调用MULTIPLE(a+b,c)得到的结果错误。 因此一定要使用完备的括号,如下示例: #define ...
一共二十道选择题,都是考数据结构的,挺难的。 三道算法题: 第一道,一个有序的数组,里面有重复的,找到第一个出现某个数字的位置。 思路是二分这般查找,先查找到,然后找所在的首次位置。 第二道,有一个N*M的方格子,每个方格子上都有一定数目的金币。小明现在在最左上角的位置(0,0),往最右下角走,只能向右向下走,请问怎么走才能使得到的金币最大?? 第二问,走到最右下角时,然后再返回到左上角,只能往左往上走。而且来的时候如果经过了已经拿走了金币就没有金币了,请问怎么走 这么一个来回拿到的金币最多?? 第三道,现在浏览器浏览网页的时候,除了正文之外,还会有导航、推荐网页、侧面广告、低端声明等和 ...
http://blog.csdn.net/yanzi1225627/article/details/8111806、http://www.eyeandroid.com/thread-9629-1-1.html这里讨论了求第二大的思路。现在研究如果是第i大怎么办? 先清晰一下概念,如果有个数组a[6] = 2 60 10 32 84 6; 那么第1大的数是最大值84, 第2大是 ...
一种思路是利用两次冒泡法,因为第一次冒泡,最大的在a[n-1],第二次冒泡后,次最大值在a[n-2]这样直接返回即可。核心代码如下: for(int i=0; i<2; i++) for(int j=0; j<n-i-1; j++) { if(a[j] >a[j+1]) swap(a[j], a[j+1]); } return a[n-2]; 但是这样做,显然效率不够高,几乎要遍历两次,有没有遍历一次就可以找到呢? 第二种思路: 首先看源码: int find2Max(int a[], int n) { int max1 = 0; int ...
分java和c数据结构两个大教室,本来考的是java一看全不会就到另外一个教室考了。 内容是五道选择题,和两道算法编程题,两道算法设计题。 选择题考了快速排序的性能,完全二叉树的叶子节点和深度之间的关系。 大题分别是: 1,用非递归来实现二分查找 2,在查找二叉树中,找两个节点最近的公共父亲节点 3,从一亿个数据里,找前1000个最大的,如何设计 4,有一个关键词数据库很大,里面有几百万条记录,现在爬虫抓取的用户的关键词,如何设计这个版块来尽快的匹配出关键词。 考数据结构的是搜索事业部,考java的是应用开发部。java里有两道大题,如何用最快的方法找到数组里第二大的数,写一个 ...
这里先讲一种类似于快速排序的方法。注意题目要求,不要求完全排序,只要求最快解决问题!这个题是我面试NI公司时,对方问我的。原话是从1亿个数据里,找出前一百个最大的。 首先看源码吧: void main(int a[], int start, int end, int N)//从数组a里,找出前N个最大的。如果是a[100],则start = 0, end = 99.注意这个索 引问题 { int mid = (start + end)/2; int i = start, j = end; while(i<j) { while(i<j && ...
这个题在笔试中经常会考到,这里做个总结。思路就是,从矩阵的最右上角的元素开始扫描a[i][j],如果要查找的数n小于该元素,则让i--,即往左移动一个数据再比较。如果n大于该数,则让j++,让原来的数往下移动一个数接着比较。 这里的设计思路就是充分利用了,数组横向纵向都递增的规律。而且巧妙的,一次只改变行数或列数,对应的列数或行数保持不变来进行搜索。 这和二维数组的螺旋打印异曲同工,待杂家有时间再总结螺旋打印问题。 时间复杂度最差为m+n,最好为m或者n。 程序如下: #include <iostream> using namespace std; #def ...
今天去汇川面试,面试官的一席话让我受益匪浅。找工作时,一定要看三个圈: 第一个圈,自己的能力、强项。 第二个圈,自己的意愿 第三个圈,外部环境,公司所能提供的岗位! 如果这三个圈有交集,这份工作无疑是一份满意的工作!如果没有交集,那就看自己的意愿,是否愿意放弃自己的强项,转学其他领域。 我们个人是拿这三个圈衡量定位自己,不要忘记,面试官也在以这三个圈在框我们,看是否有交集!比如面试官介绍完自己的部门后,问你有什么问题,可能就在考察第二个圈,你自己的意愿。如果提不出来啥问题,对方可能觉的你不是太想进他们公司。因此面试前,一定要查阅资料,做做功课,对公司的产品和自己的求职定位有一定了解, ...
1, 2个进程共享3个内存资源,不死锁,每个进程申请多少个资源? 2, 短作业优先调度算法 3, 哈夫曼带权路径长度 4, 折半查找的次数 5, 关系数据库处理的基本单元是?? 大题: 1,环状单链表,给一个指针指向一个节点,求离这个节点最远的那个节点 2, 用c++或java实现工厂模式、迭代器模式, 3, SQL更新,给的有具体的背景,一共三问 4, 数字全排问题,例如,给定N = 3, 则输出为123 132 231 213 321 312共六种。 假设函数原型是 void printAll(int n),要求任意输入一个整数,函数执行后打印所有的排列情况。(个人 ...
1,有一个单向循环链表,要求删除连续重复出现的,(head节点存放数据,且各个节点都是有数据的)如,s1-s1-s2-s3-s4-s4-s1,删除后得到s1-s2-s3-s4.注意,如果尾节点数据和头结点数据相同,则要删除一个。 题目上给出了函数原型。 2,在一条自西向东的公路上有10个加油站。现在要选出一个站点作为总补给点,运油车从总补给点一次只能载一车油,且每天要给每个站点都送一车油。问,选哪个站点作总补给点,使得运油车每天跑的路程最少??编程实现。 3,已知一个函数: int foo(int x, int y) { if(x==0 || y==0) return 2; ...
在河的左岸,有M个传教士,和C个野人,一条船。已知,M》=C。 且,1:船只能载两个人,当然得有一个人划船。传教士和野人都可以划船。 2:当野人数目超过传教士数目时,传教士就会有危险。 问:现在传教士想把所有人都运到河对岸,该怎么运? 请编程规划出方案。 请大家赐教! (个人的疑惑:如果两个野人一条船到河对岸,那么野人会把船再划回来吗? 从题意来看,得不到明确判断啊。)
期待已久的苏州瑞晟微电子终于来了。面试一共两轮,之前笔试过,但他们公司参考笔试的成分只有10%不到,很看重个人的能力,不愧是台湾同胞开的公司啊,很人性化。面试官都是从台湾来的。 就是今年他们怎么面试这么晚 ...
一共100分的题,分单选20分,多选20分(一共四道,每个5分),填空题40分,综合题20分。 综合题:当你输入网址,如www.taobao.com,然后按下回车键,分析 浏览器、TCP、UDP、HTTP,以及服务器端是如何工作的,一共20分。 大题1,有一个公司,每个员工过生日的时候,所有人都放假一天,假设一年365天,每个人的生日是均匀分配在365天,问这个公司招多少人,公司所有员工的期望工作时间最长?? 大题2,有一个升序数组,各不相等,设计算法,找到a[i] = i的所有下表索引,计算复杂度。 大题3,有一个怪物,旁边有N个鳄鱼。每个鳄鱼都想吃怪物,但吃怪物会消耗体力,其他鳄鱼有 ...
基础: • C:《The c programming langage》 • C++:《Thinking in C++》,《The c++ programming language》,《effective c++》,《more effective c++》,《exceptional c++》,《more exceptional c++》,《inside the c++ object model》 • Java:《Thinking in java》,《Core Java》,《effective java》,《Java Puzzlers》,《Java Network Programm ...
威盛的面试,一上午三轮。第一轮、第二轮之后,有人直接就进入终面,也就是hr面。四人一组,hr问问题后,大家依次回答。比如,自我介绍,自己的优点缺点,自己的定位,觉的自己的性格好坏。 我的第一轮面试,主要讲项目。 第二轮,讲完项目之后,考了c语言。 atoi函数,让自己封装。并让自己作一些安全性检测,如输入是否为NULL,是否在0到9的范围内。最后问,如果测试的话你能想出几种测试的情况。然后问了线程和进程,这个我没准备。 另外就是内联函数和#define的区别。另外还问到,在子函数申请一块内存,不用return怎么弄? 我想到了引用,其他想不出来了。 别人第二面,有考到不同线程申请到了相同的 ...
Global site tag (gtag.js) - Google Analytics