A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© inception 中级黑马   /  2014-11-6 16:50  /  9424 人查看  /  50 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

感谢张琼老师的面试。还要感谢流程中的其他老师。谢谢!
3号问了50期第二批有多少名额。老师说有20个左右。然后我就申请了面试。4号5号准备了两天。
今天9点30,老师发给我2个题,要求半小时完成。
1、把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,例如:
        a:  21 次
        b:  15 次
        c: 15 次
        把:  7 次
        当:  9 次
        前:  3 次
        ,:30 次
2、声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。


      30多分钟做了第一题。另一题没完成(老师是给时间我们多做会的,我建议能写点什么就多写点。就算你写不出整体思路也可以写点比如implements Runnable{    public void run(){ ... }   } 等,然后和老师说不会做。也好过我只写了几个涉及内容的单词sychronized  Thread sleep random ,然后和老师说没思路)。
      第一题以前就存在电脑上了,只是一直没做。只做过类似的题:“abcdefavzc”以a(2)b(1)c(2)...的形式打印。正巧昨天晚上自己独立把这个题做出来了。但今天写的时候。思路都能写出来。但写代码的时候这搞下那改下。感觉写代码思绪像是在飞一样(SO在最后老师就问了我敲代码敲得多不),好在最后搞出来了。
     一运行,目的文件中是乱码。不知道错在了哪。还好昨天做CopyDir时忘了close写入流,有些数据没有刷新到目的中。代码运行正常。却出现了图片显示不全的问题。还好晚上瞅了好久找到了问题。今天这题也是差不多的问题。没写换行newLine();写入到目的中出现的是乱码。这种不报错的问题。简直!还好找到了问题所在。—————所以大家要多注意小细节问题。关流,换行。。。等等
    然后老师就问这两题怎么做的。涉及到哪些知识点,还问了反射。暴力反射。集合框架。
    最后是自我介绍...
/*
* 分析:
* 1.文本到文本用到读取写入字符流
* 2.获取对应 字符的次数并排序, a:  21 键值关系,可以用TreeMap
*
* 3.读取文本一行每个字符。
*  查找Map是是否存在,不存在put(key,1)不存在就put(key,value+1) 将所有数据都存到Map中
*  
* 4.然后在取出Map中元素,写入到目的文本中
* */
import java.io.*;
import java.util.*;
public class Test1 {

        public static void main(String[] args) throws Exception{
                TreeMap<Character , Integer> tm = new TreeMap<Character , Integer> ();

                BufferedReader bufr = new BufferedReader(new FileReader("D:\\Test.txt"));
                BufferedWriter bufw = new BufferedWriter(new FileWriter("D:\\Test1.txt"));
               
                String line = null;
                while((line=bufr.readLine())!=null){

                        store(line,tm);// 将每一行数据存入集合中
                }
                bufr.close();
               
                // 将存在Map集合中的元素取出 ,存入 bufw
                Set<Character> keySet = tm.keySet();
                Iterator<Character> it = keySet.iterator();
                while(it.hasNext()){
                        Character key = it.next();
                        Integer value = tm.get(key);
                       
                        bufw.write(key+": "+value);// 存入目的文本中
                        bufw.newLine();
                }
                bufw.close();
        }
        // 创建读取一行数据的方法 "abcd"
        public static void store(String line, TreeMap<Character , Integer> tm){
                // 字符串转换为字符数组
                char[] ch = line.toCharArray();
               
                // 遍历字符数组,
                for(int i=0; i<ch.length; i++){
                        // 字符作为键,获取值
                        Character key = ch[i];
                        Integer value = tm.get(key);
                        if(value==null){
                                tm.put(key, 1);
                        }else
                                tm.put(key, value+1);
                }
        }
}


50 个回复

正序浏览
老夫和你差不多  第一次面试  可惜诶过    也是两道题  第一题 反射会做 第二题包装类 不会   然后 问了几个问题  再然后  我们就商量了一下二次面试时间~~~~~~~~~~~~~~555555555555555555555555
回复 使用道具 举报
很好的分享
回复 使用道具 举报
inception 发表于 2014-11-9 12:13
我想应该可以,我没有测试。
存到stringBuffer,然后按er数组中元素查找。应该可以。不过er中的元素应该是 ...

