`
ITeye管理员
  • 浏览: 892843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

这样的面试题,你会吗?——博文视点有奖答题活动全面启动

阅读更多
这样的面试题,你会吗?
——博文视点有奖答题活动全面启动

程序员求职找工作,谁也逃不掉做编程面试题,这样的面试题,你做过吗?春节过后新一轮的招聘季即将到来,你准备好迎接面试官的挑战了吗?ITeye&CSDN联合电子工业出版社博文视点推出有奖答题活动,只要你开动脑筋,积极参与,不仅可以锻炼自己的答题能力,更有机会获得由博文视点送出的畅销精品图书——《剑指Offer:名企面试官精讲典型编程题》。心动不如行动,让智慧为你赢得新年好运大礼吧!

活动时间:2011年12月14日—12月25日

活动流程:

1.为避免抄袭,请将以下两道编程题的答案站短给ITeye管理员,或发送邮件至webmaster(at)iteye.com。
  提交答案时,请尽量以压缩包形式提交,标题为:有奖答题+账号ID
2.答案将由《剑指Offer:名企面试官精讲典型编程题》作者何海涛老师,根据提交的思路及答案评选出5位获奖者。
3.每位获奖者均可获得博文视点最新热销图书《剑指Offer:名企面试官精讲典型编程题》1本。

博文视点有奖答题第一题:二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。




博文视点有奖答题第二题:青蛙跳台阶问题

(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。(2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?


看完题目是不是跃跃欲试?快来提交你的答案吧!下一个面霸就是你!



图书介绍

《剑指Offer:名企面试官精讲典型编程题》

    
何海涛 编著
ISBN 978-7-121-14875-0
45.00元272页
面试官的视角    50余道编程题
系统的解题方法超写实体验与感悟

内 容 简 介
本书剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。
本书适合即将走向工作岗位的大学生阅读,也适合作为正在应聘软件行业的相关就业人员和计算机爱好者的参考书。
分享到:
评论
7 楼 feijing 2012-03-09  
数组长度不够怎么办呢?
6 楼 feijing 2012-03-09  
楼上能不能不用数组呢?
5 楼 mehere 2012-02-14  
没有仔细考虑,大概思路是这样, 可能有bug。


boolean find(int target  int[][] a){

    int lineBound = target;
    if(target > a.length){
   
    lineBound = a.length;
   
    }
for(int i = lineBound -1; i>0;i--){

int[] tempArray = a[i];
int j = 0;
for(; tempArray[j]<target && j<(tempArray.length-1);j++);
if(tempArray[j] = target){
return true;
}
}
return false;
}
4 楼 missing1314521 2012-01-19  
只能说2楼的代码太繁琐了,最近的项目中就有过和这个要求一样的问题,不超过15行代码就能搞定,质量!
3 楼 cmhaert 2012-01-10  
一二楼的同学没看清题啊
要求是短信给管理员
发出来干嘛
2 楼 享受生活 2012-01-09  
今天做半天竟然发现到今天还没人贴个出来,无语了。
public class Test implements ExecuteTime{
	/**
	 * 生成二维数组,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
	 * @param length  数组长度,等于 nums.length
	 * @return
	 */
	public long[][] getArrays(int length) {
		if(length<=0){
			length=1;
		}
		long[][] nums = new long[length][length];
		long[] temp = new long[length*length];
		for (int i = 0; i < length * length; i++) {
			temp[i] = Math.round(Math.random() * length*length*4);
		}
		Arrays.sort(temp);
		int x = 0;
		for (int m = 0; m < length; m++) {
			if (m == 0) {
				nums[0][0] = temp[x];
				x++;
				continue;
			}
			for (int j = 0; j < m; j++) {
				nums[j][m] = temp[x];
				x++;
			}
			for (int k = 0; k <= m; k++) {
				nums[m][k] = temp[x];
				x++;
			}
		}
		//输出,数组长度过大,可以注释下面代码。
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums.length; j++) {
				System.out.print(nums[i][j] + " ");
			}
			System.out.println("");
		}
		return nums;
	}
	/**
	 * 在getArrays方法获得的数组中查找指定数字,如果找到则返回,否则返回-1
	 * @param l
	 * @param nums
	 * @return
	 */
	public long find(long l,long[][] nums,int type){
		long result=-1;
		switch (type) {
		case 1:{
			int[] indexs=recuisionRange(l, nums, 0, nums.length-1);
			result=search(l, nums, indexs[0], indexs[1]);
			break;
		}
        case 2:{
    		for (int i = 0; i < nums.length; i++) {
    			for (int j = 0; j < nums.length; j++) {
    				if(l==nums[i][j]){
    					result=l;
    				}
    			}
    		}
    		break;
        }
		default:{
			int[] indexs=recuisionRange(l, nums, 0, nums.length-1);
			result=search(l, nums, indexs[0], indexs[1]);
			break;
		}
		}
		return result;
	}
	/**
	 * 根据指定数字选择出数组中适当的范围来查找
	 * @param l
	 * @param nums
	 * @param firstIndex
	 * @param lastIndex
	 * @return
	 */
	public int[] recuisionRange(long l,long[][] nums,int firstIndex,int lastIndex){
		int midd=(int)Math.round((lastIndex-firstIndex)/2d);//中间索引
		if(midd==0){
			return new int[]{0,0};
		}
		midd=firstIndex+midd;
		if(l>nums[midd][midd]){
			if(l<nums[lastIndex][lastIndex]){
				if(lastIndex-midd>1){
					return recuisionRange(l, nums, midd, lastIndex);
				}else{
					return new int[]{midd,lastIndex};
				}
			}else{
				return new int[]{lastIndex,lastIndex};
			}
		}else if(l<nums[midd][midd]){
			if(l>nums[firstIndex][firstIndex]){
				if(midd-firstIndex>1){
					return recuisionRange(l, nums, firstIndex, midd);
				}else{
					return new int[]{firstIndex,midd};
				}
			}else{
				return new int[]{firstIndex,firstIndex};
			}
		}else{
			return new int[]{midd,midd};
		}
	}
	/**
	 * 根据适当的范围在数组中查找指定数字,有就返回指定数字,没有返回-1
	 * @param l
	 * @param nums
	 * @param findex
	 * @param lindex
	 * @return
	 */
	public long search(long l,long[][] nums,int findex,int lindex){
		if(findex==lindex){
			if(l==nums[findex][findex]){
				return l;
			}else{
				return -1;
			}
		}else{
			for (int i = 0; i <= lindex-1; i++) {
				if(l==nums[i][lindex]||l==nums[lindex][i]){
					return l;
				}
			}
			return -1;
		}
	}
	
	/**
	 * 测试
	 */
	public void test(long[][] nums){
		long rs=find(111,nums,3);
		System.out.println("rs:"+rs);
	}
	
	public static void main(String[] args) throws IOException {
		Test t=new Test();
		MyDecorate test=new MyDecorate(t);
		test.test(t.getArrays(8));
	}
	
}
		


/**
 * 装饰,计算运行时间
 * @author haiwei.deng
 *
 */
interface ExecuteTime{
	public void test(long[][] nums);
}
class MyDecorate implements ExecuteTime{

    private Test obj=null;
    public MyDecorate(Test test){
    	obj=test;
    }
	@Override
	public void test(long[][] nums) {
		long s=System.currentTimeMillis();
		obj.test(nums);
		long e=System.currentTimeMillis();
		System.out.println("Time:"+(e-s));
	}
	
}
1 楼 dotjar 2012-01-06  
看客挺多,没有一个评论者。

相关推荐

Global site tag (gtag.js) - Google Analytics