概述:
坐标: 福建福州
学历: 专科(软件工程专业)
历时: 2 个月(2018.3.20~2018.5.17)
平台: 前程无忧(51job.com), 智联招聘(zhaopin.com)
投递简历: 62 份(前程 49 + 智联 13)
面试: 22 次(含简历被 HR 查看邀请面试)
Offer:6 份
正文:
学历一般, 2 年 JavaEE+2 年 Android 小 Coder,17 年失踪 1 年, 18 年年后回市区开始投简历面试.
福州互联网氛围一般, 纯互联网公司一手可数, 业内叫的出名字的几家公司也多以硬件产品搭载软件服务为主(网龙, 星网锐捷, 新大陆, 福晰), 唯一和 BAT 有联系的百度 91 也在前年撤出了. 相对学历要求宽松一些, 专科本科都能接受, 招聘网站上也较少明确要求 985,211 工科专业, 当然不排除存在专科学历所接触不到的互联网公司. 相应的, 同岗位同经验要求的工资水平较一二线城市偏低一两个档次, 福利方面也并不是那么完善及时等情况, 后面会说明.
准备:
用一整个晚上, 整理各个平台上开放的简历, 对当前的基本资料, 技术栈, 工作经验做了同步. 这里吐槽一下智联, hr 看到的简历默认以第一份工作开始时间至今, 算为工作经验, 且无法手动修改. 我是 12 年开始实习的, 智联算成 6 年经验, 面试的时候经常被问到 "你有 6 年经验还来面试开发岗? 我们这有项目经理的岗位需求, 了解一下?" 每次都要解释一番, 尴尬... 技术栈及项目负责的主要模块功能点方面, 熟悉地图 LBS, 支付, 自定义 View 相关技术. 简历方面的重点就是 --
1. 多平台开放简历求职时, 信息同步;
2. 能够清晰表达工作经历及近期职业规划;
3. 熟悉的相关知识点, 项目中实际操作过的功能点可以写在简历中. 写在简历中的, 一定要完全掌握, 完全, 掌握(很重要, 面试的时候一定会重点提问).
投递简历:
1. 工资
出去工作, 第一位就是基本生活保障, 我不能骗自己说我可以不要钱, 只要能学到经验就好, 醒醒. 可以有一定幅度, 但底线要清楚. 前面提到 2 年 JavaEE+2 年 Android 经验, 那么平台上应届生及开发新手待遇的就不需要点开招聘的详细信息了. 福州这边 Android 0~2 年大约是 2-5k. 那么我所开始了解的就是 6k + 岗位的招聘详情了.
2. 工作地点
除了独栋公寓这种职场精英的豪华配置, 福州这个城市从南仓山师大到的北三环软件园 G 区, 由东马尾自贸区至西闽侯移动大楼, 单程打车不会超过 1 小时 (台风过后水漫金山除外), 住房开销住哪都差不多, 上下浮动几百块 / 月, 一个人住无非就是一千到两千之间的普通配置和休闲配置差异. 所以要么你准备好 3 个月的房租押金 + 1 个月的个人开销, 然后目标公司选择非初创型, 拿到 Offer 后直接搬到公司附近; 要么对工作稳定性不确定(其实是兜里暂时没 3 个月的房租) 近期不准备搬家的, 住在金山闽侯的过滤掉马尾, 软件园附近的过滤掉仓山的工作机会. 部分公司提供全市区班车的不在此列. 我暂时没打算换房子, 所以投递简历的地点就基本下面这张图的范围内.
全市工作机会
目标公司投递范围
目前福州开通的就 1 条地铁, 2.3.4 在建, 也许以后 5.6.7.8 线开通后会有更多选择. 就目前来说, 五月初就 37的天气, 急刹急起动的路面交通环境, 几十号人挤在一辆没空调的公交里, 这么晃晃荡荡的待 1 小时以上时间到公司上班, 浑身粘 fu fu 的坐在工位上敲代码, 真的非常影响一天的工作质量, 更别说好多公司员工办公区连空调都没有. 再碰上下雨天, 小台风... 住的近, 也很重要. 你可以加班到深夜, 散步回家, 不怕没公交, 路上再带一份宵夜. 你可以不紧不慢的起床, 做一份营养早晨, 让自己一天能量满满, 走路到公司打卡上班.
划重点!!! 所有办公区在住宅楼内的,** 小区,** 花园,** 城, 地图上拉出来, 看到只要是住宅区的, 一定! 一定! 一定是非常没钱的创业公司, 工作室, 其他行业的正经公司不重视不投入的研发部门 / 分部. 所有面试过的此类公司, 全部都是要求独立开发, 3-5 年经验, 混合开发 / 同时会 IOS, 有 IM 经验, 电商经验 (PS: 我们要做商城, 支付, 还能聊天, 定位, 保活) 负责需求 UE 开发打包上线市场全部工作, 1 年经验工资标准. 其中有一家最奇葩的, 8 人挤在 20 平的客厅里办公, 进去给了我一张算法笔试题, 90 分钟, 不用现有 api, 手写数组多子集 O(n)排序底层实现 + 字符串二叉树翻转截取单词 & 符号, 然后组长在向经理吐槽在书房敲代码的组员花 2 倍时间写出来的代码质量没有自己一半好, 自己又抽不出时间. 我 TM...
3. 投简历
确定地点, 工资下限, 避开刚才话重点的不要投的公司后 -- 海投.
最好一边投一边用表格记录下来, 根据地点排序. 前程提供保留 60 天的投递记录, 智联 7 天, 放在最显眼的地方.
记得每天第一时间刷新简历, 或者直接购买简历置顶 / 更新服务.
行程安排:
海投完接到的第一个电话肯定是在家里, 翻开之前做的投递记录, 找到目标公司.
1. 和人事确认招聘岗位
2. 商定面试时间
3. 询问公司基本情况及岗位要求
4. 打印简历, 随身最少带 3 份出门
首先你需要注意, 打电话联系你的可能不是你投递过的公司, 甚至不是开发岗位. 我接到过起码 5 个销售岗的电话, 还有 2 个开发岗是非 Android 的岗位. 三线城市打电话给你的很大可能是公司的前台人员, 他们在公司同时负责浏览简历电话邀约的工作, 他们可能连什么是 Android/IOS / 服务端 / 前端都分不清.
接着确定公司地址, 并以短信形式发给你. 有可能招聘信息上的地址没更新(发招聘信息的事又是前台干的, 还可能是几个月前干的, 买了服务之后公司可能都搬家了, 这个岗位还是缺人). 预估下出发过去需要的时间. 因为后面接到的电话你可能在路上, 你要翻出行程安排往中间插入, 或者往后面排. 建议 1 天只安排 2 个面试, 上午下午各 1 个. 这样你有充足的时间到达公司, 吃午饭, 整理面试记录, 补缺上午面试没回答上来或者回答不好的知识点. 一般面试邀约的时间大部分安排在 10:00,15:00, 他们开完早会, 确定好会议室及出席面试的部门人员等. 但这样同样使得我们仅仅只能在半天里面试一家. 如果有 9:00 或者 14:00 的面试安排, 在路上接到面试邀请电话, 那么可以安排在 11:00 及 16:00 这个时间到达. 上一个面试完直接打车到下一家公司附近吃午餐休息. 如果一天安排多家面试的话, 路上时间会非常赶, 精神也会一直紧绷着(千万别想着车上你能复习面试题, 想都别想!), 加上 4-5 月这个季节的福州, 赶路汗透的话, 形象不太好(虽然开发岗并不太要求). 程序猿的话, 如果是衬衫赴试, 建议里面穿一件棉质坎肩(无袖背心, 不是吊带背心), 可以吸汗. 程序媛的话, 建议不要穿薄的或者纱纺的上衣, 流汗了会看到背后的带子...
然后可以口头询问下公司的基本情况或业务, 如果技术面过了, 人事面询问你对公司是否了解, 这里能答出 1.2.3 的话属于加分项. 当然也有可能是发给你一个简介短信或者官网地址, 需要你自行查阅.
最后, 包里带好简历,"伸手只要钱"-- 身份证, 手机, 纸巾, 钥匙, 零钱, 最好再带支签字笔. 你到前台大部分是先让你填表格, 一开始我情绪上是抵触的, 你们明明可以看到我的电子简历, 我也带了纸质简历了, 为什么还要填资料. 后来知道其实每个人的简历模板不一样, 填资料统一格式, 对于公司来讲更好效率的做面试反馈记录. 当然里面的身份证信息这些隐私你可以不填, 理由 -- 入职时提供详细资料. 如果明确要求你必填的话... 和以下几种情况统一处理: 面试要求提供身份证复印件, 毕业证复印件乃至原件的, 这类公司基本做外包业务或者转手卖你的个人资料的. 现在很多业务只需要一张身份证复印件就能办理的, 都不需要本人. 如果你非常想去这家公司, 而他们又强制要求在面试阶段提供以上资料的, 可以在空白区域签写 "仅供面试用", 字迹要覆盖到复印件内容的边角. 这边点名 "福诺", 人员外包公司, 前几年面试的时候, 要求带身份证复印件, 毕业证复印件, 都带了. 还要当场提供上司联系方式, 并进行背调, 闹了点不愉快, 最后技术面草草结束.
划重点!!! 简历上不要写期望工资, 前台填表的期望工资一栏填详谈.
技术面:
技术面坐你对面的人, 十有八九在 1 分钟内才看到你的简历, 他们通常会一边看简历, 一边叫你做自我介绍.
1. 简历上的资料, 你最好用一句话描述;
2. 重点讲述你的工作经历, 所掌握的技术点, 负责的项目具体模块(省略坑, 技术难点, 留给后面);
3. 近期正在接触的新技术, 框架或者正在看的技术类书籍.
30 秒到一分钟内介绍完毕, 对方基本也看完了你的简历, 对你有了初步了解. 这时候
1. 多年不编码的项目经理, 会介绍公司目前业务所需要解决的技术难点询问你的解决方案或思路. 这需要你平常对 Android 了解的广度.
2. 还在负责具体代码开发进度的项目经理或者是组长(你的重要程度还没达到需要经理出面), 会直接让你独立开发, 并提供 APP 原型让你预估开发时间. 这种情况在三线城市就比较坑了, 大致属于项目非常紧, 马上招人, 马上开发或者迭代新功能, 不会提供之前的文档, 因为根本没有文档, 外包出去的业务接手回来或者上一个离职的人受不了所丢下的烂摊子, 只会催进度. 而外包的业务接回来自己做, 所开的工资待遇比外包花的钱还要少, 还想完全掌控产品代码. 并且项目结束就没你什么事了, 基本清退. 之所以要的这么急, 恰恰说明组织结构安排就没有备用人才, 或者没留出时间做技术预研, 一个项目接一个项目, 甚至一个项目做 2/3 就又来了新项目, 抽调人员. 这种情况我建议后续问题简单回答, 直接结束面试.
3.Android 出身的项目经理, 组长, 并且你简历 + 自我介绍所提及的技术栈和他们公司业务完全不搭边, 他们会按套路问你基础, 然后过度到他们自己会的或者正在做的功能点, 刨根问底. 你在背回答的同时, 是动手做过的用自己的语言串联起来并带到自己的领域扩展话题; 是死记硬背的精确简答然后带到自己的领域扩展话题.
面试题:
1. 简单介绍 Android 四大组件
简述:
Android 应用中, 用户能看到的所有界面, 都是 Activity;
应用需要在用户看不到的后台保持运行的操作, 就是在 Service 中进行处理的(比如支付宝的快捷支付);
系统以及应用发出的所有广播需要广播接收器 Broadcast Receiver 来接收处理(比如开机启动广播, 网络状态切换);
当你需要提供自己应用的数据给其他应用使用时, 就要用到 Content Provider(比如读取联系人).
详述:
Activity 的生命周期: onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(), 在 onStop()之后 Activity 从后台回到前台会执行 onRestart(),onResume(), 如果 Activity 被异常销毁想保存当前状态就要重写 onSaveInstanceState()进行状态保存操作并在 onCreate()的参数 bundle 中取出数据执行恢复操作, onSaveInstanceState()在 onPause()之后, onStop()之前执行.
Activity 的启动模式: standard,singleTop,singleTask,singleInstance.standard 模式最常用的, 也是默认的启动模式; 指定为 singleTop 启动模式的 Activity, 只要不在返回栈顶, 就重新创建一个, 常用于展示资讯类 App 的详情页; 指定为 singleTask 启动模式的 Activity, 如果不在返回栈中, 就新建一个. 如果返回栈中有, 就移除之上的 Activity, 执行 onNewIntent(), 可用于在 App 任意界面执行退出登录操作; 指定为 singleInstance 启动模式的 Activity, 系统会为这个 Activity 单独创建一个任务栈, 这个 Activity 在自己的任务栈里面存在, 用于来电显示页面等场景.
Service 的启动方式: startService(),bindService(). 通过 startService()方式启动的 Service 会在后台长期运行; 通过 bindService()方式启动的 Service, 会依附于启动它的 Activity,Activity 退出后 Service 也随之销毁.
Service 的生命周期: 通过 startService()方式启动的 Service 生命周期为 onCreate(),onStartCommand(),onDestroy(); 通过 bindService()方式启动的 Service 生命周期为 onCreate(),onBind(),onUnBind(),onDestroy(); 同时调用 startService()及 bindService()启动的 Service 生命周期为 onCreate(),onStartCommand(),onBind(),onUnBind(),onDestroy().
广播的类型: 标准广播, 有序广播, 标准广播异步发送, 优先级高的广播接收器 Broadcast Receiver 可以优先收到有序广播并选择截断有序广播或继续传递.
应用可以发送全局广播让所有应用接收, 也可以发送本地广播只让本应用接收, 这样更高效也更安全.
ContentProvider: 管理数据, 提供数据的增删改查操作, 数据源可以是数据库, 文件, XML, 网络等, ContentProvider 为这些数据的访问提供了统一的接口, 可以用来做进程间数据共享.
ContentResolver:ContentResolver 可以不同 URI 操作不同的 ContentProvider 中的数据, 外部进程可以通过 ContentResolver 与 ContentProvider 进行交互.
ContentObserver: 观察 ContentProvider 中的数据变化, 并将变化通知给外界.
扩展:
Activity 好不好看, 取决于布局. 常用布局 FrameLayout,LinearLayout,RelativeLayout,AbsoluteLayout,TableLayout, 百分比布局, ConstraintLayout(Android Studio 2.2 中主要的新增功能之一);
Activity 之间传递数据, 可以通过 Intent;Activty 跨进程通信, 通过隐式 Intent(启动第三方地图, 拨打电话, 打开浏览器等);
Service 跨进程通信, 可以通过 AIDL; 发送全局广播, 也是跨进程通信的一种方式. 当然还可以通过文件共享, socket 等方式进行跨进程通信.
这里进行抛砖引玉, 技术面的套路就是简述答案, 根据面试官的表情反应或者追问选择详述, 在详述的过程中直视面试官的眼神决定详述的程度与侧重点, 最后通过收尾的扩展知识点将话题延申到自己熟悉的领域或者项目中.
以上是我所消化的知识点, 面试题网上有不同广度, 不同深度的版本, 各大公众号还经常更新一些大厂的面试题, 活到老学到老.
划重点!!! 技术面不要单独和组长谈工资, 不要单独和经理谈工资, 经理说他可以负责你的待遇也不要和经理谈工资! 只有在有人资在场的交叉面试才可以谈工资. 明面上, 所有公司的员工薪酬属于保密资料, 不许透露(虽然大家进公司后都大概清楚). 那么我面试你进来做我下属, 工资比我还高? 你的面试反馈根本不可能到有好评, 哪怕你满分. 一般忽悠你说出期望薪资之后你能得到的只有一句 "等通知", 等于没通知. 真正拿项目提成的经理, 根本不需要问你的工资. 公司具体在这个岗位的投入, 你接不接受都直接和人事沟通了, 你的薪水高低, 不影响他的收入. 正确回答是 "如果今天面试技术层面认可我的话, 具体待遇和人事沟通." 咬死, 不说具体数字, 逼的不行了, 也只能说根据公司岗位安排. 在这个问题上, 我连续遇到 4 个技术面问工资然后被 PASS 的情况, 才慢慢回过神来.
人事面:
如果人事面排在技术面之前, 不要让话题涉及到工资. 聊聊喜欢的工作氛围, 下班的业余安排, 近期的职业规划, 对公司的兴趣, 让人事详细介绍公司情况.
如果技术面先来, 并且面完后有把握, 人事面就详细询问公司的发展方向, 福利待遇, 最后提出期望薪资 + 15% 的一个数字. 如果真的到复试最终沟通工资的时候, 一般是会在你之前提出的期望工资上压一部分的. 可以谈工资, 但别限定太死. 可以接受加班, 但要理性(睡公司, 一个月工作 28 天每天 12 小时这种, 很有可能在二三线城市的公司遇到). 到这里, 除非真的待遇差太多, 基本都是可以发 Offer 的. 不要急着答应入职时间, 多面几家, 多拿几份 Offer, 钱多活少离家近, 最少 1 样, 多多益善.
插曲:
4 月底入职了一家公司 "大果", 面试时的第一印象就是办公位置偏僻, 办公条件简陋(35 度的天没开空调). 当时工资方面确实不太满意, 8k. 让我入职的唯二理由就是 --
1."离家近". 多近? 小黄车 10 分钟, 公交 2 站路, 早上吃着包子散步过去 20 分钟.
2. 当时明确问了 Android 组长, 接手项目有文档, 有交接的开发人员, 有产品负责人提供业务讲解.
4.26 入职, 提交材料, 没签合同, 人事的理由是: 公司合同模板最近正在调整, 反正一个月内肯定签的.
入职后的情况是:
1. 项目交接就是一个 SVN 上的代码, 没注释, N 人经手, 没文档, 前一个经手的是实习生, 回去毕业答辩了节后才返岗.
2. 当天上午开会客户马上要产品, 晚上交代第二天打包代码, 还差整整一个模块功能没实现, 加班. 没有入职适应过程, 没有项目了解时间, 直接写代码.
3. 项目管理的妹纸过来问我什么时候能打包, 我说这三天是不可能出代码的. 她一脸嫌弃的问 "你工作几年了? 实习生也只要 2 天就做完了."
心里万马奔腾, 当时脑子里就把她按在地上 "你做项目管理几年了? 你哪个项目第一天招人第二天完成一整个模块代码的?".
隔天我和人事提离职了, 要求拿回我之前的离职证明. 回复说了解一下情况, 拖了一天.
第三天临下班还没反馈, 再询问说领导会找我谈话. 这三天面试我的 Android 组长每天不少于 3 个面试电话, 自己也准备找下家.
第四天领导跟没事人一样, 继续布置工作任务. 中午吃饭的时候直接去办公室找领导谈话. 领导一脸和气的泡茶, 谈公司愿景, 谈接下来项目如何合理规划, 谈协调工作再拉一个人来一起写代码, 争取这周完成, 谈到晚上又加了个班.
第五天我把这个模块的功能实现打包并整理了开发文档, Xmind 流程图(鬼知道我再这几天里是怎么完成的), 到公司才听说昨晚临时决定五一推迟放假, 要实现另一个模块功能打包交产品给客户. 我 TM... 早上找领导谈了一次, 领导一脸和气, 中午找领导谈了一次, 领导一脸无奈, 晚上 7 点再找领导, 领导妥协, 交接工作到夜里 9 点.
节后 5.2 上午 10 点来办理离职手续, 一共 15 人的公司, 70 平的开放办公室, 走钉钉办公离职流程 2 张表走到下午 4 点, 等拿回离职证明等到 5:30. 最后一次打卡下班. 最后工作时间算到 4.26~4.30, 一共五天. 离职一天不算在内.
5.15 所有人都发工资了, 我没有到账. 已被 T 出公司微信群, 问 Android 组长, 回复上班 5 天没工资的.
5.16 问人事, 回复今晚到账.
5.17 再次问人事, 需要领导处理.
5.18... 算了, 走程序吧.
总结:
1. 了解你自己的技术栈, 项目经验并流畅表达乃至在面试中从不擅长领域切入到自己的技术栈;
2. 明确下一份工作的薪资底线, 工作地点, 不要因为一周, 十天, 半个月, 一个月都找不到合适的就无限放低要求, 散失信心, 草草入职;
3. 随时记录面试情况, 调整面试安排及精神状态;
4. 人事面谈工资, 技术面谈技术, 老板面谈理想谈规划谈吃苦耐劳;
5. 面试对办公环境, 直接领导的第一印象基本就是这家公司的氛围了, 合不合适, 真的看眼缘.
选择了小城市的安逸, 就要接受二三线公司的坑. 和自己和解. 你是什么样的人, 就会遇见什么样的事, 碰见什么样的人, 接触什么样的世界. 你在什么高度, 就会看到什么样的风景. 努力让自己变的更优秀吧!
后记:
最后拿到一家上市公司旗下旅游行业子公司 10k 的 Offer, 还有 10% 的绩效, 就福州来讲相对还可以了. 独立开发, 项目从 0 开始, 时间要求有也比较紧, 挑战一下吧! 这两天在准备入职材料, 办新的工资卡, 整理这篇面试笔记. 有 10 年开发经验的大神坐镇, 有大公司背景的 UI,PM 管理比较人性化. 至于是不是坑, 下次看我什么时候再发面试笔记你就知道了. 有机会, 去大城市一线公司闯一闯吧!
来源: http://www.jianshu.com/p/88b5e4435981