测试开发面试题

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,然后针对这部分面试官又问了一些相关的问题。

总结:基础需要加强,克服紧张,一紧张就容易头脑空白,很多问题不知道怎么说,其实面试完了,回忆起来有些问题是可以回答好的!继续加油吧!


 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值