SDS技术面试课题分享

最近参加了三星数据系统(SDS)在西安的招聘,通过了变态的GSAT考试之后,SDS给了一道面试课题(请摸这里下载),

通过一道编程题来考察应聘者的素质很实际,个人感觉题出的不错,题目总共有6个步骤,每个步骤都会增加新的需求,考察

应聘者知识体系的完善性,编写程序的扩展性(很重要的考点,程序员的工作过程不也是一直在接受新的需求么)。

下面我把自己完成的思路写一下,最后再说一下面试的过程和每个过程中遇到的问题。

题目分析

完成这个题目,每个人都会有不同的解决方法,我本身也不是一个有经验的设计者,到后边的步骤,发现也有很多地方考虑的
不完善,也希望大家提出不同的想法,一起讨论,我的好多实现也很差,并不完美。我直接上传最终的版本( 请摸这里下载)。
设计过程中要考虑考虑后期的扩展性, OCP原则在这个题目中表现的淋漓尽致。

STEP1

STEP1中要求实现一个基础的subway,题目请自己下载阅读。
STEP1中我考虑到的地方有:
1.首先要把UI和程序的逻辑分开
2.菜单我使用的是java的枚举类型
3.程序运行起来的时候有多个状态,要使用state模式
4.有些菜单有复杂的输入验证,使用proxy模式

STEP2

STEP2增加了输入ticket数量功能和refunds找零功能。
1.输入ticket数量功能,可以通过在ticket对象中增加一个属性来实现,这里其实也考验STEP1中的UI设计,能不能轻松的加入输入
ticket数量的功能
2.refunds找零功能,要求给客户找追少的钱。这里我考虑到两点,第一要把钱的面值放到配置文件中,防止后期增加钱币面值要
修改程序,第二是要使用strategy模式,把找零的策略独立出来,以备后期修改找零策略。

STEP3

STEP3要求增加保存购票记录功能,要求保存在文件中。
看到这个要求时,我考虑到后面的步骤要把购票记录保存在DB中,所以这里应该设计一个接口,来完成购票记录的读写。

STEP4

STEP4要求设计一个数据库,这里要说一下,我为了图方便,只实现一个表的数据库。在面试的时候,技术官说没有从我的SQL
脚本中看出DB设计能力,让我现在画出来,结果比较悲剧。

STEP5

为DB实现STEP3中设计接口,如果STEP3有接口的话,STEP5和STEP6会很轻松。

STEP6

实现一个STEP3中设计接口的factory,按照配置文件中的选择,来生成接口对象。这样达到数据库和文件直接的随意切换。

招聘过程

1.简历筛选

这个没什么好说的,三星是韩国企业,通过CET-6能大大增加简历筛选通过的机会

2.GSAT考试

很变态的考试,考试是中文的,47分钟内完成25数字题和25道逻辑推理题,平均不到1分钟完成1道题目,有些题目可能一份中
都读不完。三星考试的要求是把数字题和逻辑推理题分开答,但是是写在同一张答题卡上,所以我建议大家可以考虑优先答自己
会的题目,不用完全按照三星的要求分配答题时间,坊间传言打错扣分。面试的时候我去求证了一下HR,也没有明确给我一个答
案。但是也获得了一些有效信息,对于社会招聘来说,GSAT标准要降低很多很多,但是对于应届毕业生来说,GSAT很重要,筛
选的很严格。我在大四的时候参加过一次,当然没有通过了,然后我就乖乖的上研究生了。

3.技术面试课题

这个就是上面说的。

4.技术面试

两个韩国技术官,一个韩语翻译。
我精心准备了一个presentation,本想自己完全主导这次面试,结果跟我想的不一样,过程是他们提问,我回答他们的问题。翻译
官有个提示很重要,说一句话,就听下来让他翻译,这样能保证双方交流顺畅。
对于英语来说,大家不要担心,其实韩国人的母语也不是英语,不一定说的很好,我面试时就要求用英文面试,被韩国人断然拒绝
了。
这种就一个主题的面试,其实相对来说还比较轻松,不会出现那种面试官天马行空的问,然后面试者回答不上来的情况。当然前提
是大家用心准备,从题目中把难点和要点挖掘出来。刚刚进入面试间的时候我也很紧张,当吧啦吧啦讨论技术问题时,我就完全放
松下来了。

5.人力面试

这个也不详细说了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值