Showing Posts From

访谈

一线大厂程序员的考公上岸心得

个人介绍 1、简单介绍下自己吧 大家好,我叫张安宇,我以前是一名普通的 iOS 程序员。感谢飞哥再次邀请对我进行采访,本来公务员相关的话题是比较敏感的,不过我接受本次采访的主要原因是最近有不少跟我年龄相仿的同行向我请教经验:如何刷题、如何在职复习、如何准备面试、如何报考等等。我知道最近整个互联网行业非常不景气,大家也有比较严重的年龄焦虑,我能在接近 35 岁之前考上编制我很庆幸,所以想通过访谈的形式给大家分享一些我的上岸经验。但是我需要提前告诉大家的是他人的经验仅供参考,我的经历还稍微有些「传奇」,可能不太通用,也许我能通过这种方式上岸,换个人用同样的方式不一定能行得通,所以整篇文章仅供参考哈。 2、你目前考到了哪里,在什么单位,工作日常和主要职责是什么? 我考到了四川省自贡市政数局:自贡市政务服务和数字化管理局是中国四川省自贡市的政府机构,负责提供政务服务和推进数字化管理。该局的主要职责包括政务服务平台建设、政务数据管理、数字化办公和信息化建设等。我们单位的主要职责包括:规范和推动政务服务标准化,管理和利用政务数据资源,推进电子政务建设,指导市政务服务大厅的规划和管理,简化审批流程并推进协同审批,管理政务服务热线平台,推进政务诚信体系建设,组织行政审批制度改革,管理公共资源交易活动,指导惠民帮扶工作,安全生产和职业健康、环境保护等工作,以及推进政府信息公开工作等。 我的单位是一个市属事业单位,截止今天我已经入职一个多月了吧,通过一个月下来的了解,我的日常工作目前还比较简单,处理的是一些基本的工作流程类的文件、公文等,协助软件公司完成我们系统平台的研发。 我的岗位叫做软件工程、大数据分析,所以闲暇也会自己做一些技术方面的学习与研究,比如我正在做的是对自贡市的一些数据进行挖掘分析、数据清洗、人工标注等等的工作,最耗费我精力的就是新词的挖掘和统计,大量的新词需要我一条条地手动确认并保存,这个过程是机器无法替代的。我认为这份工作挑战还是非常大,NLP 、机器学习、数据挖掘等工作是比较有技术难度的领域,没有很好的技术基础我认为做不好这件事,希望以后能够学习更多的技术更好地完成我的工作。 进入这样的部门工作,我认为最大的职责就是要把每件事办好,让每件事都切实有着落,在做任何事情之前优先考虑的是人民群众的利益,要站在最普通老百姓的角度上去思考所问题,真正做到“权为民所用、利为民所谋”,我认为是这样的。为什么选择考公 1、为什么选择了考公这条路?是为了逃离互联网吗? 逃离互联网说不上,我的经历比较曲折,虽然进过很多大公司,拿着很高的薪水,但是待的时间都不长,经常搬家,也没有什么积蓄。在北京这样的城市根本不可能扎根,与其说逃离互联网,不如说我逃离了大城市。有人说在北京没有房产就根本无法立足,我觉得是的,我不想租一辈子的房子,如果我的工作稳定了希望尽快在自贡买房定居下来,家人也不希望我继续漂泊在外地。最近在看《曾少年》这部剧,里面有句台词我觉得特别好:越大的城市越容易产生梦想,但是也更容易让梦想破灭。剧中人物的爱情故事就是这样的悲剧,也符合我的想法,我想逃离的是大城市,也许小地方平平淡淡的生活更适合我呢?考公就是这样的另外一条路,另一种可能性。 选择考公最大的动力是我相信自己在很多时候是努力的,只是以前时运不济,总是一事无成,我相信考公上岸这种路径:通过自己的真才实学和踏实的复习,日积月累最终达成自己最初定下的目标,所以我下定决心准备试试。 2、除了考公你还想过其他途径吗?你怎么看待程序员和公务员这两个身份? 有的,在考公的同时我也有一些出国工作机会,对于程序员来说润出去确实是一个很好的选择。毕竟我也习惯了高薪的工作,突然进入体制内拿很低的薪水,我要经历一个很痛苦的消费降级的过程,曾经随随便便就能购买消费的东西,现在只能远远的看着,已经买不起了。这种感觉真的很难受,考公并不是适合所有人,我也经常问自己,如果我没考上,接下来的人生会在失业中度过吗?我想即便找不到一份高薪的工作,能够找一份普普通通的工作维持生计应该也不难。 所以吧,程序员这个身份,在我眼中是高薪和容易失业的,公务员在我眼中是稳定,不会让我暴富,但是也不会让我饿死的这样一份工作。如果我考不上编制,我可能会折衷一点,选择做普通的相对稳定一些的工作,放弃高薪,这也是符合我的一贯想法的,我不喜欢卷,不希望自己人生活的太累,我希望我既能够生活下去,也能随时享受生活本身。 回望之前的程序员身份,我应该是感激多一些,虽然我上岸了,但是我在政数局这样一个单位,总体上来说跟信息化、数字化的联系程度应该高于体制内的大多数单位,曾经的程序员经历给了我一个很好的经验,我希望能够把这些经验沉淀利用到日常的工作中来,为自贡市,为国家和人民做出我能做出的贡献。 3、考公好像是大多数互联网从业者都曾幻想过的发展路线,什么样的人更适合考公?什么样的人不适合?你会鼓励大家考公吗? 我不会无条件鼓励大家考公,我考公有一个原因是我的原生家庭吧,因为我父母是公务员,考公这件事不仅仅关系到个体,还应该听取父母、家族长辈们的建议,这条路是否适合自己需要好好考虑,不应该盲目地跟风,因为考公热现象只是最近这些年才热起来的。 像我一样父母都在体制内的朋友,我认为是很适合考公的,公务员是一个身份,也是一个家庭的传承。如果家人没有在体制内,很多问题你不知道向谁请教经验,特别是职场上的人情世故,肯定不能借鉴体制外的那些经验,向外人你又不好开口问,父母无疑是最好的老师。我的父母给我提供了很多的上岸后如何做人做事的经验。 我认为不适合考公的人群,其实没有,我觉得任何人想考都能考,我们国家的公务员考试制度不同于古代科举,没有限制谁谁谁不能参加考试,这个岗位专业不符合要求,总有岗位你能报;这个岗位太卷,总有岗位不卷;这个岗位要求学历,总有公益性质的岗位它要求很低。如果特别想考公,我认为不妨一试,人生没有什么不可能,没有哪条路是一定不能走的对吧。 上岸并不是终点,它仅仅是一个起点,考上了只是代表自己进入这个体制内,能不能做好,还得持续不断地耕耘才可能有收获。 如何准备考公 在本篇开始之前就一些概念补充一些相关背景知识:类别 考试 岗位 考试时间 考试内容 其他说明公务员 国考 受中央领导:税务局、国家部委、国家统计局、外交部、银保监会、海关总署 11月份 行测、申论 应届毕业生有一定优势省考 受地方政府领导:各地教育、公安、商务 联考4月份前后,自主考试时间看各地安排 行测、申论 一般有户籍限制,灵动性比较强,部门之间转换事业编 事业编考试 各研究院、管理局、信息中心、办公室 各地自行安排,考试次数比较多,考试时间比较分散 职测(类似行测)、公共基础知识,有些地方还会有专业课,具体以招聘公告为准 要求非常灵活,以当地公示为准国考、省考、事业编考试这三者,整体的招聘岗位数量依次减少,福利待遇相差不大,依次略微降低,但都有编制,上岸难度系数依次降低。因为考公和考编需要准备的内容相似,通常是同时准备,考上哪个是哪个,下文不再额外区分,统称考公。 1、考公的整个流程会是什么样的,可以大概简述下吗? 公务员考试和事业单位考试的大致流程基本一致,都是报名、笔试、资格审查、面试、政审、公示、正式入职,流程很长我从报名到入职只经历了 5 个月。很多朋友对我说我是“肉眼可见的上岸最快速度者”,我实在觉得自己是太走运了。我复习了很久的事业单位 abcde 类《职测》与《综应》四川省并不考;自贡市市属事业单位实际上是我参加的第三场考试,之前还参加了 23 年省考和同期的四川泸州的事业单位考试,后面又参加了三场考试,一共参加了 6 场笔试,进面一次,上岸一次。5 个月的时间走完入编的所有流程,我认为这个不容易,这个流程很长,这中间每个环节都可能淘汰掉我,也许别人好几年也走不完这个流程,这个结果也远超我自己在备考期间的时间预期。 我的这份幸运并不是特例,很多考公上岸的幸运儿都有类似的经历:对手没来参加面试,报考岗位竞争非常小,因此考公之路,有前人总结的是选择大于努力,岗位选得好才是事半功倍。我觉得我的幸运也来自于我的岗位选的不错,我总结的经验是:我会提前报名我感兴趣的城市,然后关注报名交费数据,大部分城市都会统计公布,如果竞争比超过了1:1000,我是一定不会缴费参考的,如果竞争比小于 100 我认为是 ok 的,500 左右我都会考虑下 ROI 的问题(主要是巡考路费,和其他考试撞时间的机会成本损失等)。 选择了考公的道路,基本上是要与以前的自己一刀两断了,要时刻以公务员的标准来要求自己,即使是在备考阶段。入职以后更是需要谨言慎行,认真工作,我认为这是一个改变自己的过程,也是一种锻炼自己的机会,去学习适应新的身份,至少不再是一个程序员了,要以更加系统的思维去全局化地思考问题,站在国家的立场和角度去考虑普通的民生问题,我以后的一言一行要代表得了我的单位,需要对得起党和国家,这是一个很基本的要求和标准,我必须要去做到,这对我来说其实还挺难的,毕竟以前在微软这样的外企工作,我的思想非常open的,上岸以后,我对自己的性格做了很大的收敛,我也相信身边的朋友能够看出来一些,在这方面我还需要再加强。 2、考公是否存在年龄、考试次数、户籍之类的限制;考公的公平性如何? 绝大部分岗位限制年龄 35 岁(含)以下,也就是说你可以考到 36 岁生日的前一天为止,应届研究生、博士放宽到40岁。考试次数当然没有限制,户籍限制是有的,在某些地区的事业单位招聘中明确限制了当地的户籍。 如果报考条件都符合,最终结果一定不会因为这些条件导致取消录用的,无论是公务员还是事业单位的录用,都是参照《公务员法》执行的。如果要在录用阶段取消考生的录用资格,一定是要有足够充分的理由才行。大家想象中的黑幕、暗箱操作,我个人感觉是没有的,我觉得我们国家目前的公务员考试制度相当公平。以我自己为例,我考到自贡来之前,我一个自贡人都不认识,如果不是有绝对公平的考试制度,我又为啥能考进来呢?我这个单位并不差,我认为是一个很好的单位,肯定还有很多人也想进来;假如真有这样那样的黑幕,我应该被刷掉才对。 3、不同地区的考试是否是独立命题?计算机岗位这个方向难度和竞争大不大?很多时候这些信息差会导致判断失误,有没有一些靠谱的可以获取这些信息的途径? 公务员考试的话是每个省一套题,事业单位的话基本上是每个市一套题目,题目难度不一,比如我考过重庆市市属事业单位,我考的那套题最低进面分数是 180 分,而同期举办的区县里的进面分数竟然在 230-250,甚至有区县的进面分高达 280(满分300),那我觉得难度应该是不一样的。最近丰都和南川的高分考生还被查出来集体作弊被取消了成绩,也是解答了我一个疑惑,这些人怎么考到这么离谱的高分的,是我学习方法不对还是我不是那块料? 计算机岗位目前的竞争我觉得中规中矩,我们国家目前正在加快数字化,加快数字经济与实体经济的融合是非常重要的国家战略,因此各个部门也亟需各种各样的计算机专业人才,可以肯定地说计算机专业和其他专业对比在公务员考试中是更吃香的;但整个互联网行业低迷的就业环境导致找工作的人很多,所以竞争也很大,所以只能说比其他专业好很多,但是还是需要付出足够的努力才能上岸。 考公时刻关注各大机构的消息,具体什么机构我就不说了,我相信一个人真正进入了一个备考的状态之后,他会重新建立一个获取备考信息的网络:比如关注一些半月谈公考之类的公众号,亦或是下载学习强国 APP,他会每天自然而然地会关注到所有该注意到的信息和细节,否则我觉得可能这个人备考是还没有进入状态的。4、计算机岗位的考试主要考哪些内容?你是如何准备考试的?是否有必要报班? 计算机岗位的考试题目跟非计算机岗位的考试题目是一样的,只有极少数地区会在面试过程中出专业题(比如我报考的四川自贡市,这在四川都是独一无二的存在),但笔试阶段是不需要准备任何计算机专业知识的。 我报了面试班,但是笔试是全靠自己自学的,我也是这样给其他向我咨询的朋友说的,如果你有基本的自律,其实没必要报笔试班;但是如果有幸获得了面试资格,请不要为了省钱自学,最好至少报一次面试班系统地学习好结构化面试。 5、有过多少次考公经历?备考过程踩过哪些坑?考试的心境有哪些变化? 我今年 33 岁,这是我唯一一次备考公,一共参加了 6 场笔试,从开始备考到入职一共持续了 6 个月左右,其中我当前岗位的录用流程就花了 5 个月,也就是说我就额外多复习了一个月的时间,这也是我为什么觉得自己运气足够好的原因,感觉有点像第一次买彩票就中了大奖一般,哈哈。 踩过哪些坑?我觉得最坑的地方是常识模块,常识模块的知识点实在太多了,即便我刷再多题听再多课,真的找不到什么提分技巧,真的看运气,运气不好常识模块的准确率就只有 40%,非常搞人心态。 我一共刷了 3000 题,总正确率是 70%左右,其实我刷题的数量不多,相比很多比我卷的局长们,我这 3000 题仅仅是刚刚入门而已。备考阶段我的心境其实很平淡,某一两次考试失利我也不会特别难受,只是觉得可能自己还不够努力,只要继续坚持下去总能考上自己喜欢的岗位。我给自己预想的时间是考两年,实际上岸的进度条实在是走的太快了,远超了我的预期,以至于我买的大量复习资料、文具等等,还没派上什么用途就开始在家吃灰了,不知道如何处理。 6、面试环节是什么样的,需要注意哪些事情 如果有幸进入了面试环节,那基本上离上岸只有一步之遥了。如果你的岗位排名大于招聘名额,例如招 1 排 2,招 2 排 4 等,就属于入大围,反之假如招 1 排 1,招 2 排 2 就属于入小围。一般入大围上岸几率会小很多,你需要面试超对手足够多的分数才能逆袭上岸,而有些地区的面试打分分差它是很小的,比如某些地区会在 82-85 之间打分,很可能整个考场的最大分差只有 3 分,这种情况下如果你在大围,明确分差大于这个区间,可以考虑放弃面试。具体打分标准可以查询对应地区历年面试的打分情况来看。我所在的面试组打分区间很大,就我同一个组的考生分差就有 10 分以上,所以情况各不相同。往往分差越大的地方,守擂的不确定性就高,逆袭的成功率也就更高。 我的一些建议是面试阶段尽量要报面试班,我推荐我的面试老师给大家,这里就不打广告了,如果有需要,可以通过飞哥联系我咨询。面试过程中要自信、声音洪亮、衣着得体。差不多就这些。 体制内工作感受 1、你现在应该已经上了一段时间班了,当前岗位的福利待遇、工作状态、工作环境怎么样的,跟你的预期是否相符? 我的福利待遇肯定跟以前打了骨折了,工资连以前的零头都没有了,整个四川的待遇都差不太多哈。工作状态的话我觉得我是非常认真的一个工作状态,会认真地做好每一件工作相关的事情,不能出什么差池,也出不得什么岔子哈。 我们单位的工作环境还不错,当然了,以前在微软那样的大工位肯定是没有了(图 1 是刚入职微软时候的工位,那会对面坐的可是郭神哈,图 2 是后来公司统一升级的新款升降桌):但是也不算太小,我们毕竟是公家单位,跟微软比工作环境,这样的攀比心是不应该有的:我在互联网公司的体验其实还挺好的,过去的几家公司领导都待我不错,压力不算太大,虽然经常公司要求我加班,但是我大部分时候都是主动拒绝的,包括我换工作我的第一号诉求就是不接受加班。 我们单位不考勤,没有过于严厉的规章制度,所以我很庆幸每天上班的几个小时我可以相对自由地安排自己的时间,哪两个小时认真工作,哪两个小时写写代码(基本上已经是写着玩玩了),哪两个小时娱乐休闲、或者学习充电提升自己。 食堂自然是没有微软的食堂好吃,不过与之相应的是更轻松的工作氛围,更 WLB 吧我觉得。绝对的 955,没有周报月报和开不完的 scrum,没有末尾 5% 的 LITE(Low Impact Than Expect) 淘汰机制,不用写 connect,下班时间没有任何人在 Teams 上 ping 我(也没有 Teams,我们工作就用微信)。 所以,我写这些在这里只想说可能每份工作都有优缺点,我觉得在体制内工作会失去一些东西,但是也会得到很多东西,我相信这一点。 虽然微软食堂也能吃一辈子,那也能算“铁饭碗”,但是能在微软这样的公司待一辈子的人也是少数,我觉得哈,每年 5%的 LITE 淘汰,你必须确保你不是每年的那个 5%,遇上经济不好再来一个额外的 全员10%裁员计划,在人生大事上不能用幸存者偏差去看问题,毕竟默默离开的人们不说话,不能忽略他们的感受,所谓稳定就是要绝对的稳定,不容许突如其来的变故,这些 5%、10%的厄运降临到每个人头上都是你的 100%,你都很难去承受。 我在互联网公司最大的缺失自然是集体认同感和稳定性,但我相信我现在的单位以后会给到我的。 2、公务员是否是你的理想职业,它有没有让你感觉有待提升的点?这里的关系是更复杂还是更简单?这是否会是你的最后一站? 我小时候的理想职业是成为一名计算机科学家,所以我的儿时理想跟公务员没有关系。我热爱计算机,大学志愿填报我根本没有考虑过其他任何专业。 现在我的理想首先是能活下去,其次是能给国家给社会做点贡献,成为一名公务员是给了我这样的机会,我应该好好干。我认为体制内的关系比互联网的职场相对简单一点,也许我是一个简单的人吧。 我希望这份工作是我最后一站,这代表我后面不会再准备遴选、考省直或者中直的公务员等等,我很喜欢自贡这个城市,愿意一直生活在这里,自贡和我有着解不开的缘分。自贡是一座千年盐都,我的家乡巫溪县也是一座上古盐都,这是两座以盐文化为傲的城市,除此之外自贡也比我的家乡发达很多,盐、灯、恐龙、川菜都是世界闻名的,我相信这里能成为我的第二故乡。有句话说的好,别问我是哪里人,我的编制在哪里,我就是哪里人。我本就出生在直辖之前的重庆,那会我是四川人,现在我还是四川人,我的编制在四川,我会觉得哪怕从此以后一辈子在自贡也是一件很开心的事情(第一次报名的时候最担心的就是如果考上了就要去一个自己不喜欢的地方生活一辈子,内心会产生巨大的陌生感,那种真实的感受非常令人窒息)。 3、很多时候观察到的现象是,不少政务平台都比较难用,这里的底层逻辑是什么呢 这个说法不太对,我们的政务平台正在以更高的水平、更高的质量发展与建设,我们在这方面做出了很多的努力,我们的一网通办只会越来越方便快捷,特别是我所在的川渝地区,重庆的渝快办已经和我们的政务服务互联互认了,我觉得不会是难用的一个状态。 我们还在配合四川省大数据中心建设打造“无证明城市”,也许以后你到自贡来旅游,可以不带身份证就能到我们局里来办理业务,我们单位的同事们做了很多努力,这些都是可以预见的未来。 至于说为什么有些政务平台大家认为缺乏维护,我想可能存在一些历史因素以及财政紧张的原因,如果大家对我们的政务云、政务平台有任何相关的建议或意见,可以随时拨打我们的 12345 市民热线留下大家的宝贵意见与建议,在大家的监督和促进下我们一定可以做的更好的。 4、最后可以再补充一些你想说的话 最后的最后,欢迎大家到自贡来旅游哦!欢迎大家来我们自贡吃兔子!自贡的夜景非常漂亮:自贡是一座生机勃勃的小城市,自贡的灯会举世闻名,自贡的盐帮菜是川菜的八大菜系之一,自贡的恐龙博物馆是全球最大的三家恐龙博物馆之一(另外两家在加拿大和美国),自贡的井盐更是有几千年的历史。 自贡缺乏的是一个历史机遇,在当代沿海城市已经很发达的背景下,我们的中西部城市也需要快速崛起,也许《重庆四川携手推出多项新举措推进成渝地区“中部崛起”》就是这样的历史机遇。 扩展 考公三大机构:华图在线、中公教育、粉笔教育 考公论坛:https://bbs.qzzn.com/ 程序员考公指南:https://github.com/coder2gwy/coder2gwy

