阿里二面,内部交叉

一面的时候和面试官谈论起来了算法的简洁性和效率问题,本来还担心会不会过不了了,没想到二面还是过了,开心。
而后,二面到了。时长大概40多分钟。主要问了一下自己平时的学习,生活习惯,学习习惯之类的。大学有没有什么很难忘的东西。项目是怎么实现的。这些都比较像hr问的问题。所以我一度有点以为这个是hr面试了。(因为我已经面了其他部门2面了,没有hc转过来现在的部门的,所以到了hr面也是正常)
那么,问题大概是:
1. 讲一下你自己觉得最难的项目吧。难点在哪儿?
答:一个微服务化的,支持编译运行和堆栈可视化的作业编程平台。
2. 讲一下你负责的模块。
答:负责编译模块的封装和微服务化。
3. 讲一下怎么封装的吧。
答:支持c语言,所以封装了g++和gdb。
4. 讲一下gdb常用命令(一面的时候顺便问了这个,这里补充一下)
答:gdb -o ,gdb -r,gdb -n ,gdb -s
5. gdb中哪个命令是跳出的?(一面的时候顺便问了这个,这里补充一下)

6. c语言的编译过程可以说一下吗?编译和装载等流程(一面的时候顺便问了这个,这里补充一下)
答:C源程序头文件 --> 预编译处理(cpp) --> 编译程序本身 --> 优化程序 --> 汇编程序 --> 链接程序 -–> 可执行文件。预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。而后的是编译整个c文件,这一步是生成了对应的.s文件,此时都是一些汇编代码,mov A B,之类的。这之后会有优化过程,进行一定的重排列之类的,优化。然后再是真正的汇编为机器码。而后生成的机器码可能要引用很多的外部文件,所以要使用链接,来将外部文件链接过来。这里讲了一下记忆比较深刻的动态链接和静态链接的区别。
7. 动态链接和静态链接分别在什么情况下使用?
答:静态运行快,但是编译慢,而且占用内存,并且库函数更新要重新编译才可以使用。而动态编译的运行慢,但是编译出来的程序占用内存小。库函数的更新可以不用重写编译程序,在需要使用的时候才回去链接需要的文件。
7. 项目有没有参考开源项目?
答:有,参考了eclipse che
8. 项目的优化点是什么?
答:对原有的开源项目进行了符合我们项目组实际情况的改变。
9. 微服务的理解,springcloud和dubbo讲一下
答:讲了一下http调用方式是两者的主要区别。其他的,诸如注册中心,或者链路跟踪,网关都类似的设计。再对比了一下同样是微服务框架的Tars,说了一下自己的理解。
10. rpc框架怎么实现讲一下
答:调用者通过代理模式,封装各种类。代理类进行远端调用,主要进行序列化。远端进行反序列化,获得数据,并且通过反射找到调用类,进行方法执行。再返回对于的结果。于是,调用方就像使用本地类一样使用远端的服务了。(要求是类的结构,在调用方和非调用方都有)
11. 大学有什么自豪的事情?
答:多线程能力,班长,部长,辅导员助理,开发上线项目,发SCI论文,兼职。多个任务一起担任,并且均保持优秀,绩点良好,获得保研资格。
12. 说一下自己的缺点?
答:给自己的时间太少,都在锻炼自己,没有时间给自己深度思考人生
13. 讲到多线程,你会怎么学习多线程?
答:博客,慕课网,知乎,网友推荐书籍系统学习。自己博客月访问量稳定破w。
14. 论文讲一下原理。
答:重识别的论文,讲了一下怎么实现,创新点在哪。
15. 讲一下数据库引擎
答:b+树,优点是叶子节点才有数据,非叶子节点只记录key值,方便一次性io读取很多的key,使得一棵非叶子节点有很多儿子(一个key指向一个儿子),树变得矮平,那么io次数会更少。详细说了一下一次io默认是16k,一个key如果是2byte,那么可以读取有8k的儿子的节点,几十万的数据只要3次io就可以找到。并且说了扫描的时候可以向右侧进行范围查询。也讲了一下聚簇的key索引和非聚簇辅助索引。回表现象和索引覆盖。
16. 讲一下如何找出一个线程进入了死循环?
答:dump导出堆栈信息,查看thread的状态,有没有一直处于running状态,而且处于很久的。有的话定位该线程内部执行的方法。然后被问还有其他方案吗?回答debug直接找。

#面经##校招##阿里巴巴##Java工程师#
全部评论
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2020-09-17 06:13

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
1 15 评论
分享
牛客网
牛客企业服务