1.删除文件夹及文件夹中的所有内容,即删除文件和子文件夹
给定一下三个方法,编写方法remove删除文件夹中的所有内容
public boolean isFile(String path)//判断给定路径是否是文件
public boolean deleteFile(String path)//删除文件及空文件夹
public String[] getChild(String path)//获得给定路径下的所有一级子文件路径
public boolean remove(String path)
答:
package com.xnn.io;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JavaFile {
public JavaFile(){}
/**
*
* @param path
* @return
*/
public boolean isFile(String path){
File file=new File(path);
boolean flag=file.isFile();
return flag;
}
/**
* 删除文件及空文件夹
* @param path 文件路径+文件名
* @return
*/
public boolean deleteFile(String path){
File file=new File(path);
return file.delete();
}
/**
* 获得某个路径下的所有文件,包括隐藏文件
* @param path
* @return
*/
public String[] getChild(String path){
File f=new File(path);
File[] files=f.listFiles();
String[] paths=null;
if (files!=null&&files.length>0){
paths=new String[files.length];
for (int i=0;i<files.length;i++){
paths[i]=files[i].getPath();
}
}
return paths;
}
/**
* 递归删除文件及子文件
* @param path
* @return
*/
public boolean remove(String path){
if(isFile(path)){
return deleteFile(path);
}else {
String[] paths=getChild(path);
if (paths!=null&&paths.length>0){
for (int i=0;i<paths.length;i++){
return remove(paths[i]);
}
}
}
return deleteFile(path);
}
}
测试方法:
public class JavaFileTest {
JavaFile javaFile;
@Before
public void setUp(){
javaFile=new JavaFile();
}
@Test
public void testRemove(){
String path="AppData";
javaFile.remove(path);
}
}
2.智力题:有8个球,外表一样,其中一个球与其他七个球重量不一样,通过三次称重,找到那个不一样的球,注意并不知道要找的那个球是比其他7个轻还是重。
【方法一】:
第一步,将八个球分两组A,B,每组四个。任意取一组(四个球)出来,假设是A组。将A组再分成两组,两两比较,如果平衡(假设都称为正品),要找的球在另外一组B里面,否则就在这A组里面;
第二步,将第一步找出的四个球,假设是A组。从中取出两个与正品比较,如果平衡,则要找的球在A组剩余的两个里面,否则就是取出的两个球里面;
第三步:将第二步找到的两个球,拿一个出来与正品比较,如果不平衡就是,则拿出的那个球就是要找的球(次品);否则就是剩余的那个是要找的球(次品)。
【方法二】:
第一步,取6个 球出来,分成两组,每组3个,放在天平两端上称。如果平衡,说明要找的球在剩下的两个里面,从任意6个中取一个,从剩余的两个中选一个称,如果平衡,说明两个中剩下的那个是要找的球,如果不平衡,说明选的那个球就是要找的球;
第二步:如果6个球分成3,3两组称 不平衡,说明要找的球是6个球中的一个,这时,从左右两边任选两个交换,如果天平没有变化,说明要找的球在剩下的两个中,就是从两个中找出那一个球(第三次称),跟第一步后半部分一样;如果天平有变化,则就是变化那一边交换的那两个球中的一个,也是从两个中找出那个球,跟第一步后半部分一样。
3.一个六面体,每个面都有一个数字,范围是0到9,请问有多少种组合方式是00到31,说实话这道题目我没听明白,没理解什么意思,只记得题目描述是这样的。。。。
4.项目经验,这个地方问我连接数据库的类,一下把我问住了,可能前面几题把我问懵了,我很紧张,生怕自己答错。后来出来想了一下,在项目中我是自己封装的类DbHelperMySQL,配置文件中设置连接字符串,如URL,user,password。封装的类大致如下,BLL层调用Utility层的数据库类。
public class DbHelperMySQL
{
//数据库连接字符串(app.config来配置),可以动态更改connectionString支持多数据库.
//public static string connectionString = System.Configuration.ConfigurationManager.AppSettings["mysqlStr"].ToString();
public static string connectionString = Common.GetMySQLConn();
public DbHelperMySQL()
{
}
#region 基本方法
/// <summary>
/// 是否存在某条记录
/// </summary>
/// <param name="strSql"></param>
/// <param name="cmdParms"></param>
/// <returns></returns>
public static bool Exists(string strSql, params MySqlParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 执行简单SQL语句
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// 插入、删除、更新
/// </summary>
/// <param name="sqlString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string sqlString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(sqlString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException E)
{
connection.Close();
throw new Exception(E.Message);
}
}
}
}
//等等。。。
}
5.自动化的了解,我是自己看网上资料,做一些小 demo,框架的话是selenium和testNG,然后针对这部分面试官又问了一些相关的问题。
总结:基础需要加强,克服紧张,一紧张就容易头脑空白,很多问题不知道怎么说,其实面试完了,回忆起来有些问题是可以回答好的!继续加油吧!