iOS 求职寒冬?听听他们怎么说

这是一次线上分享的文字整理版。原版视频内容可以点这里查看:线上视频。 为啥会有这场分享最近在帮团队招人,像朋友圈、公众号也加了很多推广渠道,但能捞到的简历有限,即使是有简历,能过公司筛选且进入面试流程的都非常少。另一方面,现在找工作也挺难的,因为今年被裁员的人有很多,很多公司都已经不再招人了,导致竞争压力大,面试难度也跟着上升。像是裁员应该会导致更容易捞简历,更容易找到合适的人,事实却相反,这就很奇怪了,那这里面的 gap 在哪里呢? 最近正好有两个朋友都如愿找到了满意的工作,所以就想拉他们来一起分享下找工作的经历。 分享者介绍@阿卡拉 我是阿卡拉,毕业于郑州大学本科软件工程专业,2019 年 6 月进入腾讯。在腾讯主要负责的工作一直都是客户端基础平台建设,在工程效能方面不停的探索。 @JY 我是 JY,17 年毕业,是 iOS 摸鱼周报的联合编辑。我之前是在微盟的 App 基础技术部门工作、主要负责 APM 以及线上 Bug 排查等。因为公司裁员不得不重新找工作,目前是拿到了小红书的 Offer。 如何准备面试@阿卡拉 腾讯在 2022 年上半年就已经开始在慢慢的砍各种业务线,当时,对于我来说,感知比较弱,主要的原因是我一直在工程效能这一块,对于业务线的情况了解不是太多。仅仅是了解到外部的一些声音。 在5月30号,我们工程效能部门很多小组也开始在裁员,但是我们组的工具平台在最近的两年发展是挺不错的,这一次裁员没有涉及到组内任何同学。 或许是因为部门裁员的力度还是不够,接下来,开始在6月30号开始裁员,我们组涉及到的有16个人左右,最后仅剩下4个人做日常维护。 在腾讯的这三年,我发现自己的能力提升是比较快的,从进入公司的小职员,慢慢到一个大的项目的负责人,这也得益于我的 leader 和身边同事的配合。 所以,总的来说,并不是我要考虑换工作,而是公司的环境让自己被迫开始换一个工作环境。 本来在公司是 2 个月的缓冲期,所以缓冲期阶段除了处理手里的交接工作,同时也让自己休息一段时间,对这些接踵而来的消息做一个消化。然后就开始了我自己资料整理计划:整理 iOS 基础知识(八股文)【计划是 2 个周,实际花费 3 周】 计算机基础知识:主要是网络,操作系统等基础知识 iOS 的 dispatch:一直想把该模块的源码看完,但都是比较零散的,所以去看源码做了总结 iOS 的 dyld/objc:这个是 iOS 动态库加载的原理,所以需要去深入了解,objc 中包括很多的技术支持,如 autoreleasepool, 消息转发,AssociatedObject 机制。 Runloop 机制,KVO 与 KVC 机制,Block 管理机制,iOS 事件处理机制等等整理曾经看过的开源库:自己之所以喜欢去研究这些源码,是因为他们给我代码能力提升了很多,无论是从设计上和实现方案上都能有比较好的选择。【计划1周,实际花费2周】 AFNetworking:iOS 网络访问最出名的网络库,没有之一 YYCache,YYModule等由 ibireme 大神的开源组件合集 CocoaLumberjack:也是 iOS 出名的日志库,整个仓库的设计将设计模式很好的应用 OCMock:这个是一个单元测试组件,但是如果想验证自己的基础如何,这个仓库我觉得是最佳开源库,可以将 objc 的很多知识点应用进去。项目相关【计划 1 周,实际花费 2 周】 单元测试自动化:整理整个单元测试的执行流程和之前的实现方案。 质量组件化:熟悉自己开发的所有的 SDK ,包括语音 SDK,大文件上传 SDK,屏幕录制SDK 等等。 变异测试:我主要负责的一个平台。变异测试的整理设计方案与之后的优化方向;梳理 Objective C 热重载执行方案与设计;LLVM 对 Objective C 语言的语法树分析并做各种能力;LLVM 的 pass 化服务梳理。算法【每天早上刷算法】 leetcode上刷剑指 offer 第一版和第二版,然后刷 leetcode 热题 100(热题100要看着题目就马上写出来的那种) 回忆算法:主要是算法小抄和这个作者的网站:https://labuladong.github.io/algo/总结下来,因为本身自己也想去做一个总结,所以整体上花了大概 1 个半月的时间,所以基本都是在腾讯的缓冲期每天静下心来一步一步的梳理。其中准备算法耗时最多吧,前后刷了差不多 300 题。 @JY 我换工作的契机是因为公司裁员。在国庆节前两天,被通知 Last day,不需要交接。所以我是从国庆节前那几天才开始准备的。我主要准备的是简历,这里我的想法是需要明确自己想要去什么样的公司,然后根据公司要求和自己擅长的点,可以准备多份简历。简历里最主要的内容就是自己的项目经历,项目最好能体现出具体的优化指标。我面了很多家公司,都会被问到最后优化后的指标。 其次就是八股文,因为我之前有记一些笔记,再结合网上别人总结的一些内容,每天早晚都会大概看一遍。 算法这块,我在 Leetcode上开了一个会员,这样能看到热门公司题库,我把想要面的公司的算法都刷了一遍,有些题目可能不止一遍。 这里最耗时的就是算法这块了,有些 Hard 级别的算法题会很难写出来,但很多时候即使写不出来,有大概思路也行。所以如果算法比较弱的话,需要多刷一刷找找题感,才能更好的应对各种复杂的问题。 如何写简历 简历是面试过程中的敲门砖,只有简历被捞到,才会有后面的面试过程,所以它的优先级是很高的。很多人都有分析过简历应该怎么写,不应该怎么写,但我感觉讲再多都不如亲自去看一个优秀的简历是如何写的。下面是阿卡拉和JY两个人的简历,部分内容做了脱敏和抹除。 @阿卡拉@JY如何获取更多应聘机会@阿卡拉 招聘渠道的话,小公司直接去 Boss 上面找,大公司找内推。我对下个阶段其实考虑挺多的,结合自己的诉求,我主要有三个方面的要求: 1、大公司:字节,阿里,腾讯这一类的大公司,只要招聘的业务不是太偏就可以。业务上我希望继续在工程效能方向继续深挖。 2、有前景的公司,看中公司的进步和发展,看中公司的业务 3、加班压力小的公司 @JY 我基本也都是通过 Boss 或者内推方式,我会让朋友来面试我,培养自己的面感,这个过程也会一点点增加自信。因为现在大环境不好,很多大公司的 HC 都是很宝贵的,最好是准备很充分了再去面。 对于意向工作,我更关注的是该组是负责哪一块,是否是核心部门,公司发展前景如何。最重要的还有自身的发展方向和工作内容是否匹配。 @zhangferry 找工作前需要考虑的这几个问题,第三个是非常重要的。不管因为什么原因需要换工作,我们都应该把换工作这个节点当做整个职业规划的下一个起点。之前的工作有哪些不好,踩了哪些坑,我要避免,我了解到哪些知识,对哪个领域更感兴趣,可以往那个方向多去靠。 @东野浪子 挑选工作时要提前想好自己的诉求是什么,更高的薪资?更看好的行业?想从业务开发切换为技术开发?甚至就是想工作的轻松点,这都是没问题的。把这些诉求按照优先级进行排序,赋予不同的权重值,然后再分门别类的把你所能投的一些公司或者职位按照权重进行打分,分数最高的那个就是最适合你的岗位。 很多时候都不可能一个 Offer 覆盖你所有诉求,这时就可以利用这个方法论进行选择了。 如何进行面试@阿卡拉 我投的简历还是蛮多的,大概有十几家,最终进入面试环节的有七到八家,但是真正满足我那几个诉求的只有两到三家。我觉得寒冬的感受还是挺明显的,阿里、腾讯、大江、虾皮这些都已经不怎么招人了,因此可选的公司范围没有那么广。 技术面中基础知识,也就是我们常说的八股文还是比较重要的,也经常被问到。像是 Runloop、KVC/KVO、Objc、Block、GCD、Autorelease 这些技术点要非常清楚,每个点都需要深入。我自己在整理文档的时候基本也是从这几个方向展开的。 总共走完流程的有 4 家,有两家因为薪资不满意,还有一家其实挺想去的,但感觉他的发展前景不太好,最终就选择了字节。不说别的,就薪资这一块,字节还是棒棒的。 最终通过面试感觉还是因为自己准备比较充足,比较全面,哪些相关的知识点,我会把里面的方法论也都提炼出来。比如说 Autorelease 或者 Cache 相关内容,我会考虑如何把他们应用到自己的项目中去。只有真真实实地去考虑了这个东西,而且了解它的各方面内容,面试官问你的时候你就会感觉很轻松。 关于这些知识点的学习,我还会分有很大比重去看开源库。说实话我觉得腾讯这边,很多业务代码拿出来,大家都不想去看的,这些东西不会给人带来提升。而开源库是经过社区检验的,都是质量非常高的内容,仔细研究,更能学到东西。 字节给我面试体验就是他们的面试深度,整个面试过程就是带着你一步步往深了聊,但这随之而来的就是难度提升,这也是我为啥会把面字节的面试安排放到最后。 @JY 我投的简历不多,都是自己比较想去的才会投,除了两三家没有面试,其他都有。寒冬的感觉还是很明显的,因为我很多朋友去年找工作的时候,HC 很多,难度也不算高。今年因为有很多公司在裁员,有一些公司也锁了 HC,市面上人确实比较多,所以每次面试都应该把握好机会。 我在技术面上感觉稍微有些不同,一面遇到问八股的比较多,后面几面基本都是围绕项目在问。最经常被问到的就是你们团队为什么要做这个?为什么要采用这种方案?过程中遇到了哪些问题?你是如何去解决的?其次就是结果,带来了哪些收益,我感觉大厂的面试很像项目讨论会,双方就一个功能点不断地探讨,技术深度慢慢深化,这样整体面下来也会感觉比较舒服。 有一些没有走完的面试流程,可能是复习的时候没有准备到位,也有一些是平常工作中很少使用到的,因为答的不太好就被 pass 了。 面试通过的原因,我觉得主要还是平常的积累,平常做了什么项目,需要经常复盘总结。把遇到的问题以及收益都记录下来,组织自己的语言表达出来。 小红书整体的面试还是比价舒适的。整个面试都是从浅到深的,基本没有问什么八股,都是围绕项目开展的。 面试回顾及总结@阿卡拉 面试中踩过的坑,第一不要盲目面试,盲目面试会发现其实很多岗位都是不符合自己预期的,这些过程会有很多无效沟通,浪费了挺多时间。第二面试一定要做好总结,像是每次面试被问到的问题,如果我不知道或者感觉答的不好,下面我会再去总结和调整,短板补充是一个比较重要的提升过程。 面试对我还有一点改变是,因为在腾讯这三年都没有考虑过面试这件事,一直是比较佛系的状态,这次面试经历基本是反向的去提升自己的能力。因为面试的缘故我有充足的时间去系统的学习之前遗漏的知识点,并为下个阶段做一个规划。 如果面试不顺的话,就当做跟这家公司没有缘分吧。选择是双向的,我经常跟一些同事开玩笑说,在腾讯小马哥拥有我是他的幸福,而不是我的幸福。现在在字节也一样,他拥有我是他的幸福,但反过来对我来说,也促成了我的幸福。 关于选择这块,因为在腾讯时组内相处比较和谐,我也更倾向于氛围和谐的团队,工作和生活都要做最真实的自己。另外我觉得大家还是要选一个自己感兴趣的东西,一直坚持做下去,丰富自己的生活。 @JY 踩过的坑是,简历一定要写自己熟悉的(至少能够展开来讲的),不要写一些不是很熟悉,或者临时抱佛脚的东西,一旦被面试官问到,会很影响在面试官心中的印象。面试的时候,如果可以的话,就把面试官引到自己的舒适区,因为每个人技术侧重不同,这样的话更能体现你的优势,这样面试成功的几率也会更大。 面试过程做的特别对的事情是,我每次面试都会录音,面试完会听着录音进行复盘。有些人可能觉得自己面完感觉很不错,但有时候自己再听一遍时会发现自己有很多可以改进的地方。 做的不错的地方是调整自己心态吧,刚开始投简历的时候一个面试都没有,自己心态受到了一些影响,因为是被裁的,心情有些失落。然后我趁国庆节,前三天,出去旅游了一下,回来就放松下来了,再去调整心情,安心准备复习,这样效果会好很多。 换工作的话,主要是看公司能否满足自身发展,因为我们换一份工作一般都是期望工作一年以上的(大家肯定不希望自己简历花掉),如果这段经历跟自己不匹配,那整体工作状态可能会不开心。另外像阿卡拉说的,团队氛围,可能进入团队之前会比较难判断出团队氛围好不好,一般二面或者三面就是你的领导,这时你可以看你自己的感觉和面试官契不契合,也可以先以是否符合自身发展为主。我接触的程序员都是蛮好相处的。 如何筛选候选人-面试官角度 @东野浪子我简单自我介绍下吧,我是 15 年毕业,16 年开始做面试官,我刚看了一下面试记录,这些年来总共面试了大概有 570 多位候选人。我现在是在字节的客户端架构部门下的 APM 部门,带客户端团队。 好简历体现在哪里 先说第一点,作为面试官视角,第一眼关注的是你的硬性指标:学校、工作经历、技能匹配程度。重点大学和大厂经验会是加分项,另外还会去看你的技能匹配程度,如果你之前是做基础技术的,你应聘的也是基础技术,这就属于比较匹配。但是如果你的这些条件都不算出彩的话,就需要用项目经历去弥补了,这是第二点我比较关注的内容。 对于项目经历的整理和描述要条理清晰,可以使用 STAR 法则,我做这个东西的背景是什么,基于这个背景,你的目标是什么,你通过什么行动达成了什么样的目标,最终一定要有结果,而且最好是可以用数据量化的结果。项目中一定要有重点,一些重要的结果和数据,可以使用加粗的形式去强化。 简历也可以提现个人风格,我看过一些简历,一看就知道这个人非常的极客。因为它里面有非常多的专业术语,能明显感觉出他对技术的理解非常深刻。如果你面试的是基础技术部门,那就应该在简历里多写一些你在底层技术的探索,或者你在技术优化上做过的一些事情。这些都是简历相关的内容。 好的应聘者需要具备哪些特征 对面试阶段候选人的表现,最重要的就是基础一定要扎实,基础决定了你以后的发展潜力,甚至决定你在职场中的天花板。这里基础又包括很多方面,比如计算机基础、操作系统原理、网络等等,这些东西一点要多查漏补缺,不要有明显硬伤。这一点如果表现不好,那肯定是过不了面试的。 再就是数据结构和算法,有一点需要澄清下就是不要畏惧算法,至少在我们团队算法考察最多就是 medium 级别,不会在算法层面太难为大家。很多同学面试挂掉,如果把结果归结于算法没写好,是需要纠正的。因为算法是作为一个侧面角度考察的,他不是直接决定面试结果,如果你前面回答很出色,就算是算法答的不太好,还是会过的。 第二点是领域知识,做iOS开发对苹果开发相关的比如UI动画、多线程、内存管理、性能稳定性等都要有一定的了解。如果是做底层技术,你还需要掌握 dyld、runtime 相关的底层原理和常见的优化手段。很多人会把这说成八股文,我感觉更合适的是把它作为对你技能点的考察。这类问题通常的考察方式是从一个非常简单的问题切入,然后抽丝剥茧,逐渐加大难度,看你能够顺利的通过多少关。 第三点属于项目亮点,比如一个很常见的面试问题:你做过最满意的一个项目是什么,项目里有哪些亮点内容?亮点内容应该体现出一定的复杂度,你跟其他人的方案有什么差别,使用了哪些设计能力,涉及哪些技术选型,如何协作和执行的。同时也不能只谈难度不谈收益,它达到了哪些业务价值,你在这里承担了什么角色,是否是跨部门项目,这些方面都可以作为亮点去讲。业务价值描述时可以通过方案前后的对比来体现,之前指标是多少,使用该方案之后达到了多少,这种展现是非常直观的,更能引起面试官的共鸣,这个技巧同样也可以用到汇报工作和晋升答辩中。 软素质也会作为面试考察中比较重要的一点,因为应聘者最终会成为我的同事或者下属,我会关注自驱力,你对技术有好奇心,会主动地探索。然后是规划能力、沟通协作能力、迁移复用能力等。这些点比较多,如果无法通过一次沟通完全展示出来,那可以根据自己的需要选择一两个方面有体现也行。比如你想转技术栈或跨专业,那你就要说服面试官为什么之前积累的经验可以继续复用。 一些面试小技巧对于没有把握的问题,不要不懂装懂,面试官会很讨厌不懂装懂的情况,这会严重扣分。还有就是对于你没有把握的问题,最好不要一言不发或者直接说我不了解。如果遇到了这类问题可以尝试从自己熟悉的角度切入,或者给出一个简单版本的答案。 第二个技巧是不要在面试过程中与面试官发生冲突,有可能他老问八股文,你感觉面试官在刁难你,或者你觉得面试官很菜,都不要起冲突。因为一般面试都会有面评记录,如果有冲突,这个问题被记录,后面会影响你再面其他部门,得不偿失。 还有一个技巧就是多复盘总结,很多人会有一个面试误区,感觉面试没发挥好,就不去想他了,而产生一些抵触情绪,这其实对自己提升是无益的。一定要有复盘,也可以跟小伙伴一起讨论自己的面试情况,避免自己有认知偏差。因为有时候我们感觉自己回答的很好,但最终却没面上,有一种可能就是你回答没有达到点子上,或者回答的比较浅显,跟面试官期待有偏差。 @zhangferry 对于软素质,我感觉它体现了一个隐藏因素--兴趣,有了兴趣做为驱动力,才会在没人约束的情况下自发去探索,去做到更好。其实很多人对编程,对开发这份工作是不感兴趣的,只是当做挣钱的一种手段,这没什么不好,反过来完全出于兴趣,敲代码时快乐的不得了的人也很少。但不管怎样的状态,工作中还是应该尝试去找些让自己兴奋起来的点,比如我解决了什么技术问题,老板给我奖励;我写了一篇文章,大家都给我点赞;我在团队做了什么分享,大家都来向我请教相关问题等等。这些跟技术联通的点和个人成就感结合起来,能更好的激发创造性。上班很辛苦,但不应该只有辛苦,毕竟这份工作我们可能还要在做几年或者十几年时间,一直都感觉苦肯定是很难精进的。这一点大家也可以结合自身情况多想一想啊。 面试结果由什么决定@zhangferry:本次分享的目的是给大家提供一些值得借鉴的面试方法,其实刚才也聊了很多面试之外的事,包括如何挑选岗位,如果在工作中补足自己学历或者经历的短板。回到一个比较重要的问题上,一次面试,我有多大概率能够成功。我认为,日常工作经验和总结占 60%,面试准备占 30%,面试相关的技巧和运气占剩余的 10%。对,有时候运气也会决定面试的结果。 如果是处于工作状态,近期并没有打算换工作的同学,可以在工作期间多考虑下如果想要优化自己的简历我应该做好哪方面的事情。如果是正在准备面试的同学,工作内容已经没法改变了,但还可以把时间多放到面试准备上来,充分的准备也能提供我们通过的概率。 还有一点想要强调的是,有不少人会在准备不充分的情况下去面试,这个其实是挺不好的。因为现在面试机会真的不多,每次面试都很宝贵,另外以字节为例,不超过半年的面试,面评记录会一直留着。如果你之前面试效果不好,那后面你准备充分了,换个部门去面,就很大概率会因为面评不好直接被刷下来。我遇到过好几次这种情况,有些人会说是不知怎么简历就被 HR 捞到了,然后电话联系要约面试,自己稀里糊涂就参加了。如果遇到这种情况,一定要以自己实际准备的情况来决定是否要约面试。 QA 遇到面试就紧张,脑袋空白,面试过程不会吹怎么办? @东野浪子:紧张背后的原因大多数情况就是准备不充分,导致不自信。我们应该从这个方面去解决紧张的问题。充分的准备就是上面说的一些基础知识,领域知识,要非常熟悉;涉及项目经历这块则可能需要更长期的准备。比如日常工作中主动承担一些有挑战性的业务,对一些技术问题进行深入探索。这些点都是面试过程中可以让自己出彩的地方,所以工作的一部分也是在为自己的简历打工。 不会吹可能侧面想说的是不会表达的意思,会有些人面试很强,但是实战一般。比如一个人实力是 60 分,他能说成 80,而有的人实力是 80 分,因为不会表达,让人听起来只有60 分。这样的话,就需要培养一下自己的演讲或者表达能力了。这种能力在日常工作工作、汇报或者晋升答辩时都非常重要,这个能力本身也属于面试考察的一部分。所以平时可以刻意得去培养锻炼一下。 写了两年 UI 怎么办,就做了基本的页面开发,感觉项目经历很空洞 @东野浪子:如果一直重复一种开发模式,那确实不太好。你可能很难改变开发的需求,但是使用什么样的技术却是没人会限制你的。即使是开发UI,从 Frame、Autolayout、Masonry 再到 SwiftUI,包括 RN 和 Flutter,这一步步流程都会涉及很多 UI 内容,不同框架的出现是解决什么问题的,怎么才能更适合当前工作且提高效率,这些都是自己可以延伸思考的事情。另一方面,你做UI会不会涉及到流畅性问题、会不会涉及一些Crash,那这些问题都是可以再延伸很多内容的。所以即使复杂度不高的项目,也不会说不涉及复杂的问题,就看你有没有主动给自己增加难度,去做有调整性的那部分。没有大厂经历也类似,没人会限制你学习大厂的技术,而且现在有很多途径去获取他们的技术方案,自己可以多学习,多思考,然后实践到自己的项目中。我们是非常欢迎这种有自驱力和主动性的同学的。 如何寻找自己的第二增长曲线 @东野浪子:第二增长曲线,往大了说比如你现在是一个程序员,这是你的主页,第二曲线就可能是一个副业。比如炒股、做新媒体、公众号、拍抖音等等。往小了说,比如你现在是 iOS 开发,你只会 OC,那 Swift 以后可能会是一个趋势,你精通 Swift,那这就会成为你的第二曲线。你如你现在是做UI页面,做纯业务,那是不是可以去了解一些底层技术,像是 APM、DevOps、编译链接、端智能等,或者往跨端、全栈方面考虑,这些都是可以成为第二曲线的。第二曲线的东西一定要跟你的兴趣匹配,你要对他有热情,即使没有收益也能够坚持下去那种。 请问“横向协作能力,迁移复用能力”,这两个软素质一般会如何考察和作答? 是否是先回答自己的方法论,然后举例来说明? @东野浪子:横向协作能力,一般会在大型一些的跨团队合作项目中会有。比如我们是做客户端监控的,有些东西就会是一个双端方案。比如客户端上报流量,太高的时候后端会触发一些容灾或者限流,这个跟每个端的特性都没有关系。那如果作为这个项目的 Owner,你怎么把事情推进下去,怎么保证项目周期可控。他会涉及一些跨团队的沟通协作、目标对齐还有项目管理,这里体现的就是横向协作能力。 迁移复用能力属于比如你在一个领域 APM 做了很久,那现在需要专做音视频,相对于 APP 来说,怎么对音视频进行性能优化呢?这里有很多方法论其实是可以迁移出来再次适用的,像是线上容灾、问题响应、防裂化等处理方式都有一定的相似性。 内推信息 因为是为了信息互通,各位分享者团队有都有招聘需求,这些是内推信息:内推人(微信) 岗位描述 招聘需求zhangferry(zhangferry) [北/上/杭]抖音iOS基础技术-研发效能 有静态分析、LLVM、单元测试、自动测试框架、架构、工程效率、全栈开发等经验者优先,有业务背景但对技术有深度追求者优先。东野浪子(569087164) [北京]字节跳动 APM客户端-iOS 负责字节跳动所有移动端产品的性能优化和问题排查。北京还有 3 个 HC阿卡拉(myself439664) [深]抖音iOS基础技术-自动化测试 提升抖音等产品的研发代码质量,降低测试成本,参与自动化测试服务建设。JY(q491964334) [北/上]小红书-客户端基础架构 有过千万 DAU APP 的基础架构方面的开发经验,具有钻研 iOS 系统底层实现与优化的能力对于内推岗位,我也维护了一个公共链接,内推信息汇总,大家如果有招人需求可以到这里来填写。老司机技术周报很早也在维护一份内推信息,会更全一些,可以点击这个查看:iOS靠谱内推专题