加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

机试题详解

发布时间:2020-12-14 06:47:21 所属栏目:百科 来源:网络整理
导读:1.找出如下数组中的最大元素和最小元素。并指出该元素在数组中的位置。 array[][]= {{4,1,22},{6,7,3,15},{18},{11,9}} 分析:此题主要是考双重for循环的二维数组的遍历(容易级别) 代码实现如下: class Test2{public static void main(String[] args) {in

1.找出如下数组中的最大元素和最小元素。并指出该元素在数组中的位置。
array[][]= {{4,1,22},{6,7,3,15},{18},{11,9}}

分析:此题主要是考双重for循环的二维数组的遍历(容易级别)

代码实现如下:

class  Test2
{
	public static void main(String[] args) 
	{
		int [][]a = {{4,9}};
		int max=a[0][0],min=a[0][0],xi=0,xj=0,ni=0,nj=0;
		for(int i =0;i<a.length;i++){
			for(int j=0;j<a[i].length;j++){
				if(max<a[i][j]){
					max=a[i][j];
					xi=i;
					xj=j;
				}
				if(min>a[i][j]){
					min=a[i][j];
					ni=i;
					nj=j;
				}
			}
		}
		System.out.println("max:"+max+" position:"+xi+","+xj+" min:"+min+" position:"+ni+","+nj);
	}
}

2.请写一个单例模式的程序。

分析:此处不仅仅是设计一个简单的单例,应该考虑程序的效率,安全性的问题。

代码实现如下:

public class  Test3
{
	public static void main(String[] args) 
	{
		System.out.println(A.getA());
	}
}
class A
{
	private A(){}
	public static A  a=null;;
	public static A getA(){
	if(a==null){
		synchronized(A.class){
			if(a==null){
			a=new A();
			}
		}
	}
		return a;
	  }
}

3.写一段代码,在以下文本中搜索并打印包含单词your(不区分大小写)的句子,并按出现次数由大到小输出。

Make me Yourself at home

None of your ourrise business

I will be more careful

How about going to a move

Your life is myour own our affair

分析:要从文本中读取,需要IO流,要匹配字符串要正则,要排序,要记录出现次数可以用键值对形式的Map来装数据。

应该注意熟悉的点:正则的实现,map按键值排序的实现

代码实现如下:

package net.hncu.d0725;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo1 {
	public static void main(String[] args) {
		File file = new File("1.txt");
		Map<String,Integer> map = new HashMap<String,Integer>();
		Map<String,Integer> sortedMap = new HashMap<String,Integer>();
		try {
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String buff=null;
			while((buff=reader.readLine())!=null) {
				String key="your";
				int i = pick(buff.toLowerCase(),key);
				if(i>0) {
					map.put(buff,i); 
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		sortedMap=sortMapByValue(map);
		for(String s : sortedMap.keySet()) {
			System.out.println(s+" num:"+sortedMap.get(s));
		}
	}
	/**
	 * 按value值给Map排序
	 * @param oriMap
	 * @return
	 */
	public static Map<String,Integer> sortMapByValue(Map<String,Integer> oriMap) {  
	    Map<String,Integer> sortedMap = new LinkedHashMap<String,Integer>();  
	    if (oriMap != null && !oriMap.isEmpty()) {  
	        List<Map.Entry<String,Integer>> entryList = new ArrayList<Map.Entry<String,Integer>>(oriMap.entrySet());  
	        Collections.sort(entryList,new Comparator<Map.Entry<String,Integer>>() {  
	                    public int compare(Entry<String,Integer> entry1,Entry<String,Integer> entry2) {  
	                        int value1 = 0,value2 = 0;  
	                       value1=entry1.getValue();
	                       value2=entry2.getValue();
	                        return value2 - value1;  
	                    }  
	                });  
	        Iterator<Map.Entry<String,Integer>> iter = entryList.iterator();  
	        Map.Entry<String,Integer> tmpEntry = null;  
	        while (iter.hasNext()) {  
	            tmpEntry = iter.next();  
	            sortedMap.put(tmpEntry.getKey(),tmpEntry.getValue());  
	        }  
	    }  
	    return sortedMap;  
	}
	/**
	 * 正则匹配找字符串中的另一个字符串
	 * @param str
	 * @param key
	 * @return
	 */
	public static int pick(String str,String key) {
		int count = 0;
		Pattern p = Pattern.compile(key);
		Matcher m = p.matcher(str);
		while(m.find()) {
			count++;
		}
		return count;
	}

}

4.Java实现统计D:/test ..txt文件出现的数字,汉字,统计个数,汉字,行数,空格。


分析:要读文件要IO,要匹配字符要正则

代码实现:

package net.hncu.d0725;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo2 {
	public static void main(String[] args) {
		File file = new File("resource/2.txt");
		int num=0;
		int letter=0;
		int word=0;
		int line=0;
		int space=0;
		try {
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String buff=null;
			while((buff=reader.readLine())!=null) {
				num+=select(buff,"num");
				letter+=select(buff,"letter");
				word+=select(buff,"word");
				space+=select(buff,"space");
				line++;
			}
			System.out.printf("num:"+num+"  letter:"+letter+"  word:"+word+"  space:"+space+"  line:"+line);
			reader.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static int select(String str,String key) {
		String rule=null;
		switch(key) {
		case "num":
			rule="d";
			break;
		case "letter":
			rule="[a-zA-Z]";
			break;
		case "space":
			rule="s";
			break;
		case "word":
			rule="[u4e00-u9fa5]";
			break;
		}
		int count=0;
		Pattern p = Pattern.compile(rule);
		Matcher m = p.matcher(str);
		while(m.find()) {
			count++;
		}
		return count;
	}
}


5.给定四个线程,id分别是aa,bb,cc,dd,请用Java实现循环输出10次aabbccdd。

分析:待定


代码实现:

package net.hncu.d0725;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Demo3 {
	private static int state = 0;

    public static void main(String[] args) {
        final Lock l = new ReentrantLock();
        
        Thread A = new Thread(new Runnable(){
            @Override
            public void run() {
            	int i = 0;
                while (state<=40) {
                    l.lock();
                    if(state%4==0){
                        System.out.print(++i+"AA");
                        state ++;
                    }
                    l.unlock();
                }
            }
        });
        Thread B = new Thread(new Runnable(){
            @Override
            public void run() {
                while (state<=40) {
                    l.lock();
                    if(state%4==1){
                        System.out.print("BB");
                        state ++;
                    }
                    l.unlock();
                }
            }
        });
        Thread C = new Thread(new Runnable(){
            @Override
            public void run() {
                while (state<=40) {
                    l.lock();
                    if(state%4==2){
                        System.out.print("CC");
                        state ++;
                    }
                    l.unlock();
                }
            }
        });
        Thread D = new Thread(new Runnable(){
            @Override
            public void run() {
                while (state<=40) {
                    l.lock();
                    if(state%4==3){
                        System.out.println("DD");
                        state ++;
                    }
                    l.unlock();
                }
            }
        });
        A.start();
        B.start();
        C.start();
        D.start();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读