返回第七章:一面·技术面试(1 / 1)空天自碧首页

关灯 护眼     字体:

上一章 目录 下一章

比约定的面试时间提前了二十分钟,周天白来到望京科技园,他在楼下转了会,十分钟过后,他敲开了公司的门。

接待他的前台小妹把他带到了一间空旷的会议室,在办公区旁边,他随意撇了眼看下,工位大约七八十个个,分为三个区,员工看着都挺年轻,看上去都挺认真工作。

前台小妹给他倒了一杯水放下一张面试职位表和一只笔之后就离开了。

大概十分钟之后,一位中年男人进来了,周天白站起来微笑,来人点点头:“坐下吧,我是今天的面试官王越,技术部负责人。”

周天白把刚才从包里拿出的简历双手双手递给了面试官:“你好,王总,我是今天来应聘贵司软件开发的周天白,这是我的简历。”

面试官接过简历之后,浏览了一下,问他:“你是机械工程专业的,怎么会想到自学开发?”

“大二下学期的时候,开始对代码感兴趣就开始自学,了解越多学习越深之后更加愿意有意愿加入IT行业,一边学习一边动手做项目。”

“哦,那你是怎么自学的呢?”

“了解阶段是从简单的基础协议开始看的,在3Wshool网站上进行学习,决定入门后从软件工程系同学那借了专业书籍,配合廖雪松老师的视频,论坛,各个老师的博客,从命名、环境变量等基础开始系统的学习,在实战过程中给学校写了网站和面向师生的APP。原计划是报双专业的,因为一点事错过了报名时间所以经常去软件系蹭课。”

“4个瓶盖换1瓶酒,要喝150瓶酒,最少多少瓶?”

“113瓶,买一瓶喝掉一瓶,攒够4个瓶盖就去换一瓶,最初的4瓶是需要购买的,之后每4瓶中就有1瓶是兑换来的,也就第(1+n*4),n=1,2,3...瓶都是兑换来的。n最大取37,所以只需要买113瓶。数学算法是:150/4=37.5,150-37=113。”

“给你一个5L和3L桶,水无限多,怎么到出4L水?”

“先将 3L 的桶装满水,倒入 5L 的桶里。再重新将 3L 的桶装满水,倒入 5L 的桶里,把 5 L 的桶装满后,这样 3L 的桶中就剩下 1L 的水了。然后把 5L 的桶里的水倒掉,把 3L 的桶中剩下的 1L 水倒入 5L 的桶里。再打满 3L 的水倒入 5L 的桶里,就是 4L 了。”

“能谈谈你对三次握手四次挥手的理解吗?”

“TCP协议,在发送数据前,通信双方必须在彼此间建立一条连接。在连接的建立过程中,双方需要交换一些连接的参数。TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。

第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得知道:客户端的发送能力、服务端的接收能力;第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力;第三次握手:客户端发包,服务端收到了。这样服务端知道客户端的接受发送能力。

三次握手的目的并不只是让通信双方都了解到一个连接正在建立,还在于利用数据包的选项来传输特殊的信息,交换初始序列号ISN。3次握手是指发送了3个报文段,4次挥手是指发送了4个报文段。

更简单的理解是处理客户端和服务端之间的连接通信,确保双方的接收发送能力。”

“什么时候用断言?”

“通常在开发和测试时候开启,为了提高性能,在软件发布后,断言坚持通常是关闭的。它是包含布尔运算表达式的语句,可通过其返回值来判断验证传值参数,但不能用断言去改变程序的状态。”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“有的。”

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

『加入书签,方便阅读』

上一章 目录 下一章