返回第七章:一面·技术面试(2 / 2)90后的互联网时代首页

“简历上有说你有自己写APP及网站,能看看吗?”

周天白拿出自己手机在页面上找到了“工大通”APP,双手递给面试官:“是这个,是一款校园软件,面向师生,根据其身份来开放对应权限,产品需求15天,开发周期70天,测试发布一周。网站是我们学校的一个教务系统。”

面试官接过手机后,点了APP,问道:“你们是几个人,如何分工的?”

“四个人,我们宿舍的人都自学了开发,需求阶段是大家一起参与,开发是我和一位舍友负责后端接口及数据库、运维,另两位舍友负责前端,测试也是大家一起参与的。”

“好的,那你在测试过程中都会发现什么问题呢?”

“主要是空指针,回传异常,判断失误等。”

“学生你们是根据学号来判断用户信息的,那老师和非在校人员是通过什么来判断的?”

“老师的话是通过系别年级名字来唯一性校验的,我们从学校网站上收集了一份老师名单加到了数据库中,每月更新数据。非在校人员暂时没有给登录浏览权限。”

“你们数据大概有多少?如果数据多了,查询耗时太慢怎么办?”面试官问问题的同时也一直在用一只手滑动APP页面。

“我们数据并不太多,不到一百万。在之后的测试环境中构造过500万数据,模拟了慢查询,简单的单个条件查询,耗时40秒。后续对数据控制了去重去空、加组合索引,创建内存临时表数据先插入临时表中,优化索引等操作来调优。”

“好的,那两个对象属性名不一样如何将一个对象的属性值赋给另一个对象?”

“两者属性相同且都是公开的时候,直接传,objA.属性A=objB.属性B;类型不同,可以强制转换,或者构造对象,再依次复制内部的属性,或许用反射映射属性。”

当面试官划到“找校友”这模块时,搜索留言校友圈来回切换几次后再搜索返回的时候,程序崩了,他稍微抬了下头:“有过栈溢出导致进程崩溃卡死的问题麽。”

周天白看到了页面上明晃晃的“程序已停止”提示,带点尴尬的说道:“有过,直观点的看到StackOverflowError异常就去jvm上找,隐蔽一点的会从crash日志里查找或是借助p分析;我们碰见过此类问题的大多是在写代码时出现递归死循环,线程栈空间设置比较小。”

“嗯,即使有过一两年经验的程序员有时候也会出现这样的问题,那你们在学习过程中哪部分会学起来觉得吃力呢?”

“二叉树,图这类的算法在初步接触的时候学起来是比较吃力用时也是比较久的,后面在实践过程中也是有用到并不断和软件系工程的同学进行交流,有了更深层的了解和运用。”

“好的,关于你的情况我大概了解了,我这边的面试先到此结束,接下来如果你有时间我再安排一次人力面试。”

“有的。”

“好的,那你稍等。”说完,面试官便起身离开。