`
duizhang1108
  • 浏览: 11347 次
  • 性别: Icon_minigender_1
  • 来自: BJ
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

去面试当场要我写一个小程序,没写出来—挂了

阅读更多
  前两天去留学生创业园面试,因为太赶,没来得及准备,去了结果连简历都没有带上,郁闷了一把, 没聊5分钟叫我上机写一个小程序。
  该题为:用java API写一个类,任务是把一个文件夹及所有子文件夹中包含的文件读取出来并且自己写一个排序函数将其全部打印出来。做了将近半个小时,没有做出来,结果老总过来看了下,问我做的怎么样,我就把思路给他讲了一遍,可他要的是运行效果,没有结果就算没有完成,最后还是委婉的和我说了几句,你的基本功还是要加强,欢迎你下次再来我们公司面试。
   就这样,没有下文了。。。
   我的思路大概是这样的:写一个递归函数,然后进入父文件夹后读出所有文件,并且依次判断是否为文件,然后进行下一步操作或者保存到List中去,用一个递归函数来判断是否有子文件夹存在,我也不知道我的思路是否正确,等我有时间的时候再来做一下这个题目,我觉得还是很有必要掌握这些基础知识的,如果大家觉得有什么好一点的思路或者方法都可以贴出来,互相学习一下。
分享到:
评论
8 楼 dylyonia 2008-09-17  
递归,然后按照文件名的长短以及首字母排序
7 楼 duizhang1108 2008-09-15  
这两天一直有事情忙着,竟然忘了来这里看看了,感谢楼上兄弟们的回答,用的是一组递归调用的方法,但是不需要把所有的文件绝对路径读出来,只需要将文件名放进List中,然后进行排序,不过我想有前几位的回答就可以总结出最终的答案来了,正确答案将会在不久后贴出来,这两天没有时间总结,有人愿意也可以帮我结一下。
6 楼 elmar 2008-09-13  
我觉得Vistor模式是最可能的方案
5 楼 armorking 2008-09-12  
ls说的有道理

这要看程序的目的是什么

一般来讲,程序的目的不会仅仅是读出文件名
把所有子目录下的文件放到一个列表是共通的需求
所以才会用一个List<File>的结构

至于Out of Memory
可以先做一个检查
4 楼 elmar 2008-09-12  
没有看完全部回复,但是看了几个都是把所有文件文名放到一个大的列表之后再排序的。但是,如果指定的目录是C:\之类的呢?Out of Memory。

注意到两个同级目录A,B,如果A在B排序前面,A的所有子目录也肯定在B的前面。所以全部读取是不必要的。
3 楼 wangxinqn 2008-09-12  
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class FilePrinfTool {

	/**
	 * @param args
	 */
	static List<String> fileListGlobal = new ArrayList<String>();
	public static void main(String[] args) {
		 getAllFileList("C:\\Downloads\\");
		 Collections.sort(fileListGlobal);
		 for (String name : fileListGlobal) {
			 System.out.println(name);
		 }
	}

	public static void getAllFileList(String root){
		File rootDir = new File(root);
		if (rootDir == null || !rootDir.isDirectory()){
			System.out.println(String.format("\"%s\" 这个目录不存在 !", root));
		} else {
			getSubDirectotyFile(rootDir);
		}
	}

	private static void getSubDirectotyFile(File rootDir) {
		File[] fileArray = rootDir.listFiles();
		for (File file : fileArray) {
			if (file.isDirectory()) {
				getSubDirectotyFile(file);//递归
			} else {
				String filePath = file.getPath();
				fileListGlobal.add(filePath);
			}
		}
	}
}



C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\record\formula\package-summary.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\record\package-frame.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\record\package-summary.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBug42464-out.txt
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBug42464.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBug43093.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBug44297.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBugs-out.txt
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestBugs.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestCellStyle.html
C:\Downloads\poi-bin-3.0.2-FINAL-20080204\poi-3.0.2-FINAL\docs\junit\org\apache\poi\hssf\usermodel\TestCloneSheet.html.....
2 楼 zhangpeng8394 2008-09-12  
package com.zhangpeng.file;


import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

public class Directory {
private List file = new ArrayList();
private File f ;
public Directory(){
}

public List getAllFile(String dir_name){
File[] files = null;
try {
f = new File(dir_name);
files = f.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isFile()){
file.add(files[i].getName());
}else{
getAllFile(files[i].getAbsolutePath());
}
}
} catch (Exception e) {
System.out.println("目录路径不正确。");
}
Collections.sort(file,new Com());
return file;
}
public static void main(String[] args){
List l = new Directory().getAllFile("D:\\test");
Iterator it = l.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}

//比较器
class Com implements Comparator{

public int compare(Object o1, Object o2) {
String s = (String)o1;
String s1 = (String)o2;
// TODO Auto-generated method stub
return s.compareTo(s1);
}
//123.txt
//12321.txt
//asdsf.txt
//cscdf.txt
//123.txt
//3435.txt

}
1 楼 armorking 2008-09-12  
/*
 * @(#) FileTest.java 2008/09/12
 */

import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 * FileTest
 *
 * @version 1.0
 * @since 2008/09/12
 */
public class FileTest
{
    public static void main(String[] args)
    {
        File directory = new File("c:\\temp\\");
        List fileList = listAllFiles(directory);

        Set fileNameSet = new HashSet(fileList.size());
        for (int i = 0 ; i< fileList.size() ; i++)
        {
            File file = (File)fileList.get(i);
            fileNameSet.add(file.getAbsolutePath());
        }

        for (Iterator i = new TreeSet(fileNameSet).iterator() ; i.hasNext() ; )
        {
            System.out.println(i.next());
        }

    }


    private static List listAllFiles(File directory)
    {
        if (directory == null 
            || !directory.isDirectory()
        ){
            return null;
        }

        List fileList = new ArrayList();
        addSubFileList(directory, fileList);

        return fileList;
    }

    private static void addSubFileList(
        File file, 
        List fileList
    ){
        File[] subFileArray = file.listFiles();
        if (subFileArray == null
            || subFileArray.length == 0
        ){
            return;
        }

        for (int i = 0 ; i < subFileArray.length ; i++)
        {
            File subFile = subFileArray[i];
            if (subFile == null
            ){
                continue;
            }
            if (subFile.isFile()
            ){
                fileList.add(subFile);
                continue;
            }
            else if (subFile.isDirectory()
            ){
                addSubFileList(subFile, fileList);
            }
        }
    }
}



引用

c:\temp\ASTOption\ASTOption.exe
c:\temp\ASTOption\ASTOption.inf
c:\temp\ASTOption\ITMFP014_Win2K.dev
c:\temp\ASTOption\cnpdsdk.dll
c:\temp\ASTOption\cnsdk16.dll
c:\temp\ASTOption\cnsdk32.dll
c:\temp\acegi-security-1.0.1.jar
c:\temp\acegi-security-rsi-1.0.1.jar
c:\temp\cls
c:\temp\commons-attributes-api-2.1.jar
c:\temp\commons-beanutils.jar
c:\temp\commons-codec-1.3.jar
c:\temp\commons-collections-3.1.jar
c:\temp\commons-dbcp-1.2.1.jar
c:\temp\commons-lang-2.1.jar
c:\temp\commons-logging-api.jar
c:\temp\commons-logging.jar
c:\temp\commons-pool-1.3.jar
c:\temp\ehcache-1.1.jar
c:\temp\ibatis-common-2.jar
c:\temp\ibatis-sqlmap-2.jar
c:\temp\j2ee.jar
c:\temp\jakarta-oro-2.0.8.jar
c:\temp\java
c:\temp\jsf-api.jar
c:\temp\jsf-ibm.jar
c:\temp\jsf-rsi-2.2.7.jar
c:\temp\log4j-1.2.13.jar
c:\temp\log4j-1.2.4.jar
c:\temp\mpibtbatch.jar
c:\temp\ojdbc14.jar
c:\temp\oro-2.0.8.jar
c:\temp\rsi.jar
c:\temp\spring.jar
c:\temp\sqljdbc.jar
c:\temp\vssver.scc

相关推荐

    一个刷题微信小程序源码.zip

    一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序源码 一个刷题微信小程序...

    07-小程序面试题-个人课堂总结

    (小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序面试题小程序...

    毕业面试当场写的字典管理 小玩具

    这次的经历描述了一次面试中,面试官要求根据提供的文档编写一个字典管理的小工具。这个任务旨在评估应聘者的链表算法理解和文件操作能力,这两项技能在实际的IT工作中至关重要。 首先,让我们深入理解字典管理这一...

    04小程序与uinapp面试题

    04小程序与uinapp面试题

    小程序常见面试题_20题.pdf_前端面试题

    微信小程序面试题知识点总结 微信小程序基础知识: 1. 微信小程序有三个必备文件:app.json、app.js、app.wxss。app.json 是整个小程序的全局配置文件,app.js 是小程序的入口文件,app.wxss 是小程序的全局样式...

    面试中的小程序

    面试中的小程序常常涉及到基础编程能力、逻辑思维以及对特定技术的深入理解。在这个问题中,我们有两个主要的知识点,一个是使用Java处理身份证号码的验证和日期提取,另一个是文件操作,涉及读取文本文件并合并内容...

    前端面试题合集VueReact小程序NodeJs

    在当前的IT行业中,前端开发扮演着至关重要的角色,涵盖了诸如Vue、React、小程序和Node.js等技术。这些工具和技术都是构建现代Web应用的核心部分。本文将深入探讨这些技术的相关面试知识点,帮助开发者们准备面试,...

    一款面试刷题的 Spring Cloud 开源系统 零碎时间利用小程序查看常见面试题,夯实Java基础 该项目可以.zip

    零碎时间利用小程序查看常见面试题,夯实Java基础。 一款面试刷题的 Spring Cloud 开源系统。零碎时间利用小程序查看常见面试题,夯实Java基础。 一款面试刷题的 Spring Cloud 开源系统。零碎时间利用小程序查看常见...

    面试题手写代码(很实用)

    在手写代码环节,面试官可能会让你实现一个简单的类或方法,例如字符串操作、数据结构转换,甚至可能涉及到并发控制或者算法实现。 其次,“dom解析”涉及的是网页文档对象模型,主要用于处理HTML或XML文档。面试中...

    一款面试刷题的 Spring Cloud 开源系统。零碎时间利用小程序查看常见面试题,夯实Java基础。 该项目可以.zip

    Spring Cloud面试神器.zip 本文将深入探讨基于Spring Cloud...综上所述,这款Spring Cloud面试刷题系统是一个集学习、实践于一体的平台,通过整合微服务架构的精髓,为Java开发者提供了一个高效复习和提升技术的途径。

    小程序面试题.zip

    2. **Taro**:一个开放源代码的多端开发框架,可以让开发者一次编写,到处运行,支持微信、支付宝、百度、QQ等小程序。 四、小程序API与功能 1. **数据绑定**:WXML与JS之间通过数据绑定进行通信,实现动态渲染。 2...

    java程序员面试面试题

    Java程序员在面试中可能会遇到各种各样的问题,涵盖了语言基础、数据结构、并发编程等多个方面。下面我们将深入探讨这些知识点。 首先,对于Java语法规范,这是每个Java开发者的基础。这包括但不限于变量声明、数据...

    前端面试宝典微信小程序

    前端面试宝典微信小程序

    自己写的小程序

    标题中的“自己写的小程序”指的是用户自行开发的一个应用程序,可能是用编程语言编写的,用于特定的任务。在这个情况下,描述提到的功能是“实现概率统计,进而判断下次序列出现的概率”。这意味着该小程序具备处理...

    50个小程序源码下载

    在IT行业中,微信小程序是一...同时,对于想要创业或改进现有业务的人来说,这些源码也是一个很好的参考,可以启发新的产品设计和功能实现思路。总之,这个资源包对于任何对微信小程序开发感兴趣的人都具有很高的价值。

    面试题 写一个堆排序算法 c++

    一个堆排序算法 c++写的 逻辑相同 可自行 改为java 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一个堆排序算法 c++ 写一...

Global site tag (gtag.js) - Google Analytics