`
zhongkem
  • 浏览: 151463 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

用友软件的两道笔试题(找最大文件和倒水问题)

阅读更多

题目比较基础,不是很难,但也有很多需要注意的地方,先看题目吧:

1.找出目录中最大的文件。(目录中可能会有子目录)

2.有两个大小分别为m,nL的容器,如何获得xL的水?

package others;
import java.io.File;
import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
//找出目录中最大的文件
public class FileManager {
	Map<String,Long> fileMap=new HashMap();//保存文件的路径及对应的文件大小 	
	public void getMaxSizeFile(String path){	
		File file=new File(path);
		if(file.isDirectory()){
			bianli(file);//通过遍历把文件路径及对应大小保存到fileMap中
		}else System.out.println("the path should be a directory!");
		
		Long maxSize=0L;//文件最大值
		List result=new ArrayList();//保存结果 ,最大的文件可能不止一个
		for(Iterator it=fileMap.entrySet().iterator();it.hasNext();){
			Entry en=(Entry) it.next();
			Long size=(Long) en.getValue();
			if(size>=maxSize){
				if(size!=maxSize)result.clear();;
				maxSize=size;
				result.add(en.getKey());
			}
		}
		for(Iterator it=result.iterator();it.hasNext();)
			System.out.println(it.next());
	}	

	private void bianli(File file) {
		// TODO Auto-generated method stub
		File[] files=file.listFiles();
		if(files==null)return;		
		for(File f:files){
			if(f.isDirectory())bianli(f);
			else {				
				fileMap.put(f.getAbsolutePath(), f.length());
			}
		
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileManager manager=new FileManager();
		long start=System.currentTimeMillis();
		manager.getMaxSizeFile("C:\\");
		System.out.println("花费:"+(System.currentTimeMillis()-start));
	}
}

 

第一种思路是用一个map先把所有的文件名和大小保存起来,再从中找最大值,写的过程中就想到可以不用map,直接用一个中间变量保存最大值,效率会高些。但最后测试的结果表示,效率并没提高多少,当然空间肯定是节省了。

package others;
import java.io.File;
import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
//找出目录中最大的文件
public class FileManager2 {
	Long max=0L;
	ArrayList result=new ArrayList();
	
	public void getMaxSizeFile(String path){	
		File file=new File(path);
		if(file.isDirectory()){
			bianli(file);//通过遍历把文件路径及对应大小保存到fileMap中
		}else System.out.println("the path should be a directory!");		
		for(Iterator it=result.iterator();it.hasNext();)
			System.out.println(it.next());
	}	

	private void bianli(File file) {
		// TODO Auto-generated method stub
		File[] files=file.listFiles();
		if(files==null)return;	
		for(File f:files){
			if(f.isDirectory())bianli(f);
			else {				
				if(f.length()>max){
					max=f.length();
					result.clear();
					result.add(f.getAbsolutePath());
				}else if(f.length()==max)result.add(f.getAbsolutePath());
			}
		
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileManager manager=new FileManager();
		long start=System.currentTimeMillis();
		manager.getMaxSizeFile("C:\\");
		System.out.println("花费:"+(System.currentTimeMillis()-start));
	}

}

 

第二题有很多需要注意的地方,可以看注释

 

package others;

/**
 * 有两个大小分别为m,nL的容器,如何获得xL的水? 如4,3 2 
 */
public class WaterTest {

	private int i=1;//倒水次数记数	

	public  boolean doWater(int m, int n, int x) {
		int left, right;
		if (x > m + n || (m == n && m != x)) {
			System.out.println("can't get " + x + "L water");
			return false;
		}
		left = m;// M杯剩余水量
		System.out.println(i+++":M杯倒满:" + m + "L水");
		if (left == x)
			return true;
		right = n;// N杯空余空间
		while (right > 0) {			
			left = m - right;// 左边还剩多少水
			System.out.println(i+++":从M杯倒" + right + "L水到N杯中,最后M杯中剩" + left + "L水");
			if (left == x)
				return true;

			while (left > right) {
				System.out.println(i+++":把N杯中的水全问倒掉");
				right = n;
				System.out.println(i+++":把M杯中剩下的" + left + "L水倒满N杯,M杯中还剩余水"
						+ (left - n) + "L");
				left = left - n;
				if (left == x)
					return true;
			}

			System.out.println(i+++":把N杯中的水全问倒掉");
			right = n - left;
			System.out.println(i+++":把M杯中剩下的" + left + "L水倒到N杯中,N杯剩余空间" + right
					+ "L");
			left = m;
			System.out.println(i+++":M杯倒满:"+m+"L水");
			// right=left<right?n-left:left-n;//右边还剩多少空间

			if (n == (right + x))
				return true;
		}
		return false;
	}
	
	public static void main(String[] args) {
		// 10,4,3 false
		// 4,3,2 true
		// 20,3,2 true
		//20,7,5 true
		WaterTest test=new WaterTest();
		if (test.doWater(20,7,5)) {
			System.out.println("胜利完成!");
		} else
			System.out.println("不能实现!");
	}
}

 

分享到:
评论

相关推荐

    用友软件开发实习笔试题

    软件开发实习笔试题 以下是对给定文件信息的详细解释和知识点总结: 时间复杂度 时间复杂度是衡量算法性能的一个重要指标,它是指算法的执行时间与输入规模之间的关系。常见的时间复杂度有O(1)、O(logn)、O(n)、O...

    2013用友笔试题

    用友,作为中国领先的ERP(企业资源规划)软件和服务提供商,其笔试环节通常涉及计算机基础知识、数据库管理、财务会计、管理信息系统等多个领域。2013年的用友笔试题,旨在考察应聘者的综合素质,特别是与IT技术和...

    用友笔试题

    总的来说,【用友校园招聘笔试题】旨在全面评估应聘者的Java技术功底和问题解决能力,不仅要求理论知识扎实,还需要具备一定的实战经验。通过这样的笔试,企业能够筛选出符合需求的技术人才,为公司的软件开发团队...

    JAVA试卷-NC用友软件工程师笔试题.pdf

    根据提供的文件信息,以下是关于JAVA和...通过上述内容,可以了解JAVA编程及SQL数据库操作的核心概念,这些知识点对于通过NC用友软件工程师笔试题是必不可少的。理解并应用这些知识点是成为一名优秀软件工程师的基础。

    用友笔试题用友笔试题用友笔试题

    【用友笔试题】涉及到的是IT领域的面试及笔试常见知识点,涵盖了Web开发、XML解析、Java中间件技术、设计模式、数据库操作以及企业级Java应用的相关概念。下面将逐一详细阐述这些知识点: 1. **Web中的forward和...

    用友软件公司笔试题B卷

    用友软件公司笔试题B卷 本资源摘要信息涵盖了C#程序设计的多个方面,包括面向对象编程、ADO.net、数据访问、ASP.NET、修饰符、SQL语句、递归算法等知识点。 一、面向对象编程 1. 面向对象语言具有封装性、继承性...

    用友NC java笔试题

    - **问题解答**:提前准备常见的Java面试题,如八大排序算法、设计模式等,同时对用友NC的特性和功能有所了解。 - **技术趋势**:关注Java的新特性,如Java 8以后的Lambda表达式、Stream API,以及如何在用友NC中...

    实施顾问笔试题

    实施顾问笔试题,挺不错的,推荐大家看看 希望对大家有所帮助

    JAVA软件工程师笔试题

    JAVA软件工程师笔试题涵盖了许多Java基础、性能优化、系统分析设计、软件工程、数据库理论以及智力题等多个方面。以下是对这些知识点的详细说明: 1. **Interface与Abstract Class的区别**: - 接口(Interface)...

    大数据面试笔试资料-56家互联网大公司面试笔试题资料整理汇总.zip

    大数据面试笔试资料-56家互联网大公司面试笔试题资料整理汇总: hive面试.doc 京东.jpg 笔试题1.docx 笔试题10.jpg 笔试题11.JPG 笔试题12_搜狐 笔试题13_九章云极科技有限公司 笔试题14_北京东方国信科技股份有限...

    用友软件面试题

    【用友软件面试题】是针对用友软件公司招聘过程中的技术面试环节的题目,主要涉及计算机编程基础知识,包括面向对象特性、接口、访问修饰符、SQL查询、数据处理及面向对象编程概念等。以下是对这些知识点的详细解释...

    用友软件考核试题

    根据题目中的描述,本套练习题主要围绕用友ERP-U8软件展开,重点考察考生对总账、固定资产以及报表处理的能力。首先,我们需要了解用友ERP-U8软件的运行环境。 **知识点1:操作系统与数据库配置** - **WindowsXP + ...

    神州数码、中科软、用友笔试题

    【知识点详解】 ...这些题目涵盖了Java基础、并发编程、XML解析、数据库、面向对象编程、软件工程等多个领域,是IT面试和笔试中常见的知识点。通过理解和掌握这些知识,可以提高在IT行业中的竞争力。

    用友软件T1批发零售版演示文件(ppt)

    用友软件T1批发零售版演示.ppt文件。

    用友nc事业部的笔试题 .docx

    - JMS(Java Messaging Service)是Java的消息服务标准,支持点对点和发布/订阅两种消息模型,用于异步通信。 - JTA(Java Transaction API)提供了分布式事务处理能力,让J2EE应用可以跨越多个资源进行事务管理。...

    用友软件维护——用友软件问题解答

    【用友软件维护】是企业信息化管理中必不可少的一环,主要涉及到的问题涵盖了系统的日常操作、问题排查和系统优化等多个方面。以下是对用友财务软件常见问题的详细解答: 1. **系统管理员(Admin)口令丢失**:在...

Global site tag (gtag.js) - Google Analytics