title: “ 2018ThoughtWorks面经\t\t”
url: 1353.html
id: 1353
categories:

  • 生活
    date: 2018-12-08 17:21:22
    tags:

背景及顺序

个人原因,校招错过了2-6月的实习,错过了7-9月的统招,九月底才开始找工作,逐渐的后知后觉感觉很后悔。 突然看到phodal的公众号说tw内推,但是他只给了名字没给邮箱什么的,怕不写全无效,所以最后从牛客网查阅,正好看到了内推信息,成功投简历。抱歉长期的关注却没用您的名。 投递过程只需要上传附件就可以,不用再在系统里重新填一遍各种经历信息,省事很多。 整体顺序如下:网投、邮件通知homework、电话通知视频技术面、电话hr面、视频技术面……

homework

下载了作业,以为每个人都不一样,所以就直接开撸,作业要求不要过多依赖,我对qt比较熟练,qt依赖太多。。肯定不行。 还要求命令行运行?my god!我不回命令行编译C和运行呀,赶紧直接python写,但是python只会基本功,对于p的面向对象一点也不熟,没有virturl没有override怎么确定子类一定集成了父类的方法实现了重写?好多概念不懂。。。最后功能写了一半感觉很心虚,万一技术面试问我我都不会说。。。赶紧换c吧,虽然不会命令行,但是作业要求也说了可以ide,嗯就这样,就算不符合要求,但是也要用自己更熟悉一些的。 原生c++好久没用了,甚至vs这个ide都没装。。然后一脸茫然,赶紧下vs,第二天装上,然后发现用的很不爽,注释很不好用,研究了一下doxygen风格怎么在vs中用上,最后装上了助手,配置了一下模板。OK环境搭建好了,再加上这天比较忙,其他啥也没做(毕竟我是机械的呀。。。还要搞科研,首先要保证毕业)。 第二天了2号,正式开始写,哦题目是罗马数字的,直接两个接口一个转换、一个打印,转换是抽象类吧,具体不说了,大概设计搞定,开始撸测试,想当然的认为罗马数字是大的在前、小的在后必须这么排列,嗯于是测试就这么出来了。。。然后填实现,这就3号了,总共撸了三四个小时? vs好像生成带了好多预编译文件,.vs文件夹直接让我KO了,然后压缩了就上传,突然反应过来是不是应该试一试。。然后打开发现。。。.vs文件里应该是有一些项目配置文件,项目基本配置都乱了。。赶紧回复一下,删除较大的预处理文件,其他的打包上传了。感谢还有两次提交机会,要不就惨了,第一次上传的都没法运行,需要重新配置一下,还有32/64位的问题,没有配置竟然vs默认32位的单元测试去测试64位的项目文件直接全部没通过。。。以为只要源码在就可以

通知技术面/HR面

突然收到电话,hr通知技术面试在第二天,接受以后等邮件,同时提醒了一下提前看看写得作业8号会用到。 正要出门去洗澡的时候手机突然响了。。。。另一个hr电话来了,问有没有十几分钟时间,然后就稀里糊涂开始了hr面: 自我介绍,选一个认为满意的项目详细介绍,对团队开发和独立开发看法,看我有博客问我是否热爱分享平时怎么分享知识…… 确定这不是技术面?项目介绍提到的关键词hr竟然懂。。。突然感觉自己了解的还没hr多 然后以为让看作业是改错。。然后发现了对罗马数字理解错误,不是只有大数在前小数在后,还有左减右加的规则,等等很多规则,于是想了好久怎么改程序,以为第二天会让改错。。。。 直到现在我也不知道原来作业题一直是一样的,以为作业是每人一份,完全没有想到去查查,然后第二天的问题根本不是自己想的一样。

远程技术面

两个面试官,先介绍以前的作业设计,然后要求增加了个功能,没说我写的是错的,和自己预想的完全不一样。想到了可以直接加个装饰,但是习惯了python的装饰器,感觉用C++写太慢了,所以没有用(后来面试官说了可以用这个解决),最主要的是我的这个想法也没和面试官说,应该是个减分项吧。毕竟,最后选了个最笨最无脑的方法: 最后直接cv复制了一个文件改了改,差异,做了两个类。。。然后main函数加了好多if,感觉是一种很low的修改。 提问:

既然main改的这么复杂重构一下代码有什么想法

答的应该不好,但是两位老师给了一些思路,感谢指点

介绍一个自己最擅长的技术

介绍了一下qt,但是可能说的太啰嗦了,没有完成整个体系的介绍(这不会就是3分钟即兴演讲吧。。我以为是单独的一次面试,这个问题答得。。。讲的一点脉络也没有,感觉让我再说三五分钟我也说不完的节奏。。。没有演讲的感觉。又是一个减分项?)

信号槽、事件、消息机制的差异优缺点

我只知道qt信号槽还有事件机制,问了一下老师事件是不是函数回调。。。信号槽说了一下原理,然后大概说了说自己的看法,其实并没有对比过这些。。。感觉答得可能也不好,最少看起来很不专业。

cpp11 14 17标准了解么

说了一下都看过,主要用11的多一点,14知道一个deprecated(怎么读还不会给自己挖了个坑。。一个字母一个字母说的),然后11提了一下lambda表达式,老师进一步问的闭包,我说了一下知道不同符号表示不同引用,闭包没有太了解。。又挖了个坑?哎

cpp的异常处理机制是怎么实现的

说了一下项目的使用经历,自定义异常、还有catch后的操作,会用但不知道机制 最后问我有什么问题:对我的评价、现在主要用C++如果有幸入职是否有换语言的机会以及公司培训机制、后续还有面试么。 最后一个问题:后续没面试了,等hr通知???一说这个突然感觉凉了一样。。但是还是很激动的,因为这次面试有了很多收获,见下: 先ps一下:一定要熟悉ide呀,熟悉ide呀。。真的好尴尬,好像助手有个代码行内容过长自动换行调整格式的功能?还是VS2017自带的功能,总感觉ide跟我对着干。我想一行的他换行了,我想换行的,它自动缩回去了。。。。自动换行还一下挣了三四行,感觉代码一跳一跳的,快捷键也只会: Ctrl+z、x、c、v嗯撤销和cv必须会。。。。然后Alt+o切换h/c文件,Alt+G转到声明、Shift+Alt+F查找引用。都是助手的,实际上只用了个alt+o,感觉操作很不熟练,希望面试官谅解,这块没给减分吧。。。

个人评价总结

个人总结面试:面试过程想法应该说出来,既然有交流过程,那就应该把想法say出来,然而我只是选了个最简单无脑的操作(虽然老师说了这次不用测试什么的,尽快实现功能,我感觉我这直接复制修改一点也太。。。。最后导致了main函数写得都很乱)。还有ide操作不熟练,说了一下主要用的qtcreator,希望谅解吧。 面试官的指点,很感谢两位老师的耐心指导: 提高设计模式的掌握和理解,看一些架构方面的书,提高工程开发能力。 不要只用语言的表面,有精力应该了解一下背后的原理。 经历多,但是没有体系,应该选一个自己的方向,深入的研究下去,有一个拿得出手的专项。

总结

面试过程真的很友好,两位老师但是并没有压力感,真的有一种被老师辅导了半个小时的感觉,感谢 这次面试的收获很多,很好的交流过程,对个人的成长很有用,感谢两位老师的耐心指点,整个过程不光得到了面试能力成长,还有技术和思想