Skip to content

Latest commit

 

History

History
69 lines (53 loc) · 11.5 KB

2017-春招-AT-通过-头狼.md

File metadata and controls

69 lines (53 loc) · 11.5 KB
date author company
2017-05-03
头狼(QQ 643382419)
腾讯, 阿里, 其他

请移步 http://note.youdao.com/share/?id=b5ce2eea1d669a63daea441fe105e666
请移步 http://note.youdao.com/share/?id=b5ce2eea1d669a63daea441fe105e666
请移步 http://note.youdao.com/share/?id=b5ce2eea1d669a63daea441fe105e666

以下仅为防止对方站无法访问留下的备份, 请访问上面的原文链接
以下仅为防止对方站无法访问留下的备份, 请访问上面的原文链接
以下仅为防止对方站无法访问留下的备份, 请访问上面的原文链接

面经 by头狼

  一个来月的实习求职,有时候忙着修改简历、准备面试,有时候发呆、思考人生,有时候心情复杂看看剧,也要上课学习……总算基本告一段落。挺不错的一个月,又是一段有意思的时光,总需要留下点什么,就来写写吧~
  由于还是有点时间意识的,知道3月份一开始就有大公司要开始内推招聘的了,所以在上个月15回校准备简历,回顾、学习岗位所需要的知识点,刷面经。可能没有意识到内推招聘的人会觉得这求职准备算快,但对于那些从上学期开始,就投简历刷经验的人来说,还太嫩呢。

简历

  首先是看了几份大牛师兄的简历,知道整个简历结构的怎么样的,感觉我们这些走技术的整个结构都大致相似;同时对于投IT岗来说,重要的分块是:个人技能、项目(实战)经验、奖项荣誉,腾讯的HR也说主要看这些部分。之后便开始根据岗位要求、个人的技术沉淀、经验,花了挺长时间终于写出了这一份简历,一开始挺自豪的。而如果就这么自信将简历给投出去,那将会是石沉大海……到现在的最终版简历,自己也不知道改了几次,有大改、有小改。先是厚着脸皮将简历丢给有经验的师兄,求指点,还有就是找老铁帮忙找毛病,多次修改后才敢将简历给投出去。一份只能自己看的简历,往往就是会石沉大海的,因为通常会觉得自己辛苦写出来的东西,没有bug、没毛病。不过,有时候还要点缘分,前段时间投YY,结果石沉大海了…… =_=

面试

  一开始也是刷别人的面经,基本上刷的都是运维、开发的,没找到跟自己岗位很对口的面经。不过通过不同技术岗位的面试问题,基本可以结合自己的岗位要求,猜测大致会被问及哪一块的知识点,需要补补哪些底子基础,项目经验有哪些会被重点问到。然后便尝试独自描述、解答可能会被问到的问题。几次电话面试下来,觉得除了要刷点别人的面经外,还要着重加强对一个技能、项目的描述,如果自己的能力再强,当向别人展现的时候却表达不出,面试官也可能会觉得是一份假简历;还要就是面试完的自我总结,虽然面试过程不长,但也是个学习的过程,可以知道自己哪些描述的不好,还有哪些自己欠缺的知识点,跟这个岗位的大佬有多大的差距……下边分享连续面阿里、腾讯那天晚上冲忙码出的总结吧,由于是自言自语,且那时候赶着早点回宿舍,看起来有点怪,就当作是一个傻逼跟一个傻逼的对话吧╮(╯▽╰)╭

