黑马程序员_7月面试
来源:互联网 发布:html里写php代码 编辑:程序博客网 时间:2024/06/05 19:14
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条路线,并产生路上汽车的集合,汽车上路,在获取灯对象并判断灯是否为亮,然后创建交通灯控制器对象,交通灯控制器对象,对象中的当前灯变绿。路上的车判断灯为绿,则穿过路口。四个灯轮换变绿,相应的灯同样变绿。
- 黑马程序员_7月面试
- 黑马程序员_7月面试题之银行业务调度系统
- 黑马程序员_高薪技术_7
- 程序员面试宝典_7.2 _面试例题9
- 黑马程序员 _7 OC基础 继承、多态、分类
- 黑马程序员-面试技巧
- 黑马程序员_java面试总结
- 黑马程序员_面试问题
- 复盘_7月第2周
- 黑马程序员_12月12日
- 黑马程序员_12月13日
- 黑马程序员_12月14日
- 黑马程序员_12月15日
- 黑马程序员_12月16日
- 黑马程序员_12月17日
- 黑马程序员_12月18日
- 黑马程序员_12月19日
- 黑马程序员_12月20日
- 黑马程序员_面向对象思想概述和三大特性之一——封装
- MySQL显示中文乱码?????的解决方案
- JDBC的第一个版本,不使用配置文件。使用jar文件一个
- Linux命令--cut
- 【数据结构】第3周 字符串 4:前缀中的周期
- 黑马程序员_7月面试
- VB查询数据库之登陆窗体——机房收费总结(一)
- 杭电1171(一维背包+完全背包)
- ssh(struts2.3.8+spring3.2+heibernate4.1+annotation零配置
- How to Apply for an iOS Developer Job
- Linux C学习笔记-排序算法2-冒泡排序
- ubuntu下安装Apache+PHP+Mysql
- ARM寄存器简介
- mipsel-uclibc交叉编译dvbspi