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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

lx610

中级黑马

  • 黑马币:56

  • 帖子:16

  • 精华:0

二楼放题

16 个回复

倒序浏览
第一次面试的两题
====================================
**假设有300个人(从1-300编号)要过地铁安检,
         * 地铁站有两个安检口(用两个线程表示,设置安检口
         * 名称"安检口A和安检口B"),
         * 用多线程模拟该过程,
         * 打印"XX号人员正在通过安检口X
===============================25分钟内做完。
第二题
创建一个Person类,属性有2个,
* 分别是:name(String类型)
* ,age(int类型)。
定义一个String
数组str[]={“奶昔”,”加多宝”,”啤酒”,”白酒”}
用来代表喝的饮料。
a.创建3个Person对象,
从控制台获取属性值,输入格式为:姓名,年龄。
(利用有参构造赋值)
b.将这3个Person对象存入到Map集合中(map<人,
要和的饮料>)
其中key是Person对象,对应的value值需要随机
(random)从str数组中获取
(如果Person对象的年龄不满18岁则不能喝酒,
也就是说如果该对象年龄小于18岁那么获取到的饮料是白酒或者啤酒则必须继续获取,直到获取到其它饮料为止)
c.        将map中,所有信息写到当前
项目person_info.txt下
写入格式如下:
姓名:年龄:饮料
比如:
                        李四:15:奶昔
                             赵六:10:加多宝
                        张三:30:啤酒
====================================30分钟内做完。这题我跪了,死在随机选择和淘汰酒类的设计上了。
回复 使用道具 举报
下面是我的面试时候的答案:
第一题
public static void main(String[] args) {
                anJiankou anjiankou1 = new anJiankou();
                anJiankou anjiankou2 = new anJiankou();
                anjiankou1.setName("安检口A");
                anjiankou2.setName("安检口B");
                anjiankou1.start();
                anjiankou2.start();
        }

}

class anJiankou extends Thread {
        public static int renshu =300;

        public void run(){
                while(true){
                        synchronized (anJiankou.class){       
                        if(renshu<=0){
                                break;
                        }
                       
                                System.out.println(Thread.currentThread().getName()+"第"+renshu--+"号人员正在通过");
                        }
                }
               
        }
回复 使用道具 举报
第二题面试时候的答案,还有结束后自己再重新做的答案
面试时候的答案(错误回答):(在限时的情况下,脑子真的会抽。。。。)
public static void main(String[] args) throws IOException {
                String[] drink ={"奶昔","加多宝","啤酒","白酒"};
               
                Person a = new Person("张三",12);
                Person b = new Person("李四",14);
                Person c = new Person("王五",18);
                HashMap<Person,String> mp = new HashMap<>();
               
                method(a,mp);
                method(b,mp);
                method(c,mp);
                /*Iterator it = mp.keySet().iterator();
                while(it.hasNext())
                {
                        Person key = (Person) it.next();
                        System.out.println(key+mp.get(key));
                }*/
               
               
               
                FileWriter fw = new FileWriter("person_info.txt");
                BufferedWriter bw = new BufferedWriter(fw);
               
                for (Person p : mp.keySet()) {
                        System.out.println(p+mp.get(p));
                        String per = String.valueOf(p);
                        String mps =mp.get(p);
                        System.out.println(per);
                        String perall =per+mps;
                        System.out.println(perall);
                        bw.write(perall);
                        bw.newLine();
                       
                }
                bw.close();
               
                       
        }
        public static void method(Person p,HashMap<Person,String> mp){
        Random r = new Random();
        int n = r.nextInt(4);
        String[] drink ={"奶昔","加多宝","啤酒","白酒"};
        mp.put(p, drink[n])        ;
        if(p.age<18&(drink[n]==("白酒")||drink[n]=="啤酒")){
        mp.remove(p);       
        }
        if(!mp.containsKey(p)){
                method(p,mp);
        }
        }
       

               
}

class Person implements Comparable{
        String name;
        int age;
       
        public Person() {
                super();
               
        }
       
        public Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }

        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
               
               
        }
       
       
       
       

       

        @Override
        public String toString() {
                return "姓名" + name + ": 年龄" + age+":" ;
        }

       
       
       
}





======================================考完回去自己写的
public static void main(String[] args) throws IOException {
                Person p1 = new Person("zhangsan",26);
                Person p2 = new Person("lisi",14);
                Person p3 = new Person("Wangwu",15);
                String[] str ={"奶昔","加多宝","啤酒","白酒"};
                HashMap<Person,String> tm = new HashMap<Person, String>();
                getDrink(p1, str, tm);
                getDrink(p2, str, tm);
                getDrink(p3, str, tm);
                BufferedWriter br = new  BufferedWriter(new FileWriter("PersonDrink.txt"));
                for (Person p : tm.keySet()) {
                        br.write(p.toString() +":" +tm.get(p));
                        br.newLine();
                }
                for (Person p : tm.keySet()) {
                        System.out.println(p.toString() +":" +tm.get(p));
                       
                }
                br.close();
        }

        public static void getDrink(Person p1, String[] str,
                        HashMap<Person, String> tm) {
                Random r = new Random();
                int num = r.nextInt(4);
                tm.put(p1, str[num]);
                if (p1.getAge()<18) {
                        while(tm.get(p1)=="啤酒"||tm.get(p1)=="白酒") {
                                num = r.nextInt(4);
                                tm.put(p1, str[num]);
                        }
                }
        }

}

class Person{
        String name;
        int age;
        Person() {
        }
        Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        @Override
        public String toString() {
                return  name + ":"+age;
        }
       
       
}
回复 使用道具 举报
流程什么样的啊,怎么就直接面试的?不是好像第一步是什么测试区测试?
回复 使用道具 举报
Ake丶 发表于 2016-7-11 16:35
流程什么样的啊,怎么就直接面试的?不是好像第一步是什么测试区测试?

是先做自测,再做习题,然后面试。我的技术分不够,不能去面试的讨论区
回复 使用道具 举报
lx610 中级黑马 2016-7-11 16:58:02
7#
Ake丶 发表于 2016-7-11 16:35
流程什么样的啊,怎么就直接面试的?不是好像第一步是什么测试区测试?

是先做自测,再做习题,然后面试。我的技术分不够,不能去面试的讨论区
回复 使用道具 举报
Ake丶 中级黑马 2016-7-11 17:37:09
8#
这是我第二题的代码:
String[] str = {"奶昔","加多宝","啤酒","白酒"};
                Scanner sc = new Scanner(System.in);
                ArrayList<Person> list = new ArrayList<>();
                System.out.println("请输入三位人员信息:格式如下:姓名,年龄");
                while(list.size()<3) {
                        String line = sc.nextLine();
                        String[] s = line.split(",");
                        list.add(new Person(s[0],Integer.parseInt(s[1])));
                }
                HashMap<Person,String> hm = new HashMap<>();
                while(hm.size()<3) {
                        for (Person person : list) {
                                while(true) {
                                        int i = new Random().nextInt(4);
                                        if(person.getAge() >= 18) {
                                                hm.put(person, str[i]);
                                                break;
                                        }
                                        else {
                                                if(i<2) {
                                                        hm.put(person, str[i]);
                                                        break;
                                                }
                                        }
                                }
                        }
                }

                File file = new File("person_info.txt");
                PrintWriter pw = new PrintWriter(file);
                pw.println("姓名:年龄:饮料");
                for (Map.Entry<Person, String> m : hm.entrySet()) {
                        pw.println(m.getKey().toString()+":"+m.getValue());
                }
                pw.close();
        }
回复 使用道具 举报
本帖最后由 一个大西瓜 于 2016-7-17 00:33 编辑

我的第二题


class Pers
{
        private String name;
        private int age;
        public Pers(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        @Override
        public String toString() {
                return "Pers [name=" + name + ", age=" + age + "]";
        }
       
}


public class 练习 {
       
        public static void main(String[] args) throws IOException
        {
                System.out.println("请输入三个Person对象");
                ArrayList<Pers> al = getInfo();
                Map<Pers,String> m = putInMap(al);
               
               
                //将数据放入文件中
                BufferedWriter bufw = new BufferedWriter(new FileWriter("person_info.txt",true));
                Set<Pers> keySet = m.keySet();
                for(Pers p:keySet)
                {
                        String info = p.toString()+m.get(p);
                        bufw.write(info);
                        bufw.newLine();
                        bufw.flush();
                }
                bufw.close();
        }
       
        //将数据放入map集合
        public static Map<Pers,String> putInMap(ArrayList<Pers> al)
        {
                String str[]={"奶昔","加多宝","啤酒","白酒"};
                Random r = new Random();
                Map<Pers,String> m = new HashMap<Pers,String>();
                for(Pers a:al)
                {
                        Pers p = a;
                        String s = str[r.nextInt(4)];
                        while(p.getAge()<18 && s.equals("白酒")||s.equals("啤酒"))   //注意判断条件
                        {
                                s = str[r.nextInt(4)];
                        }
                        m.put(p, s);
                }
                return m;
        }
       
        //从控制台接受数据并放入集合
        public static ArrayList<Pers> getInfo()
        {
                ArrayList<Pers> al = new ArrayList<Pers>();
                Scanner sc = new Scanner(System.in);
                while(sc.hasNext())
                {
                        String s = sc.nextLine();
                        if(s.equals("over"))
                                break;
                        String[] ss = s.split(":");//千万注意大小写
                        al.add(new Pers(ss[0],Integer.parseInt(ss[1])));
                       
                }
                sc.close();
                return al;
        }

}

回复 使用道具 举报
我也是,自己考黑马的javaee的就业班的,你的帖子对我有很大帮助。多谢多谢
回复 使用道具 举报
话说楼主最后总分多少啊
回复 使用道具 举报
le李 中级黑马 2016-7-18 15:09:59
12#
你是后付费吧~
回复 使用道具 举报
看起来强强的,学习学习,仰望大神
回复 使用道具 举报
ghgddsfsdfsdfsdfsdfsdfs
回复 使用道具 举报
题目有干货,谢谢楼主
回复 使用道具 举报
lx610 发表于 2016-7-11 16:58
是先做自测,再做习题,然后面试。我的技术分不够,不能去面试的讨论区 ...

还有面试讨论区啊没看到啊。。。给个地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马