1.1 7k面试题---交通灯管理系统(自己的理解)
首先使用名词提炼发,汽车过马路,有汽车,马路,红绿灯,红绿灯的控制系统四个名词。车通过红绿灯过马路,车只有开启和停下的功能,他过
马路这个动作不是他控制的,是通过马路来判断的,马路上面有车的集合,某个时刻,马路上少了一辆车,就判断说车过了红绿灯。创建路的对象road,路
是代表的某个方向的名字,所以在创建对象时加入name参数表示是哪个方向上的路,当我们创建路的对象的时候,创建某个方位的路的对象,那条路上就应
该有产生车和车过马路的共性行为,所以要创建两个线程来分别操作产生车和定时器来移除车,这里使用到Executors类,能产生单线程和控制器,控制器
通过判断这条路当前的灯是否为绿来让车同行,并确定同行的实现。
再来说红绿灯这个类,我们可以用枚举来实现,因为有12条路,就应该有12个灯,对象是固定取值的,由于当前路上的灯亮时,对面路上的灯也会
亮,当前路上灯为红时,下一路口上的灯为绿,所以我们可以创建一个有参的构造,参数分别为下一个路口的灯,对面路口的灯和当前灯的明暗情况,由于
在调用时下面的对象还未创建,所以参数用字符串表示。灯有亮和不亮这两个属性。
还需要定义一个控制系统,设置成单例模式,来构造第一个为绿的灯,启动一个定时器,启动一个定时器,每隔10秒将当前灯变红和将下一个灯变
绿。主函数创建路的对象,把路的名字作为参数循环穿进去,开启控制系统。
1.2 7k面试题---银行业务系统(这个是抄的张老师的PPT,自己没时间总结)
首先明确对象,售票窗口,号码产生机器,号码管理机器
号码产生器只有一个对象,所以采用单例,定义三个成员变量分别指向三个NumberManager对象,分别表示普通、快速和VIP客户的号码管理器,定
义三个对应的方法来返回这三个NumberManager对象。
号码管理器定义一个用于存储上一个客户号码的成员变量和用于存储所有等待服务的客户号码的队列集合。
定义一个产生新号码的方法和获取马上要为之服务的号码的方法,这两个方法被不同的线程操作了相同的数据,所以,要进行同步
售票窗口,根据服务窗口的类别分别循环调用三个不同的方法所以开启一个线程,使用Executors类。线程里面根据不同的客户来执行售票方法,
所以号码的类型需要使用枚举,定义三种类型的对象,如果是快速窗口,首先获得快速号码管理器对象,得到马上要服务的号码,如果没有号码产生,则执
行普通窗口的方法
主函数里面用for循环创建出4个普通窗口,再创建出1个快速窗口和一个VIP窗口。接着再创建三个定时器,分别定时去创建新的普通客户号码、新
的快速客户号码、新的VIP客户号码
|
|