三个小时面了3个电面(2017/03/07)

  上周投完简历之后,一直期盼着发短信邮箱通知啊,打电话来啊,给个面试机会啊。会不会已经在简历评估时就已经被刷了啊,自己的简历还有哪些写的不好的,还有哪些要赶紧完善的……
  这下好了,都打来了,3小时就要面你3次,一次满足你!哥,我亚历山大啊!在这短短的三个钟里,在这短短的三个电面里,在这短短的一个半钟面试里,感觉到经历了好多,学习到好多,回顾了好多,思考了好多,展现自己好多,被大佬虐的好多……
  17:19的时候,一个杭州的电话打了过来,心想:阿里?!自己在官网上的求职状态还在简历评估阶段啊,不过好像实习群上有不少人是处于简历评估时被面试的。接了电话,真是阿里的!有点小兴奋,小激动,也有点小抖,不过有之前腾讯的第一次电面,已经可以适应大公司的电面了。不需要自我介绍,说了两句便开始面试,大致经过如下:
  说一下自己在Android逆向的一个学习过程?
  讲讲so注入的实现原理?
  dex/so的文件格式?
  你所说到的注入原理可以通过什么方式来察觉到呢?
  如果通过ptrace来检查tracePID以察觉进程是否被注入,还有没有其他的注入方式来实现注入呢?
  说一下Linux下ptrace()方法来跟踪进程的实现原理?
  fork()的实现,使用?
  你对一个程序在Android上被启动的过程了解吗?说一下涉及到哪些进程?
  你使用过gdb进行动态调试吗?能说一下它的实现原理吗?
  在Android开发、Android系统启动、Android系统漏洞挖掘等方面,你平时比较了解哪个,讲述一下?
  好了,对于你自己接下来的学习打算,主要还想学习Android安全的哪些,说说你身边还有哪些书籍,计划学习哪些书籍?

  整个过程还是问了好多问题的,但由于连续面了3个,有些一直想不起来。总的感觉就是半跪吧,除了面试官问到比较偏向自己简历写的技能可以比较顺利、自信的答上外,像被问到相对Linux底层的知识时,基本上都是硬着头皮答的,也不知道对不对,有些也因为完全不知道尴尬的过了。勉勉强强吧,最后在反问面试官的时,幸好抓住机会,仍是先关心一下,对于实习生的培训机制。然后问问面试官自己在这次面试中自己有些不足。我便说了自己发现在被问到比较底层的原理时,总是答不上,能不能给我一些接下来学习的建议?可以看哪些书籍可以补一补像Linux下ptrace、fork这些底层知识?面试官很好的跟我指点了一下,像ptrace、fork这些可以在像《Unix环境高级编程》上学习到,对于你想在接下来学习dex的启动、so的加载过程,那就要多翻翻dvm的源代码以及linker的源代码。同时面试官也很有心的提醒到,我现在所掌握的逆向实战,很多是来逆向分析、利用、破解别人的程序,很多都是基于别人的工具进行二次开发,虽然这像大多数人学习安全一样,通过玩玩一下工具使用,逆向利用别人的程序,这样的学习出发点是正确的,但要慢慢开始接触更为底层的知识,像学习Android一些在dex/so加载过程的源代码,学习Linux的开发,学了这些之后,对于像so注入,hook啊之类的问题,你都会发现很简单,同时也通过学习底层的知识,可以像在企业上参与开发一下安全产品出来,这才是更为重要的。

  吃完饭,19:14电话再次响起,腾讯总部!太好了,我过了腾讯一面了!好好对待,拿下二面!这个面试官很好,也是我面这几次来面的最好的一次了。主要这次的面试官问我的问题基本都是在更为契合我的简历的,主要的问题有:
  讲述一下你是怎么走上学习Android逆向上来的?
  说一说你做过哪些逆向分析的实操?
  说说你拿到一个Android程序,你是怎么对它进行分析的?以你简历里边写的木马分析为例吧
  你接触了哪些so注入的工具?说说实现的原理
  你说ptrace在反调试里边也有用到,那你说说是怎样一个原理实现?
  你了解GOT hook以及Inline hook,说说Inline hook的实现原理?
  Inline hook实现的跳转两条指令是什么?为什么第一条要用LDR而不用MOV?
  怎么将第二条指令里存放的hook函数跳转地址,通过LDR付给PC?
  你说你对ARM汇编有一定的了解,说说B、BL、BLX指令的使用?
  你玩过哪些游戏?这些游戏有哪些可以实现游戏外挂的?

  其中也问到我不会的,我也记不起具体在问什么?听不懂。有像说说Zygote进程的原理的。不过感觉总体上的问题我都可以答上,也答的挺清晰的。最后又到反问环节,老规矩,了解一下对于实习生的培训机制,以及游戏安全部门的职责,之后再一次问问在涉及比较底层基础时,自己答不上的不足,请教面试官指点一些方法、书籍来学习提升。由于面试官是腾讯游戏安全部门的,便推荐我可以去看看腾讯游戏部门出的一本关于游戏安全的书,查了一下是《游戏安全》。这一次总体感觉还是挺满意的,应该可以通过二面吧,不过接下来要再好好加油,好好反思,好好补补知识点,争取拿下腾讯的offer!

  才在老铁群上边水了一会,去上了个厕所刚坐下,电话又响了……上海?!纳尼!这是……,结果是:阿里!卧槽!这也太快了吧?!瞬间有点反应不过来,这次虽接完没多久,但我却写不出被问到的大致问题,因为这次被问的彻底跪了!
  先是一个简单的介绍自己背景及技术能力,之后面试官就说,看你的简历,主要是Android逆向的,那就对你比较擅长的逆向直接问吧。一开始听了还接受的,结果问了native层的代码混淆有哪些实现?瞬间就懵了,呆了,什么鬼?硬扯了,说一下通过修改so文件中节区的配置来混淆静态分析。面试官说不对,举了一下像什么给函数添加一些不必要的分支,还有些我听不懂的。。。来实现混淆。你能说说实现方法吗?尴尬,答不出,开始慌了。那这几年再Android系统上更多使用的ART虚拟机,你跟Dalvik虚拟机进行对比,说一下你的理解,知道多少说多少。这时肠子悔青了!之前本来想找机会看的,结果拖着拖着,没看!……之后说你主要比较多使用C++对吧,问static的作用,问public,private,protect的使用及区别,C++基础学的有点久了,勉强答了一下。像x86中传入两个int类型(32位)的参数,应用哪些寄存器来存放?又呆了!那函数返回值一般放在哪个寄存器?你比较熟ARM,其参数传入是怎样的,返回在放在哪个寄存器?这个还比较好答。又问了ARM调用方法时,对于寄存器的压栈保护,调用方法与被调用方法分别对哪些寄存器进行压栈保护?呆了!还有一些底层知识问的我一脸茫然。总之,说起来我都想哭,完全给跪了。最后反问时,对于我想补补自己在被问跪的细节、底子知识,面试官说这么问,就是想考察我的逆向实战经验,自己平时要做更多逆向分析,不断实战,便会在逆向过程逐步积累掌握……

  现在来看那天晚上敲下的总结,还是很有意思的 :)
  由上边的面试过程可以看出腾讯的要相对阿里的简单,看实习数据是,腾讯要差不多2000实习生,而阿里500左右;但更为主要的原因是,我的简历是被腾讯游戏安全部门拿去的,而我掌握的技能点和他们现在的需求很是契合,如果像是阿里安全部那样被移动安全的面试到,估计就很不好说啦……所以求职也要有点缘分~

最后
  主要是对这段时光的回味,总结,分享。
  QQ:643382419