job-others
- [companies](companies.md)
> To summarise, we can say that the word job refers to a particular employment role or position, such as cook, teacher or banker, whereas work refers in a more general way to activities that you do. > > Interestingly, all jobs involve work but doing work isn't always part of a job. > > – [ref](https://www.bbc.co.uk/worldservice/learningenglish/language/askaboutenglish/2009/03/090331_aae_work_page.shtml#:~:text=To%20summarise%2C%20we,of%20a%20job.)
## Get a Front-end Job
计算机基础
- Algorithms and Data Structures
- Computer Network
- HTML5+CSS3+JS
- Vue & React
- 搜索(向搜索引擎提问)
### Knowledge
- 算法(最重要)
- HTML
- CSS
- JS
- Vue & React
- Tools
### Interview
- 简历
- 面试题
### 找工作的步骤:
- 有针对性准备简历
- 建立公司列表,找到最想去的五家公司(有赞)
- 投递简历
- 面试
- 拿到 Offer
### 非技术能力
- 与目标职位匹配
- 技术热情
- 学习能力
- 沟通能力
- 项目经历-不局限于实习,可以是自己日常的项目尝试
- 基础和工程并重
什么是诚意?
去求职的时候,有没有对对方公司的产品、业务有一定的挖掘和研究,有没有对对方行业竞争态势有一定了解。
### 面试
- 对面试公司有一定了解
- 确定自己的竞争优势
- 群面(帮助别人解决问题)
- 自信、做自己
隐喻:木桶理论的个性引申——短板一般是综合能力,它会随着长板(专业能力)的成长而成长。
****面试题的背后藏着的问题是什么?****
你的兴趣?
面试官真正关心的,是你对一个问题的思考,不仅仅是问题本身。 询问对方最熟悉的领域,面试官通过对方对该领域的了解程度,来判断简历当中信息的可信度
你最拿手的是什么技术?
跟我描述一下你的大学校园的布局?
考察能否向一个事先不了解的人,描述清楚一件事物的能力
上海有多少辆出租车?
@王建硕 https://mp.weixin.qq.com/s/ge34AxyKuhBGfUqkZ3dYmw
### 信源/求职渠道/参考资料
来自曹大的《你凭什么做好互联网》的「隐性成本」一篇:
做好关键决策,当我选择职业方向,选择企业时,决策差异导致的结果大不相同。**个人职场选择要对目标企业和目标行业进行全面的信息采集和分析,不仅对通过面试有帮助,也对正确决策有帮助**。
- 官网
- BOSS 直聘;牛客网(题库)
- 利用人脉([Linkedin](https://www.linkedin.com/feed/))
参考资料
- [2022 校招日程](https://www.nowcoder.com/school/schedule)
- [ruanyf 谁在招人](https://github.com/ruanyf/weekly/issues?q=is%3Aissue+sort%3Aupdated-desc+%E8%B0%81%E5%9C%A8%E6%8B%9B%E4%BA%BA%EF%BC%9F)
- [校招污点公司记录](https://github.com/ShameCom/ShameCom)
- [一二线城市有哪些值得加入的互联网公司?](https://mp.weixin.qq.com/s/bx2yQbEcEDGR-74geWwnhg)
- [杭州有这些互联网公司,你都知道么?(2021 最新版) - 代码随想录的文章 - 知乎](https://zhuanlan.zhihu.com/p/339717225)
- [杭州公司1](https://github.com/csguide-dabai/Programmer-look-at-China/blob/main/%E6%9D%AD%E5%B7%9E.md)
- [杭州公司 2](https://github.com/yangqiong/HangzhouITMap/blob/master/src/companies.js)
- [启信宝](https://www.qixin.com/)
- [天眼查](https://www.tianyancha.com/)
法律
- [法律法规数据库](http://search.chinalaw.gov.cn/search2.html)
- [中国法律开放平台](http://open.pkulaw.cn/)
一、Algorithms and Data Structures
- https://labuladong.gitbook.io/algo/
- https://labuladong.github.io/zgnb
- https://leetcode-cn.com/ https://lc.netlify.app/#/ https://www.programiz.com/dsa(这个不错)
- https://github.com/trekhleb/javascript-algorithms
- https://visualgo.net/en
- https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
- https://www.bigocheatsheet.com/
- https://www.youtube.com/watch?v=8hly31xKli0
- https://www.geeksforgeeks.org/data-structures/
[怎么掌握算法和数据结构](https://www.hackerearth.com/blog/developers/7-steps-to-improve-your-data-structure-and-algorithm-skills/)[其他参考方法](https://qr.ae/pGUMMc)?
- 既要做适当数目的题目,又要对所作的题目有一定深度的理解。做100道典型题目即可。
深度的理解表现在:
- 快速编码写出答案
- 使用正确的语法
- 可以一次性写出简洁的代码
- 使用已有代码解决新问题
- 熟悉所使用的数据结构,如果可能还可以直接实现
- 制作一张包含着核心面试问题的列表,可以去 leetcode,也可以阅读《剑指 Offer》
- 掌握每一种数据结构
- Arrays and Lists
- 2D Arrays
- Strings
- Linked List
- Stack
- Queue
- Hash Table & Hash Set
- Heap
- Graphs
- Binary Tree
- Binary Search Tree
- Trie
- 间隔重复(第一次重复的 3 天后,第二次重复 1 周后,第三次重复 1 个月以后)
- Isolate techniques that are reused. Isolate actual code blocks.(当我解决了二分查找的 5 个问题,我可以提取 isolate 出相关的二分查找代码,反复练习。这部分代码可以应用于类似的问题中)
- 深度的问题解决了,可以进行广度练习了。解决真实的面试问题。
- 在纸上练习,通过计算机练习会更方便,但不利于自己真正提高解决问题的能力
二、 Computer Network
- 图解HTTP
- [Beej's Guide to Network Programming - Using Internet Sockets](http://beej.us/guide/bgnet/)
- [CS144, Introduction to Computer Networking](https://youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS)
- [计算机网络自顶向下方法 Wireshark 实验](https://gaia.cs.umass.edu/kurose_ross/wireshark.htm) | [Daryl's TCP/IP Primer | Addressing and Subnetting on the Near Side of the 'Net](https://www.ipprimer.com/#/)
[怎么了解计算机网络](https://qr.ae/pGDSKm)?
- 根据关键词去 Google 搜索,比如,TCP/IP,firewall,DNS,HTTP 等
- 在最开始学习时,略去那些有太多技术细节的文章
- 阅读那些用简单的词汇解释含义的页面
- 一旦你理解了概念,也见过一些对概念的应用,然后就可以研究技术细节了
三、 HTML5+CSS3+JS
HTML,CSS 控制网页的内容和样式,JavaScript 控制交互。学习 JavaScript 过程中会涉及它的基础知识,如变量、数组、对象、循环和函数。
我的学习路径:
- freeCodeCamp's Responsive Web Design(completed)
- freeCodeCamp's JavaScript Algorithms and Data Structures(not complete)
- https://github.com/bradtraversy/50projects50days
- https://developer.mozilla.org/en-US/docs/Learn/Front-end_web_developer
- https://github.com/trekhleb/javascript-algorithms
四、Vue & React
- 系统一点看官网: https://v3.vuejs.org/ && https://reactjs.org/
- 快速一点看 vue && react 小书,这是一个比较有名的博主写的系列文章,核心概念:https://youtube.com/playlist?list=PL4cUxeGkcC9hYYGbV60Vq3IXYNfDk8At1 && http://huziketang.mangojuice.top/books/react/
- 上手你必须要知道的: react 生命周期,组件概念(state,props,render 等),数据流(例如父子组件如何通信)
- https://github.com/answershuto/learnVue
- https://vueschool.io/?friend=codesource
https://www.yuque.com/tianheg/job
## 浏览过的资料
- [如何准备好一场面试?](https://zhuanlan.zhihu.com/p/422519631)
- [怎样花两年时间去面试一个人](https://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/)
## 面试题目
面试题目我个人觉得主要分为两个模块:
- 简历中项目包含的技术栈
- 基础的技术知识
### 简历中项目包含的技术栈
- 搜索
- 整理
- 运用
搜集
例如:你简历上写了会 Spring,那么你就去 Google 搜关于 Spring 的面试题,应该有人专门整理了。
其它的技术框架采用同样的思路。
整理
把搜集到的知识点,整理出来,还是拿 Spring 来说,整理出 10 道基本上就可以了,然后有重点到一般罗列出来。
其它的技术框架也是采用也同样的思路。
运用
其实这一步才是最重要的,这里不是说背,而是当你看完这些整理好的面试题后,对于每一个知识点,都要用自己的话去描述一遍,这里的自我描述和整理出来的绝对不一样,这一步差异很重要,这样的差异给人的感觉就是:你懂这个知识点了,你不是背的。
### 基础的技术知识
这里的基础的技术知识主要是指:例如你使用的计算机语言是 JAVA,那么和 JAVA 相关的知识点,是不是要准备一下,集合,JVM,多线程这些的。
然后继续采用上面的三步,搜集,整理,运用去一步一步完成。
## 面试心态
其实这里的面试心态主要是指:如何去看待在面试中出现的一些问题?
简历写好,面试题目准备好,就开始投简历吧!
其实到这一步,你觉得自己准备好了么?
并没有,后面你还需要修改简历,搜集,整理面试题目。
所以千万不要完美主义,准备一阶段就开始投简历面试吧!
但这里我需要强调一个前提,本来我是不打算说的,因为怕得罪一些人,但想想会看这篇文章的人也不多,能看到这里的就更不多了,也就无所谓了。
在一开始投简历的时候,会有一些”猎头”找你,给你推荐工作,一定要认真筛选一下。因为有些”猎头”他们拿到你的简历之后,会胡乱投。我前面不是说了吗,你前期还没准备好,如果这个时候简历被投了不错的公司但没通过,等你后期准备好了,再去投这家公司的时候,简历就会被占用了,这个机会就失去了。所以前期这块一定要注意。
前期可以自己在招聘网站上筛选一下,先自己定点投一些小的公司,先刷刷经验。
但尤其在一开始一定要有一个强大的心。
我上面不是说你没有准备好吗!然后你简历投了,面试机会也有了,但一开始面试肯定会磕磕碰碰,你也会遇到各种奇葩的面试官,这个时候你都要抱着一个心态。
**我就是真的很差,我也不能让你给我否定了**。
https://github.com/paddingme/Front-end-Web-Development-Interview-Question https://github.com/CavsZhouyou/Front-End-Interview-Notebook https://github.com/qiu-deqing/FE-interview https://github.com/jirengu/frontend-interview https://github.com/helloqingfeng/Awsome-Front-End-learning-resource https://github.com/lgwebdream/FE-Interview https://github.com/woai3c/Front-end-basic-knowledge https://github.com/haizlin/fe-interview https://github.com/huruji/FE-Interview https://github.com/HerbertKarajan/Fe-Interview-questions https://github.com/azl397985856/fe-interview https://github.com/springHyc/InterviewLibrary https://github.com/zwxs/frontInterview https://github.com/w3cmark/resume https://github.com/dolymood/front-end-face-questions https://github.com/wangwenjie1314/webQd https://github.com/zhenzhencai/FontEndInterview https://github.com/pwstrick/daily https://github.com/yisainan/web-interview https://github.com/yygmind/blog https://github.com/FEGuideTeam/FEGuide https://github.com/airuikun/Weekly-FE-Interview https://github.com/bearofbear/Front-end-questions-to-the-interview-stage-master https://github.com/okaychen/FE-Interview-Brochure https://github.com/poetries/FE-Interview-Questions https://github.com/infp/Front-end-Interview https://github.com/frontend9/fe9-interview https://github.com/ravencrown/web-interview https://github.com/Advanced-Frontend/Daily-Interview-Question https://github.com/alibaba/f2etest https://github.com/h5bp/Front-end-Developer-Interview-Questions https://github.com/markyun/My-blog/blob/master/Front-end-Developer-Questions/Question/README.md
## 简历分块
- 个人信息
- 项目/工作经历
- 技能清单
- 个人文章
### 个人信息
- 姓名
- 毕业学校
- 专业
- 联系方式
### 项目/工作经历(三个)
- 最好有三个,时间由最近到最远排序
- 项目描述加上时间(2020 年 2 月至 2021 年 3 月)
- 技术栈比较单一,就去招聘网站找关于该职位的要求,补充自己简历上的技术栈
项目描述:
- 项目名称(这里要加上时间),例如:实时预警数据仓库(2020 年 3 月~2021 年 4 月)
- 项目描述,这里就是简单描述一下你这个项目是用来做什么的,有哪些功能模块,功能模块的实现方式,把这些基本的信息说清楚就可以了。注意:语言要简洁,把主要的功能描述一下就可以了。
- 技术栈,这里就是你这个项目都使用了哪些技术框架。例如:Spring + SpringMVC + Hibernate + Oracle + JSP。
- 职责描述,这个就是你在这个项目中做了哪些事情,是使用了那些技术解决的,最后达成了什么一个效果。
### 技能清单
- 要一条一条罗列好,最好有 1,2,3 这样的分层。
- 至少要有 5 条左右的。
- 把熟悉的放在前面,了解的放在后面。
### 个人文章
- 3-4 篇即可
- 和求职岗位相关
## 其他应做到的点
- 简历最好用 Markdown 写,然后导出 PDF 格式。
- 简历写好一版了,找个人帮你看看,认识的 HR,猎头,技术不错的大牛,记得学会发红包,一次金额二十到三十,就说请他喝杯奶茶。
- 根据反馈,然后复制一份出来,修改,重命名为第二版。
- 把修改好的简历在给之前给你指导的人看看,直到他说可以了,那就确定下来。
- 每一次大的修改,都要重新命名为一个新的版本,这个方便后续整理思考。
- 把确定好的简历命名为:姓名学历岗位联系方式 这样的格式。
## 拥抱变化带来的一些思考
https://articles.zsxq.com/id_8kxnvhrdr4mh.html
收获的几点:
- 主动参与项目
- 该做的事情(转正答辩)提前做
- 实事求是
- 遇到问题,不要总是自己琢磨,可以先自己思考,然后询问同事/领导
试用期注意:
- 融入集体
- 及时反馈
- 情绪不分好坏,重要的是情绪背后的心理诉求
- 面对新的环境,第一步是建立信任
- 敢于承担责任
## 看到自己的扎实基础
自己做前端面试官也很久了,说点个人的愚见,还请指教。
从我自己的角度出发,我希望看到的简历是能让我了解你的技术水平与扎实基础的,很多简历的项目简介并没有做到这点。
- 项目介绍应该更精简一些,这对于我了解你没有任何帮助。最多就是知道这个项目是 2C 还是 2B 的就好了,或者有一些是游戏、应用 3D 技术的。
- 工作内容通篇看来,我知道你会用不少的工具解决问题——v-charts、echarts、web notifications、layui。我个人并不关心这个,因为一个人的强弱不是依靠懂多少工具判断的。我更希望看到的是一些精细化的思考,组件的二次封装、工程化的设计、设计模式的应用。这些侧面表达了你的基础扎实,只要基础好,学大部分工具都是很快的事情。
- 压测是个不错的点,这点让你有点竞争力。
- ES6 既然写出来了,要经得起问,最常见的 promise 的原理以及细节——let foo = () async =\> 1; foo(); ? 拿到什么,很多面试者卡在这里。
- 用 star 法则对某一个技术难点进行合理篇幅的描述,让别人看到你解决问题的实际过程,也足以让你脱颖而出。
我去年秋招作为面试官参与了校招面试。虽然进入面试的同学大部分来自985/211学校,但是整轮面试走下来,我发现很多同学在面试上准备不充分,面试过程中也出现了不少问题。其中有不少问题并不需要很难就能避免,做得好反而可以为你的面试加分。最近春招又快到了,我把自己参加面试与做面试官的经验总结成了一篇攻略,供大家交流与参考。 ## 面试前 ### 1.1 搞清楚面试的职位 校招选投递职位的时候,有些专业能力不拔尖但是比较聪明的同学,会故意避开竞争比较激烈的岗位。比如自己想去搞算法,但是觉得算法竞争激烈就想干脆投一个客户端开发试试。这种做法我这里不做评价,但是假如你投了客户端开发的岗位,那么你至少搞清楚客户端开发是做什么的,用什么语言开发。用几天时间了解一下相关技术,做一些小项目,至少自己对这个职位有个体感。不然面试的时候压根不知道以后要做什么,很难让面试觉得你有能力做好这份工作。 ### 1.2 简历书写 简历是面试官在面试前了解你最直接的材料。把简历写好很重要,但是完全展开讲简历又是一篇完整的文章。我这里简要说两点重要的原则。 1)保证真实。通常应届生确实比较缺乏项目经验,但是如果你把同学的项目经历直接抄过来,那么面试中只要稍微问一下细节你就会露馅。真的一个项目经验都没有,把你自己做的小项目写上都行。 2)简历内容便于面试官提问。比如”负责XXX项目”就没有”在XX项目中通过YY技术提升N倍性能”要好。因为后者面试官很容易会往你写的细节下面去延伸提问,如果你提前准备好了相关内容,就更容易回答好。 ### 1.3 对面试内容针对性的准备 面试之前,你可以找同公司的学长、参加过同职位面试的同学去询问面试大致的内容,比如面试问题的范围,要不要考算法,以及尽可能的多了解了解公司。比如算法很重要,那么面试前就一定努力去准备算法。只有面试前准备充分了,你面试的时候才会有更好的发挥。 ## 面试中 ### 2.1 不要迟到 不要迟到,尤其现在不少是远程面试,最好提前10分钟就把各种设备调整好,早到一会儿也没啥坏处。有一次我遇到一个同学,到点了才上线,然后语音一直有问题最后调了十几分钟才调好。结果开始面试之后就非常紧张,调整了很久才进入状态。所以不要迟到,尽可能提前到。 ### 2.2 语言表达流畅,逻辑思维清晰 放平心态,不要紧张,说话要简明扼要,表达流畅,不要磕磕绊绊的。面试前可以把自我介绍,项目介绍这些多演练几遍。其实面试中很重要的一点就是考察你的沟通能力。如果逻辑思维太差,语言表达能力又不好,以后工作也会很吃力。好的表达能力不仅会给你的面试加分,以后对你工作上的帮助更大。 ### 2.3 诚实,不要不懂装懂,更不要欺骗面试官 这一点很重要,诚实是原则问题。如果我在面试中遇到简历作假,更有甚者在面试题上作弊的话。我都是直接不通过的。还有一些同学可能怕影响面试结果,所以即使遇到自己不懂的问题也要强行回答,最后反而带来不好的影响。遇到自己不懂的问题,我的建议是直接说自己不会。然后可以尝试对问题进行思考并且给出思路和猜想。即使最后没答对也比你胡乱回答要好。 ### 2.4 展现出自己的学习能力或者独特之处 校招职位,一般并不会要求你到岗之后立马开始干活,通常会培训一段时间。所以学习能力好的同学,也更容易通过面试。学习能力可以通过成绩排名,大赛获奖记录来体现。成绩不是特别突出的同学,可以写一些比如:短时间内做了XX事情,得到了什么结果。你比别人的独特之处会给面试官留下深刻印象。假如在一场多人面试结束之后,面试官还记得你,那么打分的时候你的得分就更可能比别人高。 ## 面试后 ### 3.1 及时复盘 面试结束后,别那么着急就去打游戏或者跟朋友吹牛皮去了。及时进行复盘,把自己刚刚没答好的问题记录下来,逐一解决,把这些面试问题都内化成你自己的知识。再回头review一下简历,看看是否哪里误导了面试官。自己回答的好的地方,看看是否还可以表现的更好。不断的复盘,自己的能力和下次面试的表现都会不断的提升。 ### 3.2 直接跟面试官沟通 这一点可能不是很容易做到,不过假如面试官给你留了联系方式,可以请教看看是否自己哪里还需要提升。而且大部分的面试最后都会让你给面试官提问题,我不建议直接问这次面试会不会通过,你可以问问面试官觉得你还有哪些方面可以提升,以及学习哪些知识可以帮助日后的工作等等。 ### 3.3 不在网上随意传播面试体验,甚至吐槽 这一点可能会有人有异议了,我知道网上有很多面经,甚至还有面试完之后吐槽公司或者面试官的帖子。但是对于我自己来说,面试是一件很隐私的事情,不随意传播面试内容其实是保护我自己。如果在面试过程中真的遇到了非常严重的问题,我会直接跟HR联系。假如只是一些态度或者言语上的问题,一般也就跟朋友之间吐吐槽也就过去了。你去网上公开发帖,如果事情的发展失去控制,最终会影响到你自身。所以这一点也是建议大家认真考虑考虑。
以上就是全部内容,基本上没什么难度高的操作吧?可是我觉得恰恰是这些最基础的东西,反而会无形之中影响你的面试结果。最后祝看到这篇文章的同学可以找到满意的工作。如果你有什么问题的话,也欢迎留言给我交流。
## 实习+校招 ### 实习 暑期实习:面向次年毕业的学生,每年 6-9 月不少于两个月的实习项目; 日常实习:面向全部在校生开放的不少于两个月的日常实习项目 转正前实习,如果不合格就辞退 ### 校招 第一批(秋招):大四开学9月份 第二批(春招):招聘岗位已经很少 ## 问题
- js 刷题少
- Vue很多公司要求
## 想法&总结
- 明白自己和标准的差距,知道如何符合标准
- 实习经历是必须的
- 没有项目经历可以自己跟着 GitHub 上优秀的开源项目仿一个
- 简历要求——准确、有层次;根据 JD 改简历
- 简历上有的内容,一定是面试官提问的重点,所以一定非常熟悉简历上的内容
- 自我介绍时,把自己标签化(面试官此时在看简历,介绍自己使用关键词更容易使对方快速了解自己)
- 一面问清楚工作具体内容,为二面准备
- 先在创业型公司实习,身兼多职,帮助自己找到适合做的;然后在成熟型公司,直接做自己的方向
- 问自己想去什么样的公司,哪一个行业,目标城市是哪些
- 不想(做在线教育、有金融风险、不能去小城市(去那里学不到东西))
- 回答面试官问题时要给自己预留30s
- 选择合适的面试编程语言(JS、Python)
- 选择正在成长的小企业
- 找工作,对企业进行调查时,要着眼于工商税务。可选工具,天眼查、企查查
- 企业三大块——人力、财务、技术(从左到右,重要程度依次递减)
- 离职要找 hr 要补偿金,录音保存聊天记录,咨询专业律师
- 背景调查可以留要好同事的电话
- 不要害怕提问,提问时讲清自己做了哪些努力
- 表现出积极主动
- 把事情落实在邮件中,留存证据,必要时抄送主管
- 能受的了委屈
- 简历和自我介绍中有无表现出强烈的意愿
- 对从事的领域,有过基本了解
- 对企业进行背景调查
## 防止被骗 别相信对方的口头承诺,拿到offer才算结束。如果对方让自己等待通知,趁早面试下一个
讨论关于面试的话题,很多人觉得自己面试不过是经验不足,或者是背景不够光鲜,当然这种情况也常见,但其实很多情况下面试的表现对是否入职影响非常大,而且很多人可能一直都不知道自己哪里出了问题。
当企业发给你面试邀请时,你的学历、背景、经验其实已经不重要了。重要的是你面试的表现。
面试是很重要的职场沟通过程,能不能获得满意的 offer,能不能实现职场的跃迁,面试肯定是很关键的一环。
那么,不仅仅是作为面试者,需要重视这个话题,如果有一天你成为面试官,你也需要认真面对这个话题。
## 1、求职者如何应对面试
### 1.1 确立目标
我希望读者明白,面试不仅仅是争取 offer 的过程,同时也是了解行业,了解产业的过程。
面试不仅仅是表现自己,也是观察,学习的机会。
很多应届生,说我要去名企,我要去牛逼的公司,其实很多中小企业,未必多么耀眼,但你去面试了解一下,也许会对行业的认知有非常大的提升。
就好比当年我代表 4399 去清华校招,零零星星只有十几个学生参加,清华的学生不太瞧的上 4399,这也能理解,但参加过的同学反馈,收获极大,因为他们从来不知道,互联网原来还有另一面。你去不去这家公司,是一回事,你了解一下,可能很多视野是你之前不具备的。
面试的目标,我认为分三部分
- 找到合适的工作
- 了解不同的行业、不同的企业,了解职场的人力诉求
- 了解自身的不足和缺陷
如果你目标是观察学习,那么面试被问倒,遇到障碍,就不是悲伤的事情,而是开心的事情,因为你知道了需要提升什么,需要改进什么。
### 1.2、基于不同目标的搜索和选择
我建议初入职场的人选择面宽一些,还是那句话,有些企业也许你只是不了解,但可能面试官是个业内大牛,没准就会遇到非常值得学习的目标和榜样。
此外,不断面试其实也是不断提高的过程,你的应对能力,你的表现也会越来越从容,你如果真的把每次面试的问题认真复盘总结,那么你离心仪的 offer 可能也就越来越近。
搜索工作的时候不要拘泥于你最热衷的职位,可以多尝试一些不同的职位和岗位,最终你是有选择权的,一些看上去你并不热衷的职位和岗位,可能有些意想不到的机会。
特别是今年,我认为对于大部分人来说,求职的难度都增加了。
当然,即便增加选择面,也要注意安全,注意躲开传销组织和东南亚杀猪盘,这部分我以前写过文章,不赘述了。
### 1.3、简历的设计
我建议针对不同岗位,职位,有针对性的设计简历。针对不同职位,不同岗位,适当突出自己不同层面的能力和工作经历,特别是有些年轻人换工作较多的情况。
我非常不喜欢简历造假的行为,对我而言这是 0 容忍的行为,但我也能理解目前确实存在一些造假简历获得心仪工作机会的案例。不仅仅是中国,美国也是如此,美国一些所谓的 icc,作为人力资源中介,甚至把简历造假当作某种潜规则。
向现实妥协,我觉得,适度夸大曾经的工作经历和表现,对很多人而言,确实也是可以理解的,但有一个很重要的前提是什么,要能用自己的实力证明。比如说,前单位某个系统,虽然你有参与,但你并不是核心人员,你简历说自己是核心人员,那么面试官问到细节的时候,你能不能对答如流,如同架构师一般把系统框架,逻辑和具体技术挑战讲的头头是道,你讲对了,证明你具有胜任力。你简历把自己包装的天花乱坠,遇到面试官一问三不知,各种不专业,各种肤浅,你就弄巧成拙了。面试官最终想要了解的,是你是否能胜任某些职位,所以,如果你夸大了自己过去的工作,记住要用胜任力来填补。
那么,有些人换工作比较频繁,想抹去一些工作经历,可以么,其实我觉得如果有些短期工作经历不想公开,简历里也是可以抹去的。但面试的时候,如果被问到了,建议实话实说,具体如何有效的解释工作变动频繁,后面我会具体讲。
### 1.4 求职信
很多人会忽视这一条,简历你可能会有两三个不同模板,比如一个面向数据分析岗位,一个面向研发岗位,还有一个面向运维岗位,比如刚入职场的年轻人,设计三个简历模板,根据应聘不同的岗位,投递不同模板。但这样就足够了么。
当你面对具体的企业岗位,建议在投递简历的同时,加上自己针对性的求职信,什么是针对性的求职信,你要表达出对这个企业的热忱和对这个具体职位的渴望。
这是需要做功课的,你需要尽可能了解这个企业的成绩和产品,了解他们的业务构成和市场表现,然后在求职信中,要表达你为什么认为自己可以胜任这个岗位,以及面对可能的不足,是怎么认识的。
比如说,我自己以及身边很多好友都在使用贵司的什么什么产品,也经常惊叹于这个产品的人性化的设计和非常酷的搜索/推荐/订阅体验,我相信这些体验背后有大量的技术课题是非常具有挑战性的,如果能够获得这份工作,可以参与这样的技术挑战,我会非常的兴奋,虽然我现在的经验可能还不足以应对这些挑战,但我一定会努力学习提升,从最基础的工作做起,尽快做出自己的贡献。
比如说,我虽然专业不是贵公司所要求的计算机相关,但我一直在努力自学编程,已经上完了谷歌架构师某某老师的什么算法课程,腾讯技术专家某某老师的什么什么分析课程。虽然我还欠缺一定相关的经验,但在日常的编程训练和学习过程中,我认为可以通过个人努力,快速掌握必要的知识技能,也非常享受在编程中不断克服困难达成目标的过程,希望贵司给我一个机会。
求职信还有一个要点,就是既要自信,也要谦逊,这二者如何协调呢。
比如说,我相信未来通过个人努力,在三到五年内我一定可以胜任更高要求的技术工作和岗位,但我也承认目前尚处于学习阶段,仍有很多东西需要开始学习,所以我非常愿意从最基础的工作做起,从最初级的岗位开始,希望获得学习和进步的机会,并努力证明自己。
一定要理解用人单位用人的诉求
对用人单位而言,
第一是你的能力,但这并不是全部。
第二是你的诚意,那种随便投递简历的行为,对很多hr来说也是浪费时间和精力,他们也不愿意把太多时间浪费在没有诚意的求职者身上。
第三是你工作的态度,过于骄傲的他们会认为不好管理;过于谦逊的则会认为可能缺乏进取心。
一封好的求职信,我不能说一定会超越某些招聘门槛,但在不少场合下,一封好的求职信可以让你在某些门槛不足的情况下获得面试机会,当然,最终还是要看你的面试表现。前几天恰好我星球里有人提过自己的案例,他写了一份很认真的、针对求职公司产品的分析报告,顺利的拿到了入职资格。
多说一些就是,对于应届生或初级岗位,能力并不是最看中的指标,你的求职诚意,学习态度很可能是关键因素,很多求职者被筛掉,自认为是学历背景的问题,其实很多都是无法体现出诚意和态度。
### 1.5 如何做好面试准备
去面试前,应该做好功课,了解对方是什么企业,什么岗位,特别是你投递了很多简历后,要知道这次面试的究竟是哪一家,要搜索相关企业背景,负责人的背景,以及尽可能了解面试流程。充分准备。
建议提前准备的问题如下:
(1)准备一个简短的自我介绍。
- 我的教育和工作背景,
- 我过去比较突出的成绩,
- 我为什么会选择这家公司。
不要太罗嗦,尽量在5分钟以内,但很多人只是过于简单的介绍了自己的工作背景。
粥左罗的沟通课里讲过一个很好的技巧,你如何让别人对你印象深刻,你过往突出的成绩,有什么是可以产生突出印象的,比如一些利用人设反差。
比如一个程序员应聘,说自己曾经组建过乐队并且曾经参与过什么演出。这就会非常让人印象深刻,因为挑战了程序员的刻板印象。
比如一个文静的小姑娘说自己有跆拳道黑带证书。
你说这对求职有帮助么,也许没有特别的帮助,但印象深刻总不是坏事,人们喜欢认识有趣的人,有一技之长的人,你身边如果有个朋友有一技之长,你也会经常拿他说事,而且在某个领域有一定特长的人,也能显示出这个人具有足够的自律性,因为无论什么领域的成绩都需要付出足够的训练和磨砺。
那么,很多人不会表达,为什么选择这家公司,你是欣赏他们的技术,还是产品,还是企业文化,还是羡慕他们的薪酬,羡慕薪酬不能直说羡慕薪酬,可以说觉得公司上升空间足够大。
当然,很多人说我投了一堆简历,我并不热衷这家,拜托,面试过程,你要展示诚意的好么。
简短的个人介绍不一定每个公司都会问,毕竟有简历在,但被问到的概率还是很高的,准备好,有备无患。
(2) 你为什么从前一家公司离职,或者为什么计划从前一家公司离职
我去年的职场成长课程其实讲过这个话题。
上升空间是一个最常见的理由,上升空间有限,工作场景挑战不足,这是可以说的。
尽量不要跟旧东家撕逼,不要讲上司傻逼,公司管理混乱,公司各种不好,因为面试官会担心,你从这家公司离职后,也会这么说。
如果确实和前公司有矛盾,存在一些问题,那么可以承认自己的一些不足,比如,自己关系处理上出了一些问题,有些冲动,已经反思,如果再来一次也许可以有更好的处理和解决方式。
如果旧公司出现经营上的困难导致裁员,实话实说即可,这个不丢人,特别是今年,对很多领域的企业来说,面试官都能理解。
有些也是因为身体原因,比如吃不消加班强度,也有一些比如跟随自己的男女朋友换新城市,也是可以说的,但也要尽量表明自己的承受力和稳定性。
比如说,其实有紧急工作加班我是没问题的,以前为了某某项目通宵也做过,但前公司基本上每天12小时在公司,连日常学习和健身的时间都没有了。
比如说,这次换城市也是和家人讨论了很久,综合考虑过的,希望能在这个城市长期发展。这样可以打消面试者对你频繁变动的顾虑。
吐槽旧东家和肆意泄露旧东家敏感信息不是好习惯,可能你觉得这样可以拉近你和新的公司的关系,但其实对于很多面试官来说,他会觉得你很危险。因为他不会对你忠诚度和稳定性有把握,一旦被面试官的打上危险的标签,你获得工作机会的可能性就直线下降。
另一个问题,你为什么频繁换工作。
真的有这种历史,被人问出来,坦承自己的问题,当时年轻,冲动,有些情绪主义,确实是不对的,这几年慢慢调整,以后也不想再这样了。这比找借口更容易被面试官接受。当然,最好是没有频繁换工作。
(3) 你过去最有成就的事情是什么。
这是一个非常典型的问题,以前我以为只有我喜欢用这个面试题,后来发现有不少面试官喜欢用。
描述你自己最有成就的事情,其实考核的不是你的成就,而是你总结和整理的能力!
我特别希望大家理解这一点,你总结和整理的能力才是关键。
一定要把自己历史上做的成功的项目案例深刻复盘,每个技术细节和数据指标都要列出来,最开始你可以不用太罗嗦,描述一些关键的核心指标和你的贡献,那么面试官一定会深究,这个问题其实只是个引子,几乎肯定会深究细节,然后每个细节都 有条不紊的给出逻辑,数据指标,这样你的表现分就会好很多。
有人觉得我没做过特别牛逼的项目,会吃亏,记住,**你的归纳能力,很有可能胜过项目本身**。
当然,这个过程也要体现你成长性,比如某些细节问到的时候,你会说,当时用什么什么方案处理,虽然解决了问题,但其实当时还是缺乏经验,实际上用什么方案会更好一些,这是最近两年才体会到的。如果现在来做同样的事情,可能我会考虑用什么什么技术实现。
这就很有说服力,虽然你的项目不算牛逼,但你在这个过程中一直在进步。
(4) 你对我们公司,行业有什么了解?
去之前一定要做功课
(5) 你有什么问题要问的
这个几乎是每个面试都会问到的问题,问出高质量问题是获得offer的关键,这不是一个随便的问题!希望你们一定要知道,这是考核你的题目,这不是一个随便的问题!
我旧文提过,针对你应聘的岗位和目标企业的产品及竞争关系,问出有质量的问题。
公司有加班费么,公司提供餐补么,公司五险一金怎么算。
这些可以问么,面试的时候不建议问,你说你想知道,给你 offer 的时候问。
hr 通知你确认 offer 的时候,你再问这些问题。确认 offer 是个双向的过程,他们开出了条件,你确认细节,然后决定是否入职。你是有权拒绝 offer 的,因为待遇达不到预期,这是你的权力,而且不会特别影响你的职场发展。
### 1.6、面试过程
- 保持自信,眼神要与面试官互动,不要一直低头,或者抬头看天花板,害怕眼神接触的那种。
- 坐姿端正,不用太紧绷,可以略微放松,不要翘腿,不要乱动东西,不要摇晃椅子。
- 主动热情,面试官进来主动伸手问好,结束的时候主动表达感谢。交互过程中不卑不亢。
- 如果有作品展示,可以事先把链接或文件存在手机里或平板电脑里,但需要征得对方同意后再发给对方或演示给对方。
- 情绪要好,面带微笑,一定要保持放松的姿态,每个面试官都希望自己未来的同事好相处。
- 诚实和诚意
遇到不会的问题,如实坦白,不懂装懂可能会带来更负面的印象。面试官的考核目标是了解你的能力天花板在哪里,如果你全部问题都能完美作答,坦白说,面试官是不合格的,因为他无法测试出你的能力极限在哪里。 所以,遇到不会的问题,并不是面试的失败,但不懂装懂,这个标签会比不会严重很多。
- 关于背景和经历,可以抹掉一些有负面的经历,比如频繁跳槽,但一旦被问及,建议实话实说。
很多初阶职场人士确实可以通过谎言获得一些面试优势,如果不承认这一点是不客观的,但一定高度之后,背景调查会非常严格,而且在高阶领域,职场人脉关系是很多初阶职场的人想不到的。
说实话,如果你在互联网巨头里的技术职称或者产品职称曾经达到一定高度,或者在互联网业内有一定的资深程度,我一定能找到人做你的背景调查,而且甚至可以说是非常容易做到。
如果你的目标远大,希望自己未来可以在职场达到一定高度,记住,任何职场的谎言都可能成为将来制约你发展的定时炸弹。
如有可能,留下技术面试官的联系方式,或者记住他的姓名和大体职位,后续可以通过互联网搜索相关背景和联系方式。
结束的时候,无论表现如何,感谢面试官。如果确实遇到一些无法回答的难题,要表达自己学到了很多,并且回去会认真总结和反思。
### 1.7、拒后接触
面试没有通过,一些面试题没有答好,不要总觉得面试官变态,刁难人,不要心怀不满,虽然心怀不满是被拒的常态。我年轻时候也是如此。
把没有答好,觉得仍有提高空间的题目,重新搜索,做出来,然后发给面试官,并不苛求工作机会,但请面试官评价答案是否正确,表达自己学习和提升的渴望。
拒后的积极性,不代表你可以立即获得工作机会,但长远来说,你会给对方留下相对好的印象,后续会保留一些潜在的机会,而且,你自己也得到了一定的提升。
相信我,每个积极进取和追求提升的年轻人,都会被业内资深的工作者高看一眼,你要尽可能体现这一点。
### 1.8、不满意的 offer
对方愿意接收你,但开具的 offer 可能你不是很满意,这时候有少许协商的机会。
其实我觉得直说是可以的。
坦白说,我非常愿意到贵司工作,并努力证明自己,但这个 offer 和我预期的差距确实有点大,我想问一下是否这是最终的确认,如果这是最终的条件,可能我需要再考虑一下。
不要耍小聪明找托辞,什么女朋友嫌低,什么生活费不够花,没必要,而且 hr 面对太多求职者,小聪明其实他们早就见怪不怪。反而让人觉得你不够诚恳。
### 1.9、婉拒 offer
比如你有更好的 offer,或者你觉得自己还可以留在当前公司。
保持客气,诚恳道歉,但要实话实说。
谢谢您的 offer,非常高兴能得到贵司的认可,但确实很抱歉,因为这几天刚刚接受了某个公司的 offer,希望以后还有机会共事。再次感谢您的 offer,也真的非常抱歉给您带来的麻烦。
谢谢您的 offer,非常高兴能得到贵司的认可,但确实很抱歉,因为这几天我的上司跟我深谈了一次,调整了我的薪酬,也给我提出了新的要求,我觉得当前工作仍然具有挑战性,老同事和上司都很支持我的工作,所以暂时不再考虑其他公司的 offer,希望以后还有机会共事,再次感谢您的 offer,也真的非常抱歉给您带来的麻烦。
实话实说,不要扭扭捏捏,不要耍小聪明,有经验的 hr 对 offer 被拒的情况并不会意外,一般也不会影响你后续的机会,但如果觉得你很油滑,那这个印象可能未来对你其他机会会有影响。
### 1.10、总结,如何换位思考
面试官考察年轻人,选择是否入职,有几个原则
**第一,技能水平是否达标**。
其实,对职场新人来说,这个指标并不严格,可能跟很多人想的不一样,对职场新人而言,成长性比当前技能水平更值得考虑,但很多巨头因为简历太多,所以筛选的时候会淘汰掉大量硬门槛不达标的人,但如果你能进入面试,你要知道,技能水平可能并不是最关键的因素。
社招不太一样,很多有经验岗位的社招确实是需要即战力,来之能战,你必须在入职前准备好一切,但这里就存在一个时间差,面试和入职的时间差,如果你能在面试的过程中,证明自己在入职前可以准备好一切,也许可以获得额外的机会。这就是为什么提到拒后接触。
****第二,态度和人品是否值得信任****
诚实,以及皮实,很多人没意识到后者的重要性,什么是皮实,不要玻璃心,可以批评,可以教育,可以直来直去。
职场管理者不喜欢那种玻璃心的员工,因为管理成本高,还会造成各种潜在风险。
在沟通过程中,记住展示自己皮实的一面。比如,自己答完问题,可以这么讲,请您直接说,我表达的哪里有问题,我就希望有人告诉我问题在哪里,这样我也知道怎么改进。那管理者就觉得,哎,这孩子以后可以直接批评,不脆弱。
****第三,是否有足够的诚意来求职****
- 其一,如果你没做功课来,别人觉得你就是随便来看看的,简历随便投的,根本没打算来这个公司,可能你水平够高,他们也不想要;
- 其二,如果你过于强调自己的社交人脉,自己的在职场的资历背景,可能别人会觉得你选择太多,未必会在这里待太久。你本来想抬升自己身价,也许反而弄巧成拙。
- 其三,如果你期望薪酬待遇目标过高,别人可能觉得自己的 offer 留不住你。
- 其四,如果你有副业并且收入不菲,企业也会担心你不是稳定的求职者。
****第四,是否是职场危险分子****
很多人没有意识到这一点,如果你吐槽老东家过多,你历史上跟不同老东家撕逼,仲裁,那么说实话,别人会认为你是危险分子,哪怕之前的过错都是企业方。
如果你有自媒体,很多企业也会问,你自媒体主要写什么,如果你自媒体专注技术和成长,还略好,但如果较多职场八卦和业内撕逼,企业也会觉得你是危险分子,也许会得罪客户,股东或者合作伙伴。
如果你喜欢分享面试题目和企业内部的技术方案,用人单位也可能认为你是危险分子,你认为不敏感的内容,别人可能认为敏感。
关于求职者的部分,就说到这里,希望一定要换位思考,多想想用人单位是如何挑选人才的。
那么当然,不同的企业,不同的面试官,不同的行业,有不同的判断方式,但你坚持正确的应对,会有较高概率得到正确的回馈。
## 面试官的准备和诉求
下面简单说一下,作为面试官,又应该如何沟通。在职场,做好面试官也是很重要的一份工作,不要认为这很简单或者很无所谓,任何时候发现和挖掘优秀人才都是对自己职场帮助价值非常大的事情。
### 2.1、面试官的诉求
- 考核人才是否符合技能诉求
- 考核人才是否可以融入团队
- 考核人才是否具有稳定性和持续性,值得长期培养
- 吸引优秀的人才
很多人会忽视第四条,实际上对很多非常优秀的人才而言,面试是双向的,面试官考核应聘者的同时,应聘者同时也在考核面试官。
### 2.2、面试官的一些沟通要求
第一,提前研究简历,准备合适的问题
第二,给予面试者足够的尊重,包括准时,仪容,精神状态,以及表达方式。 面试官的发言应该只占 30% 甚至更少,应该只是提出关键问题,更多是聆听。
面试官在倾听时应保持一定的尊重,比如不要频繁接听电话,低头看手机或者其他不雅的坐姿,应保持眼神沟通,以及尽可能开放的姿态。
第三,尽量提出优质的问题
**什么是优质的问题**?
- 与应聘者工作背景有关,与企业业务诉求有关,体现思考深度或技术门槛。
- 与应聘者工作背景有关,表达对应聘者的尊重,也证明并非蓄意刁难应聘者。
- 与企业业务诉求有关,表达企业业务诉求中,具有足够的学习和成长空间。
- 体现思考深度和技术门槛,即是对应聘者能力的考核,同时,也是一种暗示,企业具有足够的成长空间,日常业务工作具有一定的挑战性。
当年我去厦门组建 4399 社群的技术团队,最开始也面临一个问题,当时程序员普遍认为,4399 一个小游戏网站,没有技术含量,没有技术提升空间,只是简单的技术维护工作,但我在厦门的技术社群中成功扭转了这个认知,因为我列出了很多业务场景诉求中的技术问题,让很多程序员感受到了技术挑战,同时,他们也能理解,这些技术问题是业务密切相关的,是真实业务中的面临的挑战,不是我特意炫技和刁难应聘者的。
**面试者如何吸引优秀的人才,这也要换位思考**:
- 优秀的人才需要怎样的环境。
- 除了薪酬,福利待遇,企业未来可能的发展空间。
- 日常工作是否具有挑战性,是否具有能力提升的空间,这是很重要的。
- 直属领导是否具有足够的能力来帮助他提升。
- 未来工作的天花板在哪里。
- 面试官很多时候就是应聘者的直属上司,你的表现对优秀人才是否选择你们的 offer 关系极为密切。
**问题的设计有几种**:
1、由点及面,层层递进。
比如说,介绍一下,你过去工作中最有成就的事情,这是个引子。
这个事情遇到过什么障碍,是如何克服的。
然后针对他给出的方案,层层深入追问细节。
比如说,从浏览器地址栏输入 url 到网页彻底打开,中间发生了什么。
这里就有无数个细节可以展开追问。
2、由浅入深,逐渐提升。
先从基本问题入手,前几个问题让普通水平的应聘者足以应对,之后慢慢加码,问题越来越难,那么尽量要测试出应聘者的当前能力极值在哪里。
如果应聘者轻松回答了所有问题,说明什么,说明他的水平秒杀了你。
你的题目不是筛出符合条件的应聘者,而是筛出应聘者的能力极值,从而在后续针对性培养和针对性发放 offer,比如说,一个牛人来应聘,本来这个职位薪酬不高,但你发现他水平远超你的预期,那么可以胜任更多艰巨的工作,当然可以重新定义他的职位和薪酬。
3、考察逻辑和思维方式。
有时候,一些开放问题,不需要正确答案,而是看对方的思维方式和思考逻辑是什么,比如产品设计,如果你设计微信,你会做出怎样的改动,这就是一个开放的产品设计问题。
### 2.3 面试官的一些忌讳
第一,过于炫耀优越感和企业成就。
第二,过于轻视应聘者的工作经历和技术背景。
第三,对优秀的人才没有体现出应有的尊重和热忱。
第四,应聘题目过于简单,没有展现公司的真正实力和价值。
第五,应聘题目过于具化操作层面,比如语法,比如工具的使用方式,比如一些常见框架的调用手段,过于具化的题目有助于招聘马上可以接手工作的人才,但缺乏对应聘者思想的判断,可能很难判断应聘者的真正价值。
这些问题,很可能导致一些优秀的人才来应聘,但最后拒绝你们的offer,这是很可惜的。
实际上面试官也需要不断反思和学习:
有两种情况需要认真反思,
- 第一种是你看中的人才拒绝了你的 offer,你应该尽量了解他去了哪里,拿了怎样的 offer,要心里有数,是别人给的待遇足够好,还是自己在面试中没有展露足够的诚意和说服力。
- 第二种是你拒绝的人才在其他公司做出了成就,也要反思当时为什么拒绝,是否自己的面试题目出现了问题,没有考核出人才的真正价值。
那么今天的话题呢,就到这里,其实求职和面试都需要一定的容错性,你可能遇到的不是优秀的面试官,或者优秀的应聘者可能真的对你们的岗位没有太大诚意,这时候需要一定的职场容错性。但坚持正确的行为,好的事情发生概率就会提升。
## 问答时间
一、
问:想知道跟猎头介绍的公司和一般个人求职的公司面试方面有啥区别吗
答:一般而言,猎头介绍的都会高端一点吧,出来面试的级别也会高一些;而且多半会背景调查,因为企业招聘成本也高,所以不能说先招来看看,一定要调查清楚
二、
问:因为在国企,领导经常让干私活,没有报酬基本没有周末,不想干了受到领导打压,跳槽问起来可以说实话吗
答:国企就是如此;如果跳槽到私企或民企是可以实话实说的。如果跳槽到国企就不能实话实说。
三、
问:如果仅仅是去面试探市场行情,对方发了 offer 怎么拒绝合理?
答:就说公司内存在上升机会,领导和同事很支持你,想了想觉得还可以继续做几年。
四、
问:初创企业招人的时候,是更看重面试者的当前技能?还是成长空间?
答:初创企业没有足够的资源去培养人才,他们招聘一定是看当前技能的
五、
问:是否了解大厂人才库的管理机制?比如面试被拒后,在不同轮次被拒会不会有什么区别?
答:不清楚,但给面试官留下好印象总没错。
六、
问:工作四年一直当开发,想做运营/产品,公司会接受这种领域新人吗
答:尽量在自己公司转,同事都了解你,信任你。如果跳槽转的话很难。可以找一些跨界的,既需要懂些开发又能接触到运营产品的工作。
七、
问:阿里投了两个岗位都面失败了,后面再投简历会不会增加被筛掉的风险?
答:连续投递的部门相同或者相关程度很高,HR 可能会因为眼熟而筛掉,如果投递的部门相差很大,就不用担心。看到底是谁筛的你,如果是技术面试官,可能 HR 对你印象还不错;如果是 HR,HR 之间可能会通气,他们就不会要你
八、
问:招聘时如何短时间判断面试人员工作态度,有没有一些相对好的问题或方式,降低招到态度不积极的人员。
答:就是问”你有什么问题要问的”这个问题。此外,最常用的是”你在之前的工作中最有成就的是怎样的,在这件事情上遇到了什么样的困难,怎么克服,克服困难的方式和思路”
九、
问:应该如何评估自己可以拿多少薪资呢?
答:多面试几家,看能给你开offer的最高值是多少。是不是一个靠谱的公司。
十、
问:获取面试官的联系方式上有没有什么技巧可以分享一下?
答:很多技术面试官可以直接问他们要,反而是 HR 不会直接给
十一、
问:如果面试更倾向于学习交流。当然也是了解对方公司是否更适合个人的发展。比如对方是游戏公司自己抓业务的老板当制作人。是开门见山还是交流的过程中让他自然的感受到我的想法(学习和谋求发展各半的情况下)
答:
- 如果你能提出有价值的问题,他是很愿意和你交流的
- 交流是相互的,如果你过去的一些工作经历也能让面试官有所体会的,交流是可以愉快进行的
十二、
问:好像我遇到的很多面试都只问我工作中的项目相关的问题,都没有问一些开放性和优质的问题,有时候我面试前对公司和行业的了解都准备了很多,但是那些公司都没有问,我陈述时面试官也好像不太在意,能遇到好的面试官好少,遇到好的面试官即使没过,但都是对自己认知的一次提升
答:与工作相关的问题同样也可以是好问题。开放性的问题的出现因人而异。细节里见功底。某个问题你不在意,但是面试官想听的就是这个,更好的答案。好的面试官较少,还是多面试
十三、
问:就是平等交流是态度上啦。就是技巧上开门见山合适吗?
答:去面试时还是以求职为主。如果就是去交流学习,也不能开诚布公说自己不是来求职只是交流。
十四、
问:如何面试找到另一个技术领域的大咖,比如我是做生物信息的,但是我们想找一个 web 相关的高手
答:找业内熟人内推,或者是通过猎头,很难通过招聘网站。
十五、
问:和公司离职时闹的特别僵的员工,比如因为赔偿原因,离职证明上被特殊说明了,这个对下个工作印象有多大呢
答:很多公司都会介意,这种情况只能多面试几家。或者找一些朋友的公司过渡
十六、
问:离职证明写不好的话是违法的,可以告吧
答:去告的话可能不会赢;为了保就业率很多行为都会被容忍。要知道社会环境如何,不能单拎出来《劳动保护法》
分享我的产品生涯:去年毕业加入公司刚满10个月,昨日完成涨薪3k,跟公司副总聊了半个多小时,想把她跟我说的话分享一下,看似大道理,但依然颇有感触。
1、年轻的时候有锐气,是很好的,但如果要站得更高,不能只有锐气,有很多事情,归根结底都和人的相处。 2、把自己的世界放大一些,不要局限于某些人和事。 3、人真正的成长,往往来自于不断的死磕。 4、不要被不喜欢的人和事影响到自己,但自己受了影响是自己的选择,要告诉自己不值得。 5、毕业工作到了第三年,就要开始找到和清晰自己的方向。 6、年轻的时候要多去尝试,尝试各种各样的事情,去找到自己真正想要的。 7、越往上爬,更多靠得是你的团队领导力,感染力,和凝聚力。
林木叶的春招秋招,简历书写总结
[https://t.zsxq.com/Ub27yZR](https://t.zsxq.com/Ub27yZR)
## 其他内容 ### 学习方法 标准流程:
- 阅读目标主题的资料(几个小时的视频),了解大意
- 实现算法和数据结构
- 为应该牢记的关于当前主题的内容制作 Anki 卡片
- 进入下一个主题(为当前主题的学习留下时间间隔 review a topic over several time intervals)
- 一有时间就复习卡片
- 几天后,看/阅读同一主题的另一个学习材料,大概 30 分钟
- 一周后,看/阅读同样的或更短的视频材料
- 不断复习卡片中的内容
- 应用所学习的内容,解决问题
You're not being hired for knowledge, but how you apply the knowledge.
- 学习「⾃⼰知道⾃⼰不会」的知识
学习「⾃⼰不知道⾃⼰不会」的知识
- 这个标题可能会让你们有点纳闷,连⾃⼰都不知道⾃⼰不会的知识怎么学?
- 这时候⾯试题的作⽤就出来 了,「⾯向⾯试题编程」其实是⼀个查漏补缺、增强⾃⼰编程基础的⾮常好的⽅式。在做⾯试题的时候,你会遇到很多奇奇怪怪的问题,很多都是你「之前没有接触过」或者「有接触过却没有往那⽅⾯想」的问题。
- 刚开始遇到这些⾯试题确实很让⼈很不舒服,但是这些⾯试题也确实能够最⼤限度地提升我们对知识之 间联系的理解以及引发我们对⼀些具体使⽤场景的思考。
- 当然更重要的是我们可以通过刷往年各⼤互联⽹公司的⾯试题,让我们对于公司⾯试题有⼀个⼤致的认识,⽽且也能提前了解到⾯试官⾯试时候的⼀ 些套路和做法。
全⽅位的学习,构建⾃⼰的「知识体系」
- 那如何构建我们的「知识体系」呢?
- 可以请教所在领域⾥⾯,⾃⼰能链接到的最权威的⼈⼠,让他给我们介绍所在领域必学的⽅⽅⾯⾯,以及对应的重要性和优先级,另外可以参考极客时间上的路线图以及⼀些⼝碑⽐较好的付费课程的课程表 信息。
- 我就拿 Android 来作为例⼦,Android ⾥⾯所谓的「知识体系」,我认为主要包含这⼏个部分: Java 和 Anroid 基础 Android 性能优化 Android 前沿技术计算机⽹络 操作系统 设计模式数据结构和算法 也就是说我们需要将这⼏个部分逐步击破,慢慢完善我们的知识体系。
- 然后可以通过某个练⼿项⽬,把 这个阶段学习到的东⻄,都运⽤到这个项⽬中。这个阶段是最花时间和精⼒的,但是坚持下来会让我们 的基础变得更加扎实,⽽且能最⼤限度地构建我们的知识体系。
学习的 3 + 1 种能力: 搜集资料(鉴别资料,找到有价值的部分) 总结归纳(学习知识:海绵式–>淘金式) 动手实践(反馈给1和2) 英语能力 <–> 基础能力 知识学习的4个阶段: 模仿阶段 –> 模仿代码 –> 模仿官方例子/同事代码写法 建立体系 –> 系统学习,建立知识体系 –> 学习官方 guide 或经典书,知道所有知识点,并熟练使用 API 深入原理 –> 深入底层,了解原理 –> 源码学习,掌握重点概念,可以用原理解释现象和解决问题 由点到面 –> 学习领域知识 –> 了解并学习其他框架,并将之前的学习过程类推至此。将知识扩张到 例如 MVVM 框架, 组件之间通信问题等, 与具体框架无关,更抽象的层次 淘金式学习方式: 作者想表达的结论是什么 —-> 你是否明白结论,结论中词是否有不明白或歧义,信息是否一致。 支持作者结论成立的理由是什么 —-> 理由是什么,理由有哪些,理由是否正确,是否有价值,是否可以支撑作者结论,有没有其它更好的理由。 还有没有其它结论 —-> 基于这些理由,还有没有其它结论。结论成立的特定条件,结论的两面性等。 ### 参考资料
- [https://startupnextdoor.com/retaining-computer-science-knowledge/](https://startupnextdoor.com/retaining-computer-science-knowledge/)
## 学习内容 怎么准备
- 基础知识(HTML、CSS、JS)
- 算法(力扣前100,剑指offer前50)
- 高阶知识(Node.js;Vue/React、性能优化、DB、CN、OS)
### HTML & HTML5
- Web 和 Web 标准
- 浏览器组成 & 工作原理
- HTML 历史
- HTML 结构
- 计算机编码
- HTML 规范
- HTML 标签:排版标签、字体标签、链接、图片标签,其他标签:列表、表格、(内嵌)框架、表单、多媒体、滚动字幕
- HTML5 新增:语义化标签、表单增强、新的API:离线、音视频、图形、实时通信、本地存储、设备能力
- HTML5 拖拽、访问历史、地理定位、全屏
- HTML5 Web 存储、网络状态、应用缓存
- HTML 元素的默认样式和 CSS Reset
### CSS & CSS3
- 绝对单位 & 相对单位
- 浏览器兼容性(div 在HTML&HTML5下的表现不相同)
- CSS 字体属性、文本属性、列表属性、overflow: auto;、cursor、滤镜(非布局)
- CSS 背景属性
- CSS 和 HTML 结合的三种方式:行内样式表、内嵌样式表、外部样式表
- CSS 四种基本选择器:标签选择器、类选择器、ID选择器、通用选择器
- CSS 几种扩展选择器:后代选择器、交集选择器、并集选择器
- CSS 样式优先级
- CSS 重点:盒子模型、浮动、定位(相对定位、绝对定位、固定定位)
- CSS 伪类选择器
- CSS 继承性
- CSS 层叠性
- CSS3(让低版本浏览器能正常访问页面,高版本的浏览器用户体验更好)选择器
- CSS3 属性:文本(text-shadow)、盒子模型(box-sizing)、边框(border-radius、box-shadow、border-image)
- CSS3 动画:transition、transform、animation
- CSS3 flex 布局
- Web 字体(衬线:宋体、楷体、Times New Roman、无衬线:黑体、[Windows 平台默认的中文字体]微软雅黑(Microsoft Yahei)、[Windows 平台默认的英文字体]Arial、[Mac & iOS 平台默认的中文字体]苹方(PingFang SC)、[Mac & iOS 平台默认的英文字体]San Francisco、[Android 平台默认字体]Droid Sans)
- SASS 和 SCSS 是何关系
- 布局:display,position;方法(旧->新):table 表格,float浮动+margin,inline-block,flex,响应式布局
- 练习:1. 画各种边框 2. 元素水平垂直居中:flex 布局+margin: auto,实际应用:[红包弹窗严格居中](https://github.com/rbew/Web/blob/master/03-CSS%E8%BF%9B%E9%98%B6/04-%E5%A6%82%E4%BD%95%E8%AE%A9%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E6%B0%B4%E5%B9%B3%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%EF%BC%9F.md#%E7%A7%BB%E5%8A%A8%E7%AB%AF%E7%BA%A2%E5%8C%85%E5%B9%95%E5%B8%98%E5%BC%B9%E7%AA%97-%E5%B1%85%E4%B8%AD%E7%9A%84%E8%A7%84%E8%8C%83%E5%86%99%E6%B3%95%E9%9D%9E%E5%B8%B8%E6%A0%87%E5%87%86)[更多练习](https://github.com/rbew/Web/blob/master/03-CSS%E8%BF%9B%E9%98%B6/CSS%E5%BC%80%E5%8F%91%E7%A7%AF%E7%B4%AF.md)
### JavaScript
- 发展历史
- Ajax(Asynchronous Javascript And XML,一个JS的应用实现):XMLHttpRequest
- JS 实现=ECMAScript+DOM+BOM
- JS 特点:解释型语言、单线程、ECMAScript标准
- JS 每一条语句末尾要加上分号,虽然分号不是必须加的,如果不写分号,浏览器会自动添加,但是会消耗一些系统资源(真的吗?在红包书中也得到类似陈述)
- 注意区分 HTML<!– Comments –>、CSS/* 多行注释 、JS 的注释/ 单行注释``/ 多行注释 */
- alert()、console.log()、prompt()
- 常量(数字、字符串、布尔值)与变量[const定义常量,let定义变量]
- 变量的声明和赋值、命名
- 数据类型:Undefined、Null、Boolean、Number、String、Symbol、Object(Symbol是ES6新增的,Object是复杂数据类型);数据类型分类:引用数据类型(Object)和基本数据类型(其余6种),它们的区别
- 栈内存和堆内存
- 标识符、关键字、保留字
- 字符串:转义字符、length、拼接、模板字符串(ES6)
- 布尔值、数值型(最大值,最小值,NaN,浮点数的运算精度)
- Null(空对象)、Undefined(变量已声明未赋值,变量未声明,函数无返回值,调用函数未传参)
- 的多种用途:连字符,原样输出,数学加号
- typeof 和数据类型转换(隐式转换,强制类型转换)
- 运算符:与或(容错、短路),优先级
- Unicode编码
- 流程控制语句:顺序、选择(if,switch)、循环(while,for)
- 对象(键值对):内置对象(String、Number、Date、Math)、浏览器对象、自定义对象
- 内置对象String(查找、获取、截取、split())
- 正则表达式
- 内建对象Number和Math
- URI编解码
- 内置对象Array
- 函数:函数内 this 的指向、call,apply,bind
- 作用域、变量提升
- 闭包closure
- 面向对象
- 浅拷贝、深拷贝
- 事件
- JS 动画:offset/scroll/client,event
- 定时器
- jQuery:封装好的 API 操作 DOM、选择器、动画
- Zepto
- BOM
- 原型对象
- 垃圾回收
- ES6(ES6 实际上是一个泛指,泛指 ES 2015 及后续的版本。很多人在做业务选型的时候,会倾向于选 jQuery。其实 jQuery 的语法是偏向于 ES3 的。而现在主流的框架 Vue.js 和 React.js 的默认语法,都是用的 ES6。):Promise
- 在写代码时,能用单引号尽量用单引号,而不是双引号,前者在压缩之后,程序执行会更快。
- ES5 的严格模式
- 同源跨域
- 宏任务和微任务
- var、let、const 的区别
- 方法的注释
- 断电调试
### Vue && React
### 计算机网络
### 算法和数据结构
刷算法题思路: 在没有建立一套解题模板之前,可以先思考几分钟题目,写写思路,如果觉得自己的思路不是最优解或者没思路,建议直接看「解题」栏的高赞、高评论文章。直接学别人的解题思路,理解后默写,成为自己的内容;多复习几遍,这道题就会解了。 更厉害一点的,再多想一步,比较相似题之间的不同。比如动态规划,边界条件不同;二分查找,边界点要不要;二叉树的遍历、递归和非递归等等。 学习算法历程:
- 极客时间《数据结构与算法之美》
- 软件技术基础
### 参考资料
- [https://developer.mozilla.org/en-US/docs/Web](https://developer.mozilla.org/en-US/docs/Web)
- [https://www.w3schools.com/](https://www.w3schools.com/)
- [https://andreasbm.github.io/web-skills/](https://andreasbm.github.io/web-skills/)
- [https://github.com/qianguyihao/Web](https://github.com/qianguyihao/Web)
- [https://frontendmasters.com/guides/learning-roadmap/](https://frontendmasters.com/guides/learning-roadmap/)
- [https://frontendmasters.com/books/front-end-handbook/2019/](https://frontendmasters.com/books/front-end-handbook/2019/)
- [https://roadmap.sh/frontend](https://roadmap.sh/frontend)
- [https://learnxinyminutes.com/docs/](https://learnxinyminutes.com/docs/css/)
- [https://github.com/ltadpoles/web-document](https://github.com/ltadpoles/web-document)
- [https://github.com/CavsZhouyou/Front-End-Interview-Notebook](https://github.com/CavsZhouyou/Front-End-Interview-Notebook)
- [前端小课](https://lefex.github.io/)
- [https://github.com/hjzheng/intern-training-plan](https://github.com/hjzheng/intern-training-plan)
- [https://frontendinterviewhandbook.com/en/html-questions/](https://frontendinterviewhandbook.com/en/html-questions/)
- [https://www.freecodecamp.org/learn](https://www.freecodecamp.org/learn)
- [https://github.com/bradtraversy/50projects50days](https://github.com/bradtraversy/50projects50days)
- [https://www.30secondsofcode.org/](https://www.30secondsofcode.org/)
- [https://javascript.info/](https://javascript.info/)
- 学习写应用: JavaScript 30 [https://javascript30.com/](https://javascript30.com/)
- [https://github.com/leonardomso/33-js-concepts](https://github.com/leonardomso/33-js-concepts) - 33 JavaScript concepts every developer should know
- [https://github.com/trekhleb/javascript-algorithms](https://github.com/trekhleb/javascript-algorithms) - Algorithms and data structures implemented in JavaScript with explanations and links to further readings
- [https://learnjavascript.online/](https://learnjavascript.online/)
- JavaScript: The Definitive Guide by Flanagan.
- JavaScript: The Good Parts by Crockford.
- Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript by Herman.
- 12 JavaScript quirks [https://2ality.com/2013/04/12quirks.html](https://2ality.com/2013/04/12quirks.html)
- [https://v3.vuejs.org/](https://v3.vuejs.org/) && [https://reactjs.org/](https://reactjs.org/)
- 快速一点看 vue && react 小书,这是一个比较有名的博主写的系列文章,核心概念:[https://youtube.com/playlist?list=PL4cUxeGkcC9hYYGbV60Vq3IXYNfDk8At1](https://youtube.com/playlist?list=PL4cUxeGkcC9hYYGbV60Vq3IXYNfDk8At1) && [http://huziketang.mangojuice.top/books/react/](http://huziketang.mangojuice.top/books/react/)
- 上手你必须要知道的: react 生命周期,组件概念(state,props,render 等),数据流(例如父子组件如何通信)
- [https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)
- [https://vueschool.io/?friend=codesource](https://vueschool.io/?friend=codesource)
- [https://github.com/haizlin/fe-interview](https://github.com/haizlin/fe-interview)
- [https://github.com/yangshun/tech-interview-handbook](https://github.com/yangshun/tech-interview-handbook)
- [https://learnjavascript.online/](https://learnjavascript.online/)
- [https://github.com/qianguyihao/Web](https://github.com/qianguyihao/Web)
- [https://github.com/wx-chevalier/Web-Series](https://github.com/wx-chevalier/Web-Series)
- Computer Networking: A Top-Down Approach || 图解HTTP
- [https://youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS](https://youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS)
- Practise: [https://gaia.cs.umass.edu/kurose_ross/wireshark.htm](https://gaia.cs.umass.edu/kurose_ross/wireshark.htm)[https://www.ipprimer.com/#/](https://www.ipprimer.com/#/)
- [https://labuladong.gitbook.io/algo/](https://labuladong.gitbook.io/algo/)
- [https://labuladong.github.io/zgnb](https://labuladong.github.io/zgnb)
- The Algorithm Design Manual
- [https://www3.cs.stonybrook.edu/~skiena/373/videos/](https://www3.cs.stonybrook.edu/~skiena/373/videos/)
- [https://leetcode-cn.com/](https://leetcode-cn.com/)
- [https://github.com/trekhleb/javascript-algorithms](https://github.com/trekhleb/javascript-algorithms)
- [https://visualgo.net/en](https://visualgo.net/en)
- [https://www.cs.usfca.edu/~galles/visualization/Algorithms.html](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
- [https://doocs.github.io/leetcode/#/](https://doocs.github.io/leetcode/#/)
## 一份好简历的必备条件
 简历,即简单的经历。不要写很多东西。把每段经历分成几点列好,做了什么,怎么做的,做出什么成果,用简练的语言和数字表达。
- 首选 pdf 格式
- 关于要不要在简历上放照片——看脸
- 简历内容不超两页 A4 纸(太长给面试官的印象抓不住重点,太短经验比较缺乏)
- 简历模板不要太花哨,简单点就行
- 别忘记给简历润色
- 不能只准备一份简历
技能足够具体
反例:
- 熟悉 HTTP、熟悉⾃定义 View、熟悉常⽤⽹络库
正例:
- 掌握 HTTP 报⽂格式,了解请求⾏、Header、Body 的格式以及各⾃的作⽤,了解 GET、 POST、PUT、DELETE 等⽅法的作⽤和区别,了解常⻅状态码如 200、302、404、500 的含义和应⽤场景
- 了解 HTTPS 的⼯作⽅式,熟悉对称加密、⾮对称加密、数字签名的含义和区别,了解 HTTPS 的链接建⽴过程
- 简历命名:`【应聘】前端-高天贺-19855812775-1周5天-2个月`
- 最好找到内推(找认识的师兄师姐进⾏内推,主要是能够帮我们在⾯试后查询⾯试的结果以及进度,⽽且在⾯试前也能给我们介绍公司的⾯试流程以及需要注意的地⽅,如果想去的公司实在没有认识的⼈,也可以上⽜客⽹的内推贴,让发帖的⼈帮你内推,但在查询⾯试进度的积极性⽅⾯以及能起到的帮助作⽤就低 不少了。 )
### 排版
- 必要的间距(让阅读者更清晰的阅读)
- 英文、数字与中文之间加一个空格
- 没有错别字
- 专有名词区分大小写
一份简历包含如下几个部分:
- 基本信息:包括姓名、性别、学历、工作年限、出生年月、联系方式(电话 + 邮箱)、应聘岗位这些差不多了,如果有自己的个人博客以及不错的 GitHub 账号,也可以一并提供,这两项可以作为加分项。
过往履历
- 教育经历:主要是你的大学或者大专以及读研的教育经历,写清楚学校、专业以及入学、毕业时间;
- 工作经历:按照时间的倒叙,把工作或者实习所在的公司名称、职位、开始时间、结束时间写清楚就好了;(不建议把教育经历与工作经历合在一起)
个人技能
- 按照掌握的程度分为几个等级,精通,熟悉,掌握,了解,强烈建议不要写精通
- 不熟悉的点不要写到简历上面
- 技能要具体,突出重点,让面试官有话可问
- 面试其实是一个双向的选择过程,简历上面技能写得具体,面试官看到了,可能会往这个方面提问题,这是非常 nice 的,我们恰好可以展现自己的特长。相反,如果简历上面写得不具体,面试官找不出想问的点,那可能就会往他/她擅长的方面问,这时候,对于求职者来说,是非常吃亏的。
- 写的技能一定要跟你应聘的岗位相关,不相关的不要写上去
- 项目经验:以 3 个左右最佳。(注意,尽量挑自己参与程度多的,上线的,最好还是积累不少实际用户的项目,如果你提到的项目经验是市场有点名气的,那印象会好很多,如果面试官恰好听说过,那就更好不过了。)
项目经验一般包括:项目介绍、开发周期、自己的角色以及自己负责的具体工作 在写一块的时候,建议分点论述,这样显得调理清晰。
- 项目名称,开始时间和结束时间,在项目中担任的角色
- 项目简介,说清楚这个项目主要是做什么的,有多少量级,尽量不要超过一行,切忌不要超过两行
- 项目职责,个人的建议,主要分为两大块,一个是技术职责,一个是业务职责。这样面试官能够很清楚的知道,你在项目中做了什么。
- 量化你的项目,给出数字
比如你解决了项目的什么疑难杂症,带来了什么收益。这块在面试当中也经常被问到,项目中你有遇到什么技术难点嘛,是怎么解决的?这块回答好了,可以给我们的面试加很多分
做了什么性能优化?这块可以有很多,根据自己擅长的领域和项目经历加上去即可。比如启动优化,编译速度优化,APK 瘦身等
你在这个项目中作出了什么成绩?这块要结合我们项目中的情况来说,比如你推动了 MVVM 框架,组件化的落地等
对于程序员来说,个人亮点,我们可以从以下及方面着手,比如说。
- 解决了什么疑难杂症,如解决了 top crash, crash 率降低了 0.1% 等
- 性能上面带来了多少提升,如编译速度的提升,提升了多少,降低了多少 min等
- 你在这个项目作出了什么成绩,比如主导搭建了代码扫描框架,自动扫描,提高代码质量,减少 review 成本。
千里马常有,而伯乐不常有。一定要重视简历,让简历能够反映你的真实水平,先不说做到锦上添花,至少不要拖后腿。 ### 制作方法&途径
online cv:
### 中文
- [https://github.com/dyweb/awesome-resume-for-chinese](https://github.com/dyweb/awesome-resume-for-chinese)
- [https://github.com/billryan/resume](https://github.com/billryan/resume)
### 英文
- [https://rxresu.me/](https://rxresu.me/)
- [https://github.com/sb2nov/resume](https://github.com/sb2nov/resume)
## 简历投递 简历正文: 您好。我叫高天贺,是名大三学生,就读于辽宁石油化工大学电子信息工程专业,应聘贵公司前端实习xx岗位。我一周能来实习5天,总共能实习2个月,能在x月x号到岗。附件是我的简历,请您查收。我之前做过xx工作,有xx优势,相信能够胜任这份工作。期待您的回信,祝您工作愉快。 提升 HR 看到邮件的几率,在 HR 来上班的时间段:9:00-10:00,设置定时发送邮件,注意提前几分钟,防止因为抱有相同想法的太多,造成邮件传递延时 意向城市:上海、杭州、南京、苏州(江浙沪包邮地带) ## 参考资料
由抖音大规模裁员事情说开去:
一、为什么大公司扩招又马上裁员?
- 人才储备。先招到足够多的人才进来,如果业务先没有那么多,无法让更多的人才进入业务,就要裁员。
- 招聘过剩以防人员流失。
- 扩招是为了筛选优质人才。
- 裁掉新员工赔得少。裁员的赔偿制度:N(年)+ 1。
二、择业不要只考虑大公司
- 职场初期,以能力提升为主要目标,不要极力偏向于大厂
- 相比规模,在选择公司时,应着眼于两点:**岗位职责**和**跟对领导**。
三、应届生和职场新人,如何找到合适的工作?
对于我来说,第 1-3 份工作,尤为重要。
- 对行业 / 公司有更全面的了解
1)行业研究报告
- [阿里研究院](http://www.aliresearch.com/cn/index)
- [毕马威](https://home.kpmg/cn/zh/home.html)
- [腾讯研究院](https://www.tisi.org/)
- [埃森哲](https://www.accenture.cn/cn-zh)
- [艾瑞网](https://www.iresearch.cn/)
- [艺恩](https://www.endata.com.cn/)
- [麦肯锡](https://www.mckinsey.com/)
- [第一财经商业数据中心](https://www.cbndata.com/home)
- [波士顿咨询](https://www.bcg.com/zh-cn/)
- [腾云天下](https://www.talkingdata.com/)
- [德勒](https://www2.deloitte.com/cn/zh.html)
- [360研究报告](https://zt.360.cn/report/)
- [普华永道](https://www.pwccn.com/)
- [亿欧智库](https://www.iyiou.com/research)
2)融资/上市公司相关信息
- [IT桔子](https://www.itjuzi.com/)
- [洞见研报](https://www.djyanbao.com/index)
- [发现报告](https://www.fxbaogao.com/)
- 岗位是否是核心岗位,比平台大小更重要
- 找该行业/公司大咖了解详情([知乎](https://www.zhihu.com/consult)、[在行](https://www.zaih.com/))
- 通过网络,辩证地了解公司口碑([脉脉](https://maimai.cn/))。为什么「辩证」?因为坏事比好事更容易传播
## 劳动法 劳动法规定,实习期提前三天就可以离职,劳动合同到期,可以立即离职,劳动合同未到期可以提前一个月。
劳动法规定,劳动合同一年以下试用期1个月,1到3年不超过3个月,3年以上可以约定半年以上试用期。
假如不签合同,劳动是违法的,超过一个月单位要每个月赔偿两倍工资,超过一年视为签订永久合同,只要不犯错严重过失,不得辞退,工资只能涨,职务只能升。
主动开除要赔偿,未提前30天赔偿n+1,提前通知赔n ,违法解除是2n
你想跳槽,提了辞职,但超过一个月不走,视为撤销,强制开除照样要赔钱
无论是在星球、知乎还是各种技术微信群,其中讨论最多的话题之一就是:该如何选择工作?如果两个 Offer 对比起来比较相似,纠结一下也情有可原。但是不少同学会在两个大相径庭的 Offer 之间纠结,比如一家是互联网公司,一家是传统公司。虽然职位一样,但是公司文化,工作环境,发展前景其实完全不一样。在这种 Offer 上还纠结的同学,我认为最重要的一个原因是:没搞清楚自己真正想要什么。
搞清楚自己想要什么是很重要的,并且要制定好中长期目标。我在 2014 年刚工作的第一年就给自己定下了三年目标:
月薪过万。
参与一款百万用户的 App 开发。
在 Github 上开源一个 200+ Star 的项目。
现在回过头看,当时制定三年目标是非常正确的,因为只有朝着目标前进,你才能时刻给自己纠偏,才不会随遇而安,贪图安逸。虽然这三个目标看上去跟怎么选工作没关系,但是实际上已经圈定出了我选择工作的要素:1.工资要求。2.公司规模的要求。3.团队能力与氛围的要求。当时有这样两个 offer:
A:物联网公司 Android 工程师,100人以上A轮,政府相关的项目,月薪3500,工作轻松不加班。
B:互联网公司 Android 工程师,10人左右天使轮,社交领域初创项目,月薪6800,工作辛苦,还需要换城市。
当时毫不犹豫就选择了 B 公司,原因主要有两点:1.工资高,离月薪过万的目标更近。2.互联网 App 项目更容易获得百万用户。就这样我一个人拎着行李就去了上海入职。过了半年 B 公司项目失败,我找工作又遇到了两个选择:
C:互联网公司 Android 工程师,20人左右天使轮,社交领域初创项目,月薪15000,独立开发。
D:互联网公司 Android 工程师,100人以上 B 轮,健康 App 项目,用户量超百万,月薪12000,5人左右 Android 团队。
同样也是果断的选择加入了 D 公司,因为月薪过万的目标已经达到,又正好可以满足我做用户量超百万 App 的愿望。而且可以跟团队里更多的 Android 工程师学习,这样对实现第三个目标也有很大的帮助。去了 D 公司之后,我很快就完成了当年制定的目标。中期目标完成之后我给自己定了新的长期目标:
参与全民 App 项目的开发。
这个条件在当时几乎只有 BAT 满足。最终我凭着自身努力,朋友帮助和运气加成,终于进成功入职 BAT 其中的一家。这就是我前几年选择 Offer 做的决定,如果知道自己想要什么,其实没有太多纠结的地方。如果你没有制定长期目标的话,建议尽快给你自己设定中长期目标吧!
说到这里,有同学会说:"你说的都对,但是我现在就要选 Offer,怎么办?"既然这样的话,我还有自己总结的几条标准给你,用来辅助你进行决策。决策优先级: 1 > 2 > 3 > 4(可按照自身偏好调整):
选择更大规模的公司。如果你还没有在大公司工作过,我建议你一定去一次。你不一定要在大公司工作 5-10 年,但是你一定要在大公司工作过,熟悉他们的业务流程,工作方式,解决问题的方式。经历过最复杂的业务其他的问题对你来说就是小打小闹了。
选择核心业务。一家公司的核心业务往往是技术含量,重视程度最高的业务。而且公司大部分的资源都会往核心业务倾斜,很多事情核心业务推进起来阻力很小。另外接触核心业务,还可以带给你行业内的不可替代性。对你以后的职业发展会有很大帮助。
选择更看好你的领导。这一点只能是可遇不可求,找到一位靠谱的好领导等于给你的职业发展加杠杆。你的职业成长基本是要靠领导提携的。很多同学也许看不上所谓的”嫡系”,认为这是在”搞关系”。最初在我刚工作的时候也是这样认为的,但是只要你发展到了更高的职业阶段,你就能意识到”搞关系”的重要性。很多时候你相比别人做得更好,不单单是代码写得好就行的。
选择工资更高的。公司觉得你值多少钱就会给你开多少工资,5 万月薪无疑比 2 万月薪好得多。在你职业发展的前中期,你不必过分追求薪资待遇。当达到一定的职业阶段,也要考虑自己成家立业,买房生子的现实问题。钱多一点,没什么坏处。 目录:
1. 我是如何从月薪三千到被动收入超过百万的?
2. 程序员成长之路上哪些选择最重要?
3. 普通大学毕业程序员如何进入大厂?
## 1、我是如何从月薪三千到被动收入超过百万的?
### 1.1、初出茅庐
2014年5月,刚刚大学毕业的我,凭着自学两个月的 Java 基础知识,在无锡找到了一家外包公司工作。外包到无锡叶片厂(专门生产飞机叶片)做管理生产流程的软件。月薪3000,工作轻松,早晚班车接送,每天下午4点30下班。
但这并不是我喜欢的工作,当时最火的行业莫过于移动互联网,我又很喜欢倒腾数码产品,所以内心一直想做 Android 开发。于是我就一边工作一边接着投 Android 开发的简历。
过了两周左右,我接到了一个 Android 开发岗位的面试电话。这是一家刚刚成立的公司(简称A公司),此时还没有组建任何技术团队,主要做政府相关的项目。面试官问了我一些基础的 Android 问题,虽然我问题答的不好,但是我表现出了很强烈的激情与兴趣,表示自己会投入全部时间努力做好这份工作。这最终打动了面试官,我成功拿到了offer,月薪3500。
就这样我的 Android 开发之旅就开始了,这份工作没有人带,公司内另外一位 Android 工程师也刚 Java 培训结束。好在公司给了我们将近一个月的学习时间,这段时间我开始在网上自学,在论坛里学习,遇到问题就通过搜索解决。我也开始模仿 CSDN 上的博主,去写自己的博客。就这样随着工作的不断深入,我也算是入门 Android 开发了。 ### 1.2、独闯上海 2015年初,由于A公司的发展并不好,平时做的开发工作也越来越重复,我在考虑是不是要换一家公司,同时也可以挣更多的钱,当时给自己定下了三个要在未来三年完成的目标:
1. 在 Github 上拥有超过 200 star 的项目。 2. 在用户量百万以上 app 的公司工作。 3. 工资突破五位数。
由于当时已经有了一年工作经验,简历投出去之后很快就有公司联系我进行面试,这是一家上海的创业公司(简称B公司)。 B公司是初创团队,在做育儿社区方向,创始人是一线互联网公司的产品经理,技术团队基本上都来自 BAT,公司在上海杨浦区大学路里租了一间复式办公楼办公。最初我面试结束之后,就没有消息了。
但是过了一个多月之后创始人给我打电话问我愿不愿意接受 offer,工资6800,来上海要是还没找到住处的话,可以先住在公司。我接受了offer。于是2015年春节之后,我带着从无锡打包的衣物和被子,就这样一个人来到了上海,入职第一天我给新同事们带了从来伊份买的零食。因为还没时间找房子,第一天我睡在了公司里。
在B公司的时候,我基本上把所有的时间都放在了工作和学习上,因为住在公司,所以我省去了大量的通勤时间,而且带我的是一位从阿里出来的全栈工程师,在他的带领下我开始了解大型工业级项目是如何组织的,一个团队如何分工协作,写出来的代码应该如何重构。
从他身上我看到了一个优秀工程师的素质:聪明,勤奋,善于沟通敢于承担。从此去阿里工作也在我心里埋下了一颗小小的种子。但是好景不长,三个月之后,B公司创业失败,公司要选择新的赛道,同时创始团队里也发生了一些纠纷,带我的那位工程师也打算退出这家公司,他劝我可以开始考虑找新的工作了。
### 1.3、迷茫前行 就这样我重新开始找工作,非常巧合的事情是,我遇到了同样做育儿社区的C公司,而且他们急缺 Android 工程师,所以非常希望我能加入。他们给我开的工资是 1W2。这在当时对于我来说是非常高的工资,但是由于我希望下一份工作还能和高级工程师一起工作,所以就一直犹豫不决。过了两天之后,C公司的技术负责人很诚恳的给我来电说:我们把你的月薪加到 1W5,希望你能过来。在这么高的薪资诱惑下,我入职了C公司。
在入职C公司的第一天我就后悔了,迎接我的是一份外包遗留代码,代码逻辑混乱,到处都充斥着复制粘贴的代码,中文拼音的命名也让我无法忍受。再加上只有我一个人进行维护,我当时就打起了退堂鼓。于是我忐忑的在知乎提出了这个问题:
当天晚上我认真看完所有回答,最终决定留在C公司工作的同时,不放弃寻找更好的机会。
从那之后,我开始在进行需求开发同时,把整个项目重构,重新命名每个中文拼音变量名,抽离重复代码,引入开源库。由于整个项目只有自己负责,我引入了很多有名的开源项目,我开始大量学习开源项目,读开源项目源码。
每天回家之后开始写自己的开源项目,就这样过了4个月左右,我把开源项目完成之后,在微博和 QQ 群里做了不少推广,加上项目本身也比较出色,项目 star 数迅速达到1000+,甚至上了好几天的 trending 榜。 ### 1.4、巧遇伯乐 就在这个时候,我关注了很久的技术博主,stormzhang (**遇到张哥,我的命运随之改变**)在微博上发布了招聘信息,我当晚就发去了一封求职邮件,第二天我接到了张哥的电话面试,电话面试之后张哥通知我还需要一轮现场面试,通过了基本会当场确定 offer。顺利完成面试之后,我开始了在薄荷的工作,直属 leader 就是张哥。 2015年10月,我入职了薄荷。就这样神奇的在一年内完成了当初制定的三个目标。薄荷是我入职的第一家 Android 工程师团队大于5个人的公司。我很珍惜跟这么多优秀的工程师一起工作的机会,我至今记得张哥在第一次给我 review 代码时告诉我不要在两个方法之间留大于一行的空白,不要在类的最后留多余的空间,这样的代码才干净规范。这些代码风格我一直遵守至今。 在薄荷我向每一位工程师学习,慢慢的我可以分别出烂代码与好代码,我开始更多的参与产品与业务,提出自己想法。我开始能写出高质量的技术文章,甚至可以去公开分享会上做一场主题分享。同时我也参与了不少开源项目,还做了一个 Android Studio 上翻译的小插件,在张哥推广下,这个项目也获得了 1000+ 的 star。后来在我入职支付宝的时候起到了关键性的作用。 张哥给了我很多机会,有些机会是团队里其他人也没有的。张哥让我自己选想负责的业务,支持我在新项目里运用全新架构。以及给了我很多自由发挥的空间。让我的技术能力与业务能力都获得了显著的成长。 ### 1.5、圆梦大厂 随着在薄荷工作的深入,我给自己定制了新的目标,那就是参与上亿人使用的国民级 app 开发。在17年中旬的时候我向张哥提出了我的想法,张哥虽然很不希望我离开,但仍然非常支持我,告诉我想去什么公司他都能帮我推荐,我说我想试试支付宝,就这样**张哥帮我内推到了支付宝。(张哥帮我圆梦大厂)** 令我想不到的是,支付宝的面试流程非常顺利,支付宝的同学对我的评价很高,在经历了5轮面试之后我收到了支付宝 P6 的 offer,工作地杭州,2017年5月我从上海去了杭州,入职了支付宝承载业务量最大最核心之一的 Hybrid 容器组。 刚入职支付宝的时候,我发现整个公司每天都在以非常高的速度运转,人人都很忙,业务迭代非常快。在最初的时间里我几乎每天都是11点之后下班,支付宝的代码量很大,业务很复杂。我利用很多业余时间去熟悉代码,利用和同事一起吃饭的时间聊业务,聊公司文化。在支付宝我学习到了中国顶级互联网公司开发产品的流程与方式。学习到了每天服务上亿用户,执行几百亿次的代码应该如何编写,懂得了在业务驱动下的系统框架是如何演进的。真真正正的成为一名高级开发工程师。 ### 1.6、成家立业 2018年8月,我因个人家庭原因,从杭州跳槽回到了上海。随着结婚之后,两个人一起努力,整个家庭收入的增加,我开始学习投资。虽然在新的公司工作很忙,但是我利用上下班的时间,坚持在得到上完整学习了香帅老师的金融课,两三年下来得到的学习时间也达到了300多个小时。我开始理解金融在人一生中的重要地位,并且做到了知行合一。这两年不仅在金融市场赚到了一些钱,还在2020年果断投资房产。随着房价的上涨,租金收益,投资基金收益加在一起,我们现在的被动收入也已经超越百万了。 自从我遇到张哥之后,我的很多人生关键性决策,都是张哥给我的建议。虽然我从薄荷离开了,但是之后在支付宝工作时遇到的问题,以及从杭州回上海时的 offer 选择等等。我都向张哥请教过。张哥每次也都是毫无保留并且竭尽全力的帮我,我相信张哥圈子的同学们都很清楚张哥的为人。所以说张哥改变了我的命运,其实一点也不夸张。 ## 2、程序员成长之路上哪些选择最重要?
总结我这几年的成长之路,我觉得以下几点选择**最重要**: ### 2.1、去正确的城市发展 工作的前几年,我建议去一线大城市发展,大城市的机会更多,上升通道也更丰富,同时薪资待遇也更高。不是每个人都要努力留在大城市,但是在职业发展的前几年去大城市试试,很可能有意想不到的收获。 ### 2.2、不要害怕跳槽 有人说:"第一份工作至少要工作三年","年轻人不要频繁跳槽,否则会很难找工作"。这些话也许对有些人很有效,也确实有些公司不喜欢招频繁跳槽的人。不过在我面试与入职的所有公司里,没有一家觉得我频繁跳槽(**只要你足够强,或者满足用人单位的要求,就没人觉得频繁跳槽是个问题了**)。如果你像我一样出身底层,那么我建议你要在合适的时候跳槽。比如:公司已经无法满足你的职业发展。否则时间过得很快,很可能转眼青春就不在了。 ### 2.3、努力找到好老板 这一点非常重要,但是又是可遇而不可求的。你要努力找到好老板,并且成为老板最信任的人之一。张哥就是我遇到过最好的老板,也是因为遇到张哥才有我的现在。因为好老板会把最好的资源给你,把最有挑战的项目给你,你的能力会飞速成长。甚至时常会让别人觉得不公平。但是职场有时候就是这样:**能力最强的人不一定发展的好,老板信任的人肯定发展的好。** ### 2.4、去大厂核心部门工作 如果有机会,一定要去**大厂的核心部门工作。**大厂的核心部门能让你接触到最前沿的业务场景与最核心的技术。当你的代码服务过全国用户,当你维护过最复杂的系统,当你征服了最难攀登的山峰,以后就是风轻云淡了。并且大厂的核心部门,往往可以带给你行业里独一无二的技术方案,最终让你自身受益。 ### 2.5、培养自己的不可替代性 如果前面几点你都已经做到了,相信你已经成为非常优秀的程序员。最后这一点可以让你更有底气与自信。如果你有自己的不可替代性,那么你的职业发展的主动权就把握在你自己手里了。不可替代性不仅仅指技术能力,还可以是资源整合能力,以及行业影响力等等。**所谓别人做不到,或者没你做的那么好的事情,往往都是你的不可替代性。** ## 3、普通大学毕业程序员如何进入大厂? 说到进大厂,大部分人想到的必要条件都是 985 毕业,不是名校毕业就进大厂无望了。如果是应届生招聘,那么由于都没有工作经验,大厂往往会优先选择名校毕业生。但是并不是说普通大学毕业生就没有进大厂的机会了。我想说的是:**在你工作1-2年之后,还有通过社招进入大厂的机会。**为此你必须要付出比别人更多的努力(上学时比别人少付出的努力,在工作后还是要补回来的) ### 3.1、在小团队里成为最优秀的那个人 首先你要成为小团队,小公司里最努力与最优秀的那个人。多跟周围的同事学习,学习他们身上的优缺点。工作的时候不要只管自己的一亩三分地,多了解同组同事工作的内容,看看是否可以从中学习经验。同时利用工作之外的时间学习升级自己。 ### 3.2、参与开源项目,拥有自己的开源项目 **参与(拥有)知名开源项目,是进入大厂最加分的条件之一。**没人可以一开始就能开源出优秀的项目,你需要先把经典的开源项目尽可能的了解透彻,在这个过程中你可以试着给一些项目提MR。跟项目的 owner 成为朋友,向他们请教与学习。最终可以试着做一些你自己的开源项目,如果实在不知道造什么轮子好,那么多输出一些有深度的源码解析文章,也是一个不错的选择。 ### 3.3、要懂一些算法 现在大厂的面试中,算法基本上已经成为了必选项。有不少公司算法不过则面试一定不过。所以平时要多多培养自己的算法能力。当然也不必过于担心,大厂面试考察的算法一般并不难,主要是考察逻辑思维以及面试人员的态度等等。所以刻意准备,平时多刷刷题,没事的时候自己琢磨琢磨,多看多练多想,算法水平慢慢就上来了。 ### 3.4、找大厂的朋友内推 内推是大厂招聘很重要的一个渠道,也是面试大厂时我觉得最好的方式之一,大家可以多留意张哥圈子里的招聘信息,同时要学会搜索。找到一个人帮你内推,不仅可以帮你盯进度。你还可以多跟他交流,多询问一些面试要点,比如算法的难度一般是什么样的,以及面试流程,面试强度,提前了解面试官的一些信息,做一些针对性的准备。总之想去哪个大厂的话,可以优先看看是否能找到朋友内推。 ### 3.5、刻意准备简历与面试 你的简历加你的面试表现,基本是决定你是否可以进入大厂的。所以一定要进行充足的准备,张哥的圈子里也有很多关于简历书写,以及准备面试的内容,有需要的同学可以搜索查看。总之,不打无准备之仗,积极准备,从容面对。进入大厂没有想象中的那么难~
观察各大搜索引擎搜索数据:
- [Google](https://trends.google.com/trends/)
- [百度指数](https://index.baidu.com/)
- 微信指数
阅读大企业财报,了解市场行业发展
⾸先,要强调⼀点,想拿到⾃⼰满意的 offer,最重要的就是提升⾃⼰的编程能⼒,特别是计算机⽅⾯的基础,这是每轮技术⾯试都必问的。没有⾜够的实⼒,再⾼的⾯试技巧也是没⽤的。 ### 1、寻找⾃⼰的兴趣点,并将其培养成⾃⼰的瑞⼠军⼑ 对于⾃⼰从事的⾏业,其实每个⼈都有着⾃⼰跟别⼈不⼀样的兴趣点,例如我⾃⼰对「Android ⽹ 络」、「图⽚加载」这两⽅⾯的知识就有很⼤的兴趣。 如果想要在 Android ⾯试中脱颖⽽出,拿到⾃⼰满意的 offer,拥有某个「能超过绝⼤部分⼈」的技能是⾮常必要的,也就是所谓的你最出彩的地⽅。 在这次阿⾥技术⼆⾯的时候,⾯试官⼀上来就说:"上⼀轮的⾯试官已经问了很多关于项⽬的东⻄了,你给我讲⼀下你觉得⾃⼰在 Android 中学的最好的东⻄吧。"当时听到这个问题我⼼中⼀阵窃喜,因为之前花了很多的时间和精⼒在学习「Android ⽹络」和「图⽚ 加载」这两⽅⾯,对于这两⽅⾯我还是很有把握的,最终也顺利通过了阿⾥的技术⾯试。 上⾯举的例⼦就是为了说明拥有某些技术特⻓的重要性,在⾯试中很多时候⾯试官关⼼的是你会什么, ⽽不是纠结你不会什么。 ⽽且技术的深度也⽐⼴度要重要的多,如果你在某⽅⾯研究的⽐较深,很有⾃⼰的⼼得和体会,甚⾄连⾯试官在这⽅⾯都没办法问倒你的话,通过这次⾯试的成功率就会⼤⼤增加。 ### 2、将所有的知识点写成对应的逐字稿 在⽇常的开发和学习过程中,相信很多⼈会觉得我们学过的东⻄⾃⼰都已经明⽩了,但是真正在⾯试官 ⾯前,被⾯试官问到问题的时候却不知道怎么「完整」、「清晰」地表达出来。 针对这个问题,我⾃⼰的解决⽅法是将我们在⾯试中可能会遇到的所有的知识点「全部」都写成 对应的 逐字稿。 这⾥的逐字稿有三个要点: 必须是⾃⼰的总结和体会 结合你⾃⼰的开发和项⽬经历能够流畅的朗读出来 写逐字稿的⽬的是让我们在⾯试官⾯前能够「完整」、「清晰」地表达出我们对知识的把握和理解,所 以必须⽤「⾃⼰的语⾔」将⾃⼰的总结和体会写出来,只有这样我们才能记得更牢。 在写完逐字稿之后,我们可以试着朗读⼀下,看看能不能流畅的朗读出来,如果中间有⼀些拗⼝或别扭 的句⼦,就把它逐渐改进。 ### 3、遇到不懂的问题直接回答不懂,但最好能将⾯试官的思路往我们会的东⻄带 在⾯试的时候,切忌不懂装懂。 如果我们⾯试的是技术岗位,有⼏⽄⼏两,⾯试官问⼏个问题就知道 了,如果⾯试官问到的某个知识 点,你只是有点印象或者没多少了解的话,直接回答这个知识不是很熟就⾏了。不然被⾯试官针对这个 知识点追加⼏个问题的话,分分钟打你脸。 当然,在说对这个知识不是很熟之后,可以试着将⾯试官的⾯试思路往我们会的东⻄带,例如我在阿⾥⼆⾯的时候,⾯试官问我有没有⽤过 B 树,因为我对 B 树不是很熟,所以我当时是这么讲的:"对于 B 树不是很熟悉,但之前在看 HashMap 源码的时候,有研究过红⿊树,对红⿊树⽐较熟。" 然后成功地将 ⾯试官的问题转向了我熟悉的红⿊树和 HashMap 的源码上⾯。 ### 4、有意识地锻炼⾃⼰的沟通和表达能⼒ 如果想拿到满意的 offer,除了⾃身的技术实⼒过硬之外,拥有良好的沟通和表达能⼒也是⾮常重要的。 即使实⼒再强,你不能很好的表达出来的话,也是⽩费功夫。 沟通和表达能⼒需要⻓时间的「刻意练习」,并没有什么捷径。 其实在⼤⼀的时候,我的沟通和表达能⼒也是相当差的,但后来⾃⼰开始慢慢明⽩了这项能⼒的重要性,所以在很多场合都会「刻意练习」这项技能。 ⽽且⾃⼰后来当上了学校团队的负责⼈,有很多场合都需要我上台演讲或者进⾏⼀些内部的分享,再加 上⾃⼰后来很喜欢玩「狼⼈杀」,表达能⼒便在这两年间有了很⼤的提升。 ### 5、每⼀次⾯试完都要进⾏复盘,详细记录⾯试问到的题⽬ 在每⼀轮⾯试结束之后,不要急着放松或者休息,先拿出备忘录将⾯试中⾯试官问到的问题「全部」都 详细地记录下来。⽽且找个安静的地⽅慢慢的回忆⾃⼰在⾯试过程中有没有哪些环节表现得不是很好或 者是需要改进的。 每⼀次的⾯试都是⼀个很宝贵的经验和财富,在⾯试过后都要对⾯试进⾏复盘,找出我们在⾯试中表现 的不够好的地⽅,然后针对性地进⾏改进,以及收集在⾯试过程中我们答不出来的⾯试题,有针对的进 ⾏复习。 指不定下⼀轮⾯试问的就是你上⼀轮⾯试不会的问题,⽽且这个可能性是相当⼤的,因为⾯试官之间也 是会进⾏交流的,你的⾯试表现也会传到下个⾯试官的⼿中。 ### 总结 想要拿到满意的 offer,「坚持」是最重要的,抛开了努⼒和坚持,其他的⼀切⽅法论都毫⽆⽤处。 任何⼀个⾏业都是不容易的,唯有持续的「有效」努⼒,才能⾛得更远。
⾯试是双⽅相互了解的过程,对⽅不仅要了解你的硬实⼒、软实⼒,还需要了解你对这份⼯作的兴趣和态度。所以提前了解⾯试的公司和⾯试官,会在⾯试环节中提升⾯试官对我们的印象分。 了解公司的主营业务,深度体验相关的软件针对对⽅的产品的优点提⼀些问题:
- 这个是怎么做的?(体现⾃⼰的兴趣)
- 这个是不是这么做的?(体现⾃⼰的思考)
## 面试主要考察哪些内容? 综合能力,包括逻辑思维能力、专业知识、学习能力、沟通能力等。请不要相信什么面经,我们崇尚踏实、认真、诚实的态度。 来源「心动」招聘Q&A ## 非技术问题 1, 你的兴趣 看看你在自己喜欢的领域能够深入什么层次。顺着自己最熟悉的领域,面试官可以了解我对于自己最喜欢的领域的熟悉程度、钻研程度,从而可以推论我在其他领域的风格和深入程度。 兴趣爱好是一个不易被外界干扰的空间,更容易看出一个人在自然状态下的风格。如果对于自己喜欢的东西都一知半解,对于自己必须去了解的东西的熟悉程度可想而知。 2, 你最擅长的是什么技术 技术面试时容易出现:面试官问的题目全是自己熟悉的。如果恰好面试者不够熟悉这些内容,那么这次面试可想而知是失败的。 一方面对面试者是不公平的,很难考察一个人的能力;另一方面这对面试双方都是一个碰运气的过程。 问面试者熟悉的领域,有几点好处:
- 通过我宣称的掌握程度和实际表现的程度之间做一个比值,然后用这个比值对前面的面试中谈及的能力做同比的增加或减少,这样做能够得到我的真实水平。
- 熟练掌握、精通、入门,在不同人眼里所代表的含义不同。曾经遇到过很多次简历中提到是入门水平,一聊才发现已经有相当程度的理解了。那么对于我精通的领域,可以加上一个比一般的精通更高一些的系数。
3, 跟我描述一下你的大学校园的构造 这个问题考察的是,我能否用简洁的语言向别人描述一件以前未曾了解的事物。 > 一个人真正的能力不在于最难的部分是否掌握,还在于是否能给一个不太懂的人讲清楚。
- 有关简历的提问。围绕简历发问,如果之前实习过,这将会是重点提问内容
常见问题:你在xx公司实习具体做些什么?你做xx工作遇到了哪些问题以及怎么解决的?你做xx工作有什么收获?你为什么不在xx公司实习了?
有关行业和公司以及职位的提问。
- 从行业层面来看,常见问题:你如何看待互联网行业?你为什么要从事互联网行业?
- 从公司层面来看,常见问题:你对我们公司有哪些了解?我们公司的竞品有哪些?
- 从职位层面来看,常见问题:你了解我们招聘的这个职位的工作内容吗?你为什么要应聘这个职位?如果让你来做某项工作你会怎么应对?
- 有关个人性格品质的提问
HR 问的多些,常见问题:你是什么性格的人?你的优点和缺点分别是什么?你身边的人怎么评价你?【背景调查】 ## 技术问题
### 前端算法
- 给定一个字符c,如果它是一个数字或字母,返回true,否则返回false。
- 寻找n个数中的最大值
- 给定一个字符串数组lines,每个元素代表一个IP地址,找到出现频率最高的IP。
- 给定一个字符串,其中含有数字和大小写字母,将大写字母变为小写,其余原样输出
### 计算机网络
- POST 和 GET 的区别? || 补充get和post请求在缓存方面的区别
- get请求传参长度的误区
- HTTP请求的方式,HEAD方式
- HTTP 请求方法 OPTIONS 方法有什么用?
- 请求方法head特性
- HTTP支持的方法
- TLS/SSL 中为什么一定要用三个随机数,来生成"会话密钥"?
- SSL 连接断开后如何恢复?
- RSA 算法的安全性保障?
- DNS 为什么使用 UDP 协议作为传输层协议?
- [必考]在地址栏里输入一个URL,到这个页面呈现出来,中间会发生什么? || 当你在浏览器中输入 google.com 并且按下回车之后发生了什么? || 输入URL到页面加载显示完成发生了什么?
- [必考]OSI七层模式
- TCP/IP的网络模型 (它与OSI相比,它更重要吗)
- 谈谈 CDN 服务?
- 什么是正向代理和反向代理?
- 负载平衡的两种实现方式?
- HTTP1.1 和 HTTP1.0 之间有哪些区别?
- 说一下http2.0 || HTTP2.0 的特性
- 网站域名加 www 与不加 www 的区别?
- 即时通讯的实现,短轮询、长轮询、SSE 和 WebSocket 间的区别?
- 怎么实现多个网站之间共享登录状态
- TCP的三次握手中,每一次握手的各类序号写一下?
- tcp三次握手,一句话概括
- TCP和UDP的区别,为什么三次握手四次挥手
- fetch发送2次请求的原因
- 一句话概括RESTFUL
- TCP和UDP的区别
- 第一次握手的seq序号是随机产生的吗?
- TCP的粘包了解过么?如何产生的以及如何避免?
- HTTP 状态码 301 304 含义 || 301 302 304区别 || 200 304 区别
- 补充400和401、403状态码
- 介绍知道的http返回的状态码
- 浏览器缓存:强,协商缓存 || 强缓存、协商缓存什么时候用哪个
- HTTP缓存机制 [https://www.nowcoder.com/ta/review-frontend/review?query=&asc=true&order=&page=415](https://www.nowcoder.com/ta/review-frontend/review?query=&asc=true&order=&page=415)
- 具体有哪些请求头是跟缓存相关的
- http常用请求头 || 常见的HTTP的头部
- cache-control的值有哪些
- 说一下http和https || 介绍HTTP协议(特征)
- WebSocket的实现和应用
计算机网络面试题
一、POST 和 GET 的区别?
答:
POST 和 GET 是 HTTP 请求的两种方法。
(1)从应用场景上来说,GET 请求是一个幂等的请求,一般 GET 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页。而 POST 不是一个幂等的请求,一般用于对服务器资源会产生影响的情景。比如注册用户这一类的操作。
(2)因为不同的应用场景,所以浏览器一般会对 GET 请求缓存,但很少对 POST 请求缓存。
(3)从发送的报文格式来说,GET 请求的报文中实体部分为空,POST 请求的报文中实体部分一般为向服务器发送的数据。
(4)但是 GET 请求也可以将请求的参数放入 URL 中向服务器发送,这样的做法相对于 POST 请求来说,一个方面是不太安全,因为请求的 URL 会被保留在历史记录中。并且浏览器由于对 URL 有一个长度上的限制,所以会影响 GET 请求发送数据时的长度。这个限制是浏览器规定的,并不是 RFC 规定的。还有就是 POST 的参数传递支持更多的数据类型。
● 什么是「幂等的请求」 ● 浏览器限制 URL 长度的原因
二、TLS/SSL 中为什么一定要用三个随机数,来生成"会话密钥"?
答:
客户端和服务器都需要生成随机数,以此来保证每次生成的秘钥都不相同。使用三个随机数,是因为 SSL 的协议默认不信任每个主机都能产生完全随机的数,如果只使用一个伪随机的数来生成秘钥,就很容易被破解。通过使用三个随机数的方式,增加了自由度,一个伪随机可能被破解,但是三个伪随机就很接近于随机了,因此可以使用这种方法来保持生成秘钥的随机性和安全性。
三、SSL 连接断开后如何恢复?
一共有两种方法来恢复断开的 SSL 连接,一种是使用 session ID,一种是 session ticket。
使用 session ID 的方式,每一次的会话都有一个编号,当对话中断后,下一次重新连接时,只要客户端给出这个编号,服务器如果有这个编号的记录,那么双方就可以继续使用以前的秘钥,而不用重新生成一把。目前所有的浏览器都支持这一种方法。但是这种方法有一个缺点是,session ID 只能够存在一台服务器上,如果我们的请求通过负载平衡被转移到了其他的服务器上,那么就无法恢复对话。
另一种方式是 session ticket 的方式,session ticket 是服务器在上一次对话中发送给客户的,这个 ticket 是加密的,只有服务器能够解密,里面包含了本次会话的信息,比如对话秘钥和加密方法等。这样不管我们的请求是否转移到其他的服务器上,当服务器将 ticket 解密以后,就能够获取上次对话的信息,就不用重新生成对话秘钥了。
● session ID 的缺点是什么 ● 有没有比 session ticket 更好的方式
四、RSA 算法的安全性保障?
答:
对极大整数做因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。现在 1024 位的 RSA 密钥基本安全,2048 位的密钥极其安全。
● 对极大整数进行因式分解,会因为什么而降低难度
五、DNS 为什么使用 UDP 协议作为传输层协议?
答:
DNS 使用 UDP 协议作为传输层协议的主要原因是为了避免使用 TCP 协议时造成的连接时延。因为为了得到一个域名的 IP 地址,往往会向多个域名服务器查询,如果使用 TCP 协议,那么每次请求都会存在连接时延,这样使 DNS 服务变得很慢,因为大多数的地址查询请求,都是浏览器请求页面时发出的,这样会造成网页的等待时间过长。
使用 UDP 协议作为 DNS 协议会有一个问题,由于历史原因,物理链路的最小 MTU = 576,所以为了限制报文长度不超过 576,UDP 的报文段的长度被限制在 512 个字节以内,这样一旦 DNS 的查询或者应答报文,超过了 512 字节,那么基于 UDP 的 DNS 协议就会被截断为 512 字节,那么有可能用户得到的 DNS 应答就是不完整的。这里 DNS 报文的长度一旦超过限制,并不会像 TCP 协议那样被拆分成多个报文段传输,因为 UDP 协议不会维护连接状态,所以我们没有办法确定那几个报文段属于同一个数据,UDP 只会将多余的数据给截取掉。为了解决这个问题,我们可以使用 TCP 协议去请求报文。
DNS 还存在的一个问题是安全问题,就是我们没有办法确定我们得到的应答,一定是一个安全的应答,因为应答可以被他人伪造,所以现在有了 DNS over HTTPS 来解决这个问题。
详细资料可以参考:
《为什么 DNS 使用 UDP 而不是 TCP?》
六、当你在浏览器中输入 google.com 并且按下回车之后发生了什么?
答:
(1)首先会对 URL 进行解析,分析所需要使用的传输协议和请求的资源的路径。如果输入的 URL 中的协议或者主机名不合法,将会把地址栏中输入的内容传递给搜索引擎。如果没有问题,浏览器会检查 URL 中是否出现了非法字符,如果存在非法字符,则对非法字符进行转义后再进行下一过程。
(2)浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里并且没有失效,那么就直接使用,否则向服务器发起新的请求。
(3)下一步我们首先需要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求,获得负责的顶级域名服务器的地址后,再向顶级域名服务器请求,然后获得负责的权威域名服务器的地址后,再向权威域名服务器发起请求,最终获得域名的 IP 地址后,本地 DNS 服务器再将这个 IP 地址返回给请求的用户。用户向本地 DNS 服务器发起请求属于递归请求,本地 DNS 服务器向各级域名服务器发起请求属于迭代请求。
(4)当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址,因为应用层下发数据给传输层,TCP 协议会指定源端口号和目的端口号,然后下发给网络层。网络层会将本机地址作为源地址,获取的 IP 地址作为目的地址。然后将下发给数据链路层,数据链路层的发送需要加入通信双方的 MAC 地址,我们本机的 MAC 地址作为源 MAC 地址,目的 MAC 地址需要分情况处理,通过将 IP 地址与我们本机的子网掩码相与,我们可以判断我们是否与请求主机在同一个子网里,如果在同一个子网里,我们可以使用 APR 协议获取到目的主机的 MAC 地址,如果我们不在一个子网里,那么我们的请求应该转发给我们的网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC 地址,此时目的主机的 MAC 地址应该为网关的地址。
(5)下面是 TCP 建立连接的三次握手的过程,首先客户端向服务器发送一个 SYN 连接请求报文段和一个随机序号,服务端接收到请求后向服务器端发送一个 SYN ACK 报文段,确认连接请求,并且也向客户端发送一个随机序号。客户端接收服务器的确认应答后,进入连接建立的状态,同时向服务器也发送一个 ACK 确认报文段,服务器端接收到确认后,也进入连接建立状态,此时双方的连接就建立起来了。
(6)如果使用的是 HTTPS 协议,在通信前还存在 TLS 的一个四次握手的过程。首先由客户端向服务器端发送使用的协议的版本号、一个随机数和可以使用的加密方法。服务器端收到后,确认加密的方法,也向客户端发送一个随机数和自己的数字证书。客户端收到后,首先检查数字证书是否有效,如果有效,则再生成一个随机数,并使用证书中的公钥对随机数加密,然后发送给服务器端,并且还会提供一个前面所有内容的 hash 值供服务器端检验。服务器端接收后,使用自己的私钥对数据解密,同时向客户端发送一个前面所有内容的 hash 值供客户端检验。这个时候双方都有了三个随机数,按照之前所约定的加密方法,使用这三个随机数生成一把秘钥,以后双方通信前,就使用这个秘钥对数据进行加密后再传输。
(7)当页面请求发送到服务器端后,服务器端会返回一个 html 文件作为响应,浏览器接收到响应后,开始对 html 文件进行解析,开始页面的渲染过程。
(8)浏览器首先会根据 html 文件构建 DOM 树,根据解析到的 css 文件构建 CSSOM 树,如果遇到 script 标签,则判断是否含有 defer 或者 async 属性,要不然 script 的加载和执行会造成页面的渲染的阻塞。当 DOM 树和 CSSOM 树建立好后,根据它们来构建渲染树。渲染树构建好后,会根据渲染树来进行布局。布局完成后,最后使用浏览器的 UI 接口对页面进行绘制。这个时候整个页面就显示出来了。
(9)最后一步是 TCP 断开连接的四次挥手过程。
详细资料可以参考:
《当你在浏览器中输入 Google.com 并且按下回车之后发生了什么?》
七、谈谈 CDN 服务?
答:
CDN 是一个内容分发网络,通过对源网站资源的缓存,利用本身多台位于不同地域、不同运营商的服务器,向用户提供资就近访问的功能。也就是说,用户的请求并不是直接发送给源网站,而是发送给 CDN 服务器,由 CDN 服务器将请求定位到最近的含有该资源的服务器上去请求。这样有利于提高网站的访问速度,同时通过这种方式也减轻了源服务器的访问压力。
详细资料可以参考:
《CDN 是什么?使用 CDN 有什么优势?》
八、什么是正向代理和反向代理?
答:
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
反向代理隐藏了真实的服务端,当我们请求一个网站的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了,反向代理服务器会帮我们把请求转发到真实的服务器那里去。反向代理器一般用来实现负载平衡。
详细资料可以参考:
《正向代理与反向代理有什么区别》
《webpack 配置 proxy 反向代理的原理是什么?》
九、负载平衡的两种实现方式?
答:
一种是使用反向代理的方式,用户的请求都发送到反向代理服务上,然后由反向代理服务器来转发请求到真实的服务器上,以此来实现集群的负载平衡。
另一种是 DNS 的方式,DNS 可以用于在冗余的服务器上实现负载平衡。因为现在一般的大型网站使用多台服务器提供服务,因此一个域名可能会对应多个服务器地址。当用户向网站域名请求的时候,DNS 服务器返回这个域名所对应的服务器 IP 地址的集合,但在每个回答中,会循环这些 IP 地址的顺序,用户一般会选择排在前面的地址发送请求。以此将用户的请求均衡的分配到各个不同的服务器上,这样来实现负载均衡。这种方式有一个缺点就是,由于 DNS 服务器中存在缓存,所以有可能一个服务器出现故障后,域名解析仍然返回的是那个 IP 地址,就会造成访问的问题。
详细资料可以参考:
《负载均衡的原理》
十、http 请求方法 options 方法有什么用?
答:
OPTIONS 请求与 HEAD 类似,一般也是用于客户端查看服务器的性能。这个方法会请求服务器返回该资源所支持的所有 HTTP 请 求方法,该方法会用 '*' 来代替资源名称,向服务器发送 OPTIONS 请求,可以测试服务器功能是否正常。JS 的 XMLHttpRequest 对象进行 CORS 跨域资源共享时,对于复杂请求,就是使用 OPTIONS 方法发送嗅探请求,以判断是否有对指定资源的访问权限。
相关资料可以参考:
《HTTP 请求方法》
十一、http1.1 和 http1.0 之间有哪些区别?
答:
(1)连接方面的区别,http1.1 默认使用持久连接,而 http1.0 默认使用非持久连接。http1.1 通过使用持久连接来使多个 http 请求复用同一个 TCP 连接,以此来避免使用非持久连接时每次需要建立连接的时延。
(2)资源请求方面的区别,在 http1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,http1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
(3)缓存方面的区别,在 http1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,http1.1 则引入了更多的缓存控制策略例如 Etag、If-Unmodified-Since、If-Match、If-None-Match 等更多可供选择的缓存头来控制缓存策略。
(4)http1.1 中还新增了 host 字段,用来指定服务器的域名。http1.0 中认为每台服务器都绑定一个唯一的 IP 地址,因此,请求消息中的 URL 并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个 IP 地址。因此有了 host 字段,就可以将请求发往同一台服务器上的不同网站。
(5)http1.1 相对于 http1.0 还新增了很多方法,如 PUT、HEAD、OPTIONS 等。
详细资料可以参考:
《HTTP1.0、HTTP1.1 和 HTTP2.0 的区别》
《HTTP 协议入门》
《网络—一篇文章详解请求头 Host 的概念》
十二、网站域名加 www 与不加 www 的区别?
详细资料可以参考:
《为什么域名前要加 www 前缀 www 是什么意思?》
《为什么越来越多的网站域名不加「www」前缀?》
《域名有 www 与没有 www 有什么区别?》
十三、即时通讯的实现,短轮询、长轮询、SSE 和 WebSocket 间的区别?
答:
短轮询和长轮询的目的都是用于实现客户端和服务器端的一个即时通讯。
短轮询的基本思路就是浏览器每隔一段时间向浏览器发送 http 请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。这种方式的优点是比较简单,易于理解。缺点是这种方式由于需要不断的建立 http 连接,严重浪费了服务器端和客户端的资源。当用户增加时,服务器端的压力就会变大,这是很不合理的。
长轮询的基本思路是,首先由客户端向服务器发起请求,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制才返回。
客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。长轮询和短轮询比起来,它的优点是明显减少了很多不必要的 http 请求次数,相比之下节约了资源。长轮询的缺点在于,连接挂起也会导致资源的浪费。
SSE 的基本思想是,服务器使用流信息向服务器推送信息。严格地说,http 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息。也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。SSE 就是利用这种机制,使用流信息向浏览器推送信息。它基于 http 协议,目前除了 IE/Edge,其他浏览器都支持。它相对于前面两种方式来说,不需要建立过多的 http 请求,相比之下节约了资源。
上面三种方式本质上都是基于 http 协议的,我们还可以使用 WebSocket 协议来实现。WebSocket 是 Html5 定义的一个新协议,与传统的 http 协议不同,该协议允许由服务器主动的向客户端推送信息。使用 WebSocket 协议的缺点是在服务器端的配置比较复杂。WebSocket 是一个全双工的协议,也就是通信双方是平等的,可以相互发送消息,而 SSE 的方式是单向通信的,只能由服务器端向客户端推送信息,如果客户端需要发送信息就是属于下一个 http 请求了。
详细资料可以参考:
《轮询、长轮询、长连接、websocket》
《Server-Sent Events 教程》
《WebSocket 教程》
十四、怎么实现多个网站之间共享登录状态
答:
在多个网站之间共享登录状态指的就是单点登录。多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
我认为单点登录可以这样来实现,首先将用户信息的验证中心独立出来,作为一个单独的认证中心,该认证中心的作用是判断客户端发送的账号密码的正确性,然后向客户端返回对应的用户信息,并且返回一个由服务器端秘钥加密的登录信息的 token 给客户端,该 token 具有一定的有效时限。当一个应用系统跳转到另一个应用系统时,通过 url 参数的方式来传递 token,然后转移到的应用站点发送给认证中心,认证中心对 token 进行解密后验证,如果用户信息没有失效,则向客户端返回对应的用户信息,如果失效了则将页面重定向会单点登录页面。
详细资料可以参考:
《HTTP 是个无状态协议,怎么保持登录状态?》 ## 参考资料
- [面试题的背后藏着的问题是什么?](https://mp.weixin.qq.com/s/ge34AxyKuhBGfUqkZ3dYmw)
- [https://leetcode-cn.com/circle/discuss/3xmp7u/](https://leetcode-cn.com/circle/discuss/3xmp7u/)
- [https://github.com/tianheg/blog/issues/138#issuecomment-896789350](https://github.com/tianheg/blog/issues/138#issuecomment-896789350)
- [https://www.nowcoder.com/ta/review-frontend?query=&asc=true&order=&tagQuery=&page=4](https://www.nowcoder.com/ta/review-frontend?query=&asc=true&order=&tagQuery=&page=4)
## 面试题目
面试题目我个人觉得主要分为两个模块:
- 简历中项目包含的技术栈
- 基础的技术知识
### 简历中项目包含的技术栈
- 搜索
- 整理
- 运用
搜集
例如:你简历上写了会 Spring,那么你就去 Google 搜关于 Spring 的面试题,应该有人专门整理了。
其它的技术框架采用同样的思路。
整理
把搜集到的知识点,整理出来,还是拿 Spring 来说,整理出 10 道基本上就可以了,然后有重点到一般罗列出来。
其它的技术框架也是采用也同样的思路。
运用
其实这一步才是最重要的,这里不是说背,而是当你看完这些整理好的面试题后,对于每一个知识点,都要用自己的话去描述一遍,这里的自我描述和整理出来的绝对不一样,这一步差异很重要,这样的差异给人的感觉就是:你懂这个知识点了,你不是背的。
### 基础的技术知识
这里的基础的技术知识主要是指:例如你使用的计算机语言是 JAVA,那么和 JAVA 相关的知识点,是不是要准备一下,集合,JVM,多线程这些的。
然后继续采用上面的三步,搜集,整理,运用去一步一步完成。
## 面试心态
其实这里的面试心态主要是指:如何去看待在面试中出现的一些问题?
简历写好,面试题目准备好,就开始投简历吧!
其实到这一步,你觉得自己准备好了么?
并没有,后面你还需要修改简历,搜集,整理面试题目。
所以千万不要完美主义,准备一阶段就开始投简历面试吧!
但这里我需要强调一个前提,本来我是不打算说的,因为怕得罪一些人,但想想会看这篇文章的人也不多,能看到这里的就更不多了,也就无所谓了。
在一开始投简历的时候,会有一些”猎头”找你,给你推荐工作,一定要认真筛选一下。因为有些”猎头”他们拿到你的简历之后,会胡乱投。我前面不是说了吗,你前期还没准备好,如果这个时候简历被投了不错的公司但没通过,等你后期准备好了,再去投这家公司的时候,简历就会被占用了,这个机会就失去了。所以前期这块一定要注意。
前期可以自己在招聘网站上筛选一下,先自己定点投一些小的公司,先刷刷经验。
但尤其在一开始一定要有一个强大的心。
我上面不是说你没有准备好吗!然后你简历投了,面试机会也有了,但一开始面试肯定会磕磕碰碰,你也会遇到各种奇葩的面试官,这个时候你都要抱着一个心态。
**我就是真的很差,我也不能让你给我否定了**。
[https://github.com/paddingme/Front-end-Web-Development-Interview-Question](https://github.com/paddingme/Front-end-Web-Development-Interview-Question) [https://github.com/CavsZhouyou/Front-End-Interview-Notebook](https://github.com/CavsZhouyou/Front-End-Interview-Notebook) [https://github.com/qiu-deqing/FE-interview](https://github.com/qiu-deqing/FE-interview) [https://github.com/jirengu/frontend-interview](https://github.com/jirengu/frontend-interview) [https://github.com/helloqingfeng/Awsome-Front-End-learning-resource](https://github.com/helloqingfeng/Awsome-Front-End-learning-resource) [https://github.com/lgwebdream/FE-Interview](https://github.com/lgwebdream/FE-Interview) [https://github.com/woai3c/Front-end-basic-knowledge](https://github.com/woai3c/Front-end-basic-knowledge) [https://github.com/haizlin/fe-interview](https://github.com/haizlin/fe-interview) [https://github.com/huruji/FE-Interview](https://github.com/huruji/FE-Interview) [https://github.com/HerbertKarajan/Fe-Interview-questions](https://github.com/HerbertKarajan/Fe-Interview-questions) [https://github.com/azl397985856/fe-interview](https://github.com/azl397985856/fe-interview) [https://github.com/springHyc/InterviewLibrary](https://github.com/springHyc/InterviewLibrary) [https://github.com/zwxs/frontInterview](https://github.com/zwxs/frontInterview) [https://github.com/w3cmark/resume](https://github.com/w3cmark/resume) [https://github.com/dolymood/front-end-face-questions](https://github.com/dolymood/front-end-face-questions) [https://github.com/wangwenjie1314/webQd](https://github.com/wangwenjie1314/webQd) [https://github.com/zhenzhencai/FontEndInterview](https://github.com/zhenzhencai/FontEndInterview) [https://github.com/pwstrick/daily](https://github.com/pwstrick/daily) [https://github.com/yisainan/web-interview](https://github.com/yisainan/web-interview) [https://github.com/yygmind/blog](https://github.com/yygmind/blog) [https://github.com/FEGuideTeam/FEGuide](https://github.com/FEGuideTeam/FEGuide) [https://github.com/airuikun/Weekly-FE-Interview](https://github.com/airuikun/Weekly-FE-Interview) [https://github.com/bearofbear/Front-end-questions-to-the-interview-stage-master](https://github.com/bearofbear/Front-end-questions-to-the-interview-stage-master) [https://github.com/okaychen/FE-Interview-Brochure](https://github.com/okaychen/FE-Interview-Brochure) [https://github.com/poetries/FE-Interview-Questions](https://github.com/poetries/FE-Interview-Questions) [https://github.com/infp/Front-end-Interview](https://github.com/infp/Front-end-Interview) [https://github.com/frontend9/fe9-interview](https://github.com/frontend9/fe9-interview) [https://github.com/ravencrown/web-interview](https://github.com/ravencrown/web-interview) [https://github.com/Advanced-Frontend/Daily-Interview-Question](https://github.com/Advanced-Frontend/Daily-Interview-Question) [https://github.com/alibaba/f2etest](https://github.com/alibaba/f2etest) [https://github.com/h5bp/Front-end-Developer-Interview-Questions](https://github.com/h5bp/Front-end-Developer-Interview-Questions) [https://github.com/markyun/My-blog/blob/master/Front-end-Developer-Questions/Question/README.md](https://github.com/markyun/My-blog/blob/master/Front-end-Developer-Questions/Question/README.md)