12.13周报

12.9:完成了seo配置接口的开发和详情接口的开发;由于孙老师已经将多语言保存和获取的工具写好,所以这个任务并不难。在写完接口后,我看了多语言工具的源码,它是通过反射来赋值和获取的,这样一来,多语言获取的操作非常方便,并且可以集中维护;
12.10:解决seo保存时出现的bug;在保存seo接口的时候,出现了无法清空的现象。seo的配置是可以清空的,但是保存空字符串的时候,接口返回仍然是原来的值;看代码发现,这是因为保存多语言的时候,增加了一个strutil.isBlank判断,导致空字符串无法保存到数据库,和孙老师讨论后,将判断改成了ObjectUtil.isNull,解决了这一问题。
12.11:完成不登陆留资接口改造;目前已有的两种留资方式,是官网登录留资和不登陆留资,而营销落地页留资,并没有商品id;而按照原来的留资,没有商品id就无法获取项目来源,CFA或者Degree,因此需要对留资接口进行改造,而其他情况下的逻辑又不能变;所以我增加了一层判断,通过判断有无商品id,去获取商品,没有商品id的话,就去通过感兴趣项目判断是CFA或者Degree;
12.12:优化已有的代码结构,设计用户编辑的command实体;在私有方法中,对于if else的使用,完全可以省略第二个esle,在满足第一个if条件后,直接return;代码看起来更美观,并且,形同的部分可以抽取成公共方法,避免出现重复代码;
在设计用户编辑command对象的时候,我将所有共有的属性,抽取成了base类,然后再通过不同的场景,继承这个类然后扩展,做到了里氏原则;
12.13:对用户编辑需求兼容之前的添加备注接口;由于之前考虑的不够,添加备注功能和用户编辑功能整体的逻辑是一样的,我想直接在添加备注这个接口上进行改造,而一旦改造,就意味着原来的接口不能用,将会导致自动化测试等报错,造成一定的影响,因此旧接口需要保留,重新开一个新接口,去实现功能,然后替换掉原有的接口;等配合前端改好之后,再将旧的接口下掉,做到兼容性;
全部评论

相关推荐

