今天面试了上海花**电子商务有限公司,面试的时候表现的不太好,等晚上坐车回想起来,发现我的思路出现了一个大问题。
1、两个数组有10000条数据,里面装满了随机数字,取交集
这个我只回答出两个数组循环遍历,刚才在网上搜了一下说是一共三种方法,等会我研究一下。
2、现有10000条数据的大map一个,key为订单号,value为装满订单商品信息的list集合,商品信息包含商品id和购买商品的数量,让我统计整个map中的购买相同商品的订单数量
3、java中有哪些线程安全和线程不安全的
4、在文件夹中有一万个文件,按照1到10000来命名,每个文件中都有一个随机数,如何获取这一万个文件中随机数的总和
5、spring事务传递规则,在service中,方法A有事务,方法B无事务,在外部调用B时,B又内部调用了A,问这样会产生事务吗?那么在外部调用B,B再内部调用A,这样会产生事务吗?
6、Spring 声明事务方法?
7、springboot在未做特殊配置的情况下,在controller中能接收到其他服务通过http请求中自定义的请求头吗?
8、两笔订单在未使用事务的情况下,从库存中减去商品的库存,如何保证数据的有效性?例子:商品库存100,两个订单凑巧同时减去库存,一个减去库存1一个减去库存2,操作过后,数据库出现剩余库存为99或者98,请问如何解决
这里主要说问题二,刚开始脑子懵逼,思路出现错误,想重写订单商品的tostring和hashcode方法,通过list来进行对比,也不知道是不是记忆出现混乱,我记得如果list中对象相等是可以相互做比较的。然后啪啪打脸..... 回家我查了一下1.8的源码 发现Arraylist\hashmap\hashtable都重写了equals方法,也就是可以直接进行list内中中的对比,俺没错
然后我就懵了一阵子 等我反映过来,我已经在去玩的地铁上 想着发现问题也不难呀,如果先遍历map将订单list集合按照订单零件的id来进行排序,然后将所有订单零件的id和购买的数量拼接成特定格式的字符串,统统的塞进list数据中,最后操作list就可以获取到购买相同商品的订单数量,然后我将思路通过boss的沟通方式发了过去,对方看了后,说如果用hashmap会更简单,当时没在意。玩了整个下午,回家公交车上,回想今天的面试,发现他说的对,也发现我的编程思路出现了问题。
自我接手上个项目以来,因为基本原先所有业务参数传递都是使用map封装,所以我对map产生了严重的抗拒感,除非特殊情况,能不用map的我都不用map(因为我认为map什么都可以装,不利于后期代码维护),以至于我思考解决问题的方案时,都会下意识的把map这个数据结构给剔除掉,这个太危险了,我一直没有察觉到,到今天才反应过来。每个数据结构都有他存在的原因,不能因为个人的喜好来放弃一个数据结构,否则就会出现我这种思维的僵化,考虑问题不全面问题。
休息几天 继续找公司面试去...
裸辞一时爽,面试两行泪