我这第二个数组是自己定义所要查询的几个字符
回复 使用道具 举报
感谢分享!
回复 使用道具 举报
视频面试吗
回复 使用道具 举报
加油~大学也是玩LOL去了,不过现在不玩了,
回复 使用道具 举报
inception 来自手机 中级黑马 2014-11-9 14:32:49
45#
黄宽 发表于 2014-11-9 14:07
查找Map是是否存在,不存在put(key,1)不存在就put(key,value+1) 将所有数据都存到Map中?感觉楼主有点粗 ...

哈哈!谢谢指正。
回复 使用道具 举报
  查找Map是是否存在,不存在put(key,1)不存在就put(key,value+1) 将所有数据都存到Map中?感觉楼主有点粗枝大叶了吧,不要误导我们啊,应该是存在就put(key,value+1) :L
回复 使用道具 举报
感觉蛮有难度的啊,我得加油了
回复 使用道具 举报
inception 发表于 2014-11-9 12:13
我想应该可以,我没有测试。
存到stringBuffer,然后按er数组中元素查找。应该可以。不过er中的元素应该是 ...

谢谢点评!
回复 使用道具 举报
inception 来自手机 中级黑马 2014-11-9 12:15:57
41#
海阔天空ZJ 发表于 2014-11-9 08:55
我晕,30分钟敲2题代码,亚历山大啊。这个代码可以复制黏贴之前写过的吗?全部重新敲,搞不定啊 ...

qq远程桌面了
回复 使用道具 举报
inception 来自手机 中级黑马 2014-11-9 12:13:32
40#
scoto263 发表于 2014-11-9 01:14
自己试着做了一个不知道对不对。。
public class demo3 {
        public static void main(String args[]) throw ...

我想应该可以,我没有测试。
存到stringBuffer,然后按er数组中元素查找。应该可以。不过er中的元素应该是cc数组去重复后的元素。

然后建议定义数组直接ch1 ch2好些,cc  er有点乱
tochu(cc,er);
private static void tochu(char[] cc, char[] cc2) {
cc er cc2看得真乱,

tochu(ch1,ch2);
private static void tochu(char[] ch1, char[] ch2) 

for循环用ij  xy   mn  不好些,m ii 也太跳了,
回复 使用道具 举报
inception 发表于 2014-11-8 14:18
还好吧,面试前好好准备,放松心态,进不了,下期再来,我面试前2天上午基本睡觉,下午看面向对象,晚上 ...

那你入学了咯?
回复 使用道具 举报
我晕,30分钟敲2题代码,亚历山大啊。这个代码可以复制黏贴之前写过的吗?全部重新敲,搞不定啊
回复 使用道具 举报
谢谢楼主的分享
回复 使用道具 举报
自己试着做了一个不知道对不对。。
public class demo3 {
        public static void main(String args[]) throws IOException{
                BufferedReader bf=new BufferedReader(new FileReader("D:\\111.txt"));
               
                StringBuffer line=new StringBuffer();
                String nextLine;
                while((nextLine=bf.readLine())!=null){
                        line.append(nextLine);
                       
                }
                bf.close();
               
                char[] cc=line.toString().toCharArray();
                char[] er={'a','c','间'};
               
                tochu(cc,er);
               
        }

        private static void tochu(char[] cc, char[] cc2) {
               
                for(int m=0;m<cc2.length;m++){
                        int i=0;
                for(int ii=0;ii<cc.length;ii++){
                        if(cc2[m]==cc[ii]){
                                i=i+1;
                        }
                }
                        System.err.println("出现的字符"+cc2[m]+"为"+i+"次");
                }
               
        }

}
回复 使用道具 举报
过来看看顺便把题目瞧瞧,看看你的思路撒的
回复 使用道具 举报
这些都是最基础的了 不知道有没有什么稍微难的好准备下  
回复 使用道具 举报
面试的时候是不是太紧张了
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马