12-06 20:42
已编辑
中山大学 前端工程师
现在秋招已结束,整理发一些面经笔经,回馈一下牛客社区。准备:9.3https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fcompany%3FcurrentTab%3Drecommand%26jobId%3D100%26selectStatus%3D0%26tagIds%3D9079这里一共有六份真题试卷。刚刚尝试在两个小时内回答腾讯音乐娱乐集团2024校园招聘-前端开发笔试(II),结果三道算法只做出了两道。后面看题解发现第三道直接暴力枚举就行了,第二道确实有点难度(甚至是暴力枚举都很难写)。但是我第三道由于被第二道搞没了心态,就直接放弃了(真在笔试的时候千万别放弃)。所以客观来看我还是能做出三道的。刚才仔细看了一下第二道题,应该是属于动态规划,感觉其实也没有想象中那么难,可以认为是需要进行细致分类讨论的子问题分解递推求解。虽然我很菜,但是我要怀有题目不难的信念,这样才能保持心态良好。发现有一套试卷打不开,那我这两天做四套题就好了。9.4今天大概就是继续刷题好了。做两套或者三套。花了四个小时才做好了一套卷,这次是把全部题目都通过了。虽然花的时间超了,但是也给自己增加了信心:我是有能力把所有题目都做出来的,包括十分困难的动态规划!但是动态规划的那道题目我就花了1小时40分钟,其实前面20分钟已经把递推公式写出来了。但是发现自己的编程还不够熟练,而且平台的js版本要滞后一些,有些方法用不了。做的过程中常把数组和字符串的方法搞混了,还有些方法直接忘了。比如我在想办法往数组的前面插入一个元素,想了10分钟竟没有办法,只好作弊查了一下MDN文档,原来要用splice(0,0,value)。所以还要抄一抄数据结构来熟练一下。后面这份试卷就没那么幸运了,而且最后一道看程序写结果的题目到现在也没有完全搞明白,只是知道有那么回事。其中比较奇妙的就是在函数内给没有声明过的变量赋值会变为globalThis的变量,而不管调用函数时的this是什么。function test() {           getName = function() {  Promise.resolve().then(() => console.log(0));     console.log(1);               };return this; }比如上面的getName会变为globalThis的一个变量(即全局变量)。不管是直接调用:test(),还是用call或apply指定this:test.call(obj)或test.apply(obj),getName都会变为globalThis的一个变量,而不会绑定到obj。此外,我认为TME2022校园招聘前端开发岗位笔试(II)的第一道算法的描述是错误的。“若当前节点为右儿子,会变成当前节点的双亲节点的右边相邻兄弟节点的左孩子节点。(如果当前节点的双亲节点已经是最右边的节点了,则会变成双亲节点同级的最左边的节点的左孩子节点)”,这里的右边相邻兄弟节点严格来说具有同一父节点的才算兄弟节点,不过测试用例则是把堂兄弟结点也算是兄弟节点了。9.5今天继续刷了TME的两套题目(实习生),有些题没做出来,不过也算是练了一下手感。做了五套题,现在大概已经有了些感觉,起码打字速度加快了一些,对算法的实现流畅了一些。其中最大的进步可能就是初步领略了动态规划。有许多题目败在了算法复杂度上,确实是基本功不够扎实导致的,因为实在是想不出优化的办法,看了一下题解经常会看到一些人说xxx方法这样,希望我也有一天可以做到这样。不过按目前的情况来看大概要到春招的时候了。笔试:刚才完成了TME的笔试,ac了三道题(一共四道)。四道都是比较基础的算法题,但是由于脑子不太好使,第三道一开始想歪了(想到了动态规划那边),最后用偏暴力的递推来解,但是计算子方阵权值的长度选取一下没想清楚,导致没做出来。不过想想还是算了,毕竟笔试AC了三道已经算是我历史上的最佳成绩了,毕竟之前算法一直是我的弱项,而之前的面试都是一道都做不出来的。这无疑给了我充分的信心:我不会被算法卡脖子!
查看7道真题和解析 投递腾讯音乐娱乐集团等公司10个岗位
点赞 评论 收藏
分享
12.16:完成用户编辑接口的开发;用户编辑功能和创建功能有很多类似的地方,因此为了避免重复代码,我将参数校验抽取成了一个公共方法;且由于官网已经上过了编辑功能,基本逻辑和后台编辑用户是类似的,唯一的区别在于,web端需要回显个人信息,而后台则返回true或者false就可以。而又由于保存了用户的变更记录,因此从数据库获取的敏感信息,不能解密,需要加密保存到变更记录里面,因此web端就还需要将敏感信息单独解密,回显到个人信息;12.17:完成用户编辑接口提测,修改留资推送线索中的语言动态;原有的推送线索里包含了语言,但是是在代码中写死的常量-英语,由于现在多语言表已经创建,可以获取用户选择的语言,因此将语言通过获取当前支持的语言列表来动态获取;然后推送给ocrm12.18:专项代码review,优化已有的代码;在代码review的过程中,我的接口返回值,是基本数据类型boolean,而通用的都是返回Boolean,于是stone老师给我提了个问题,接口返回到底选择boolean还是Boolean?然后我去查资料我本以为是序列化的问题,但其实返回的时候底层已经转成了包装类Boolean,所以本质的区别其实是特殊值的问题,boolean是基本变量,只有两个值:true和false;而Boolean是包装类,有三个值:true、false和null,在某些特殊场景,用null可以进行一些特殊判断;因此接口返回布尔值最好选择包装类。12.19:修改seo设置出现的bug;在解决这个bug的时候,我发现项目中的多语言获取其实存在问题,现有的多语言配置涉及三张表,字典、模板配置表和多语言字段表,而在配置多语言时,仅仅修改了配置表,但是获取多语言字段时,只获取了字典表,因此就会出现一个问题:配置默认语言的时候,只修改了配置表,如果这个时候去获取多语言表,默认语言还是修改前的默认语言,导致了数据不一致。和孙老师讨论后,孙老师在配置默认语言时,同步修改多语言表,解决了这个问题。而seo的bug也类似,由于我是直接获取的多语言表,假如现在只有一种语言,我去新增语言,多语言字段仍然只有原先语言字段,导致回显seo时仍然只有一种语言,因此我需要去读取配置表,根据配置表的语言去获取多语言字段值。12.20:后台筛选整合优化;主要完成了字段整合的需求,例如学员邮箱分为注册邮箱和备用邮箱,现在整合到一起,并且支持多选。
投递思源智通等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务