黑马程序员_7月面试

来源:互联网 发布:html里写php代码 编辑:程序博客网 时间:2024/06/05 19:14
------- android培训java培训、期待与您交流! ----------

7月面试

 1.1程序员网校

      程序员网校必将精心制作每个技术点的文字与视频教程,尽可能一针见血的讲解清楚问题的本质和最大限度地学习者的时间,让程序员把富余的时间投入到工作和生活中去,为提高程序员的生活状况尽最大努力。

 1.2交通灯管理系统

      1.2.1交通灯管理系统的业务和需求分析

              总共12条路线,右转弯的4条路线的控制灯可以假设称为常绿状态。另外,其他的8条路线两两成对的,可以归为四组,所以,程序只需考虑图中标注了数字号的4条路线的控制灯的切换顺序,这4条路线相反方向的路线的控制灯跟随这4条路线切换,不必额外考虑。

      1.2.2精通面向对象的分析和设计的秘诀

              谁拥有数据,谁就对外提供操作数据的方法。

             eg:两块石头磨成一把刀,石刀可以砍树,砍成木材,木材做成椅子。

       1.2.3交通灯的控制系统的类的实现细节分析

             设计一个lamp类来表示一个交通灯,每一个交通灯都维护一个状态:红,绿 ;所以交通灯:自己红绿状态变量;

             总共有12条路线,所以,系统中总共要产生12个交通灯。除了右拐方向的其他8条路线的灯,他们两两成对的,可以归为4组,所以,在编程处理时,只要从这4组中 各取一个灯,对这4个灯依次变红,与这4个灯方向对应的灯则随着变化还有下一个灯随着变化,因此,要有两个变量分别记录对应方向的灯,和下一个灯。

             交通灯控制器控制当前的灯变红,变绿。

       1.2.4编写road类中模拟汽车上路的代码

             变量:每个road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。

             构造方法:在road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车。

             在road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除

       1.2.5定义器与road类中模拟汽车穿过路口

             Road类的代码:List<String> vechicles=new ArrayList<String>();

                                       private String name=null;

                                       public Road(String name)

                                       {

                                           this.name=name;

                                           ExecutorService pool=Executors.newSingleThreadExecutor();

                                           pool.execute(new Runnable(){

                                                    public void run(){

                                                       for(int i=1;i<1000;i++)

                                                       {

                                                             Thread.sleep((new Random().nextInt(10)+1)*1000);   

                                                              vechicles.add(Road.this.name+"_"+i);

                                                        } 

                                              }

                                           });

                                          ScheduleExecutorService timer= Executors.newScheduledThreadPool(1);

                                           timer.schduleAtFixedRate(

                                               new Runnable(){

                                                 public void run(){

                                                   if(vechicles.size()>0){

                                                          boolean lighted=true;

                                                          if(lighted)

                                                           System.out.println(vechicles.remove(0)+" is traversing");

                                                    },1,1,TimeUnit.SECONDS);

                                                }

                                           );

                                       }

       1.2.6编写表示交通灯的lamp类的代码

              利用枚举:S2N,S2W,E2W,E2S,

                                N2S,N2E,W2E,W2N,

                                 S2E,E2N,N2W,W2S;

       1.2.7编写交通灯控制器的类与总成测试

               LampController类的编写:

                     整个系统中只能有一套交通控制系统,所以,lampController类最好是设计成单例。

                     LampController构造方法中要设定第一个绿的灯;

                     lampController对象的Start方法中将当前灯变绿,然后启动一个定时器,每隔10秒将当前灯变红和将下一个灯变绿。

             mainClass类的编写:

                      利用for循环创建代表12条路线的对象。接着再获得LampController对象并调用其start方法。

       总结:交通灯管理系统串联一下,首先,主函数创建12条路线,并产生路上汽车的集合,汽车上路,在获取灯对象并判断灯是否为亮,然后创建交通灯控制器对象,交通灯控制器对象,对象中的当前灯变绿。路上的车判断灯为绿,则穿过路口。四个灯轮换变绿,相应的灯同样变绿。

原创粉丝点击