今日去面试,结果应该是不太理想,三天之内给答复。
因为还是比较看好这家公司的,所以有些不甘心。
事后回想了一下,问的几个问题,回答的不够完美。
面试题主要是一些基础的问题
像什么VewData 和 ViewBage的区别,之类的基础问题。挺简单的。
面试题基本上都做出来了,还有写一个 字符倒排序 的 算法。
这些网上的那些面试题都是,感兴趣的可以查一下。
然后面试官,问了我四个问题。
1.学生抢课的时候和抢购物品差不多,如何规避并发状况。
回答的是:前端加锁,后端数据库用事物控制,当一个学生,进入抢客类那么另一个同学处于等待状态,等着这个学生用事物执行完排课后,下一个同学进来,当学生进入数据库事物的时候 验证 是否还有课,没课了回滚。
还有就是用消息列队也可以解决。
下午查了查,目前还是没有想到更好的解决办法,总觉得这样排队的人太多,一个一个执行的话,效率很低。
相关解决方案:http://blog.csdn.net/u010942020/article/details/52044790
2.有个学生抓了老师的包,然后用老师的UID改成绩。
回答:在同一台电脑上么?那怎么会抓到老师的包?这里有些疑问,难道获取成绩的页面还有用UID修改成绩的方法?
面试者然后这些不用管。 我的回答是,这个加密应该能处理吧(想了想,加密后同样的发送加密包也是一样效果。) 后来没想倒 罢之。
回来查了一下,网上的说法是,不对称加密,或者加时间戳。(时间戳这个,请求距离差个几秒也是有可能的,这样失败率有点高,有待考虑)
我想了想,其实可以加一个请求序列,放在页面的隐藏属性当中,当页面发起请求的时候,连同按钮一起调用这个请求序列,这样函数接到的也是带有这个序列的数据,序列是加密的,如果序列对不上,那么就是非法请求。
3.有一张表有10条数据,为什么Nhibernate执行了11次。
回答是:这个我还不知道。我也截过Nhibernate生成的SQL似乎是都是列,没有查询11次的时候啊。这题我不会,可能是我没听明白题的意思,罢之。
路上想了想似乎是 SQL的 查询过程?或者是Nhibernate 的外键?没想通。
4.让我写个单例,一着急这么简单的东西居然忘了。
哈哈哈,没写上来(我新想,很简单,好像就是声明一个方法就可以了,这么简单不会吧,然后没写,时间太长没写,忘了)还问了问面试官,单例是啥来着,他简单说了下,我还是没写上来,哎,回来默写了三遍。