程序员必备的面试技巧
程序猿面试不想背八股文该怎么做
故事:
wade_crab:小X,你怎么还不准备八股文?不是要准备面试了下午吗?
小X:面试知识走个过场,之前我就打过招呼啦。
wade_crab:还能这样?那可是一家在医疗行业很有名的上市公司呀,大佬。有关系带带小弟我。
小X:没关系啦,后来我才知道,其实平时小H喜欢去认识相关行业的人,也加了很多的社群,更重要的是小H健谈,有很多的求知欲,中午时不时喜欢约个咖啡馆去附近软件园聊聊天。然后就在那附近遇到了很多行业前辈们,有创业的,也有普通职员。
有人就问了:这有啥用,不就唠唠嗑吗?
面试难道不也是唠嗑嘛?面试的目的是为了了解你的能力和过往,知道你能不能胜任,让别人知道你肚子里面有货。其实同理。而且认识后,小X平时也积极发表论文和git开源项目。在小红书和个人账号都有在做。算是把自媒体时代玩的透透的了,说这些只是为了告诉大家,能力怎么被人发现很重要,这样子也许就不用那么繁琐和去背诵让人讨厌的八股文了。
大家了解他的成本就变得很低。而且也信任这么一个经验丰富的人。这样子我想比传统按照两个电子文档,苍白的描述更有说服力。毕竟在学历贬值的年代(学历很重要),会出现高学历低能力的不再少数。因为学历是筛选平均值哈,少数人不会被平均,大多数人只在平均值。
现在再谈谈应届生难入职和年薪40万的看法
我是肯定学历的重要性的,甚至我比大家更了解里面的区别。因为我自己私下也有接毕设类的活:
- 一个是:某电子学校的大二计算机视觉的作业,自己做三维重建的部分组件,要求可以参考开源项目。
- 一个是:某二流大学的研究生作业,利用离群算法和关联分析,去做传统煤炉厂的一个异常报警。
- 一个是:云南某学院的大数据挖掘项目。
这三个区别:
第一个是自己造轮子,必须深刻了解SFM和MVS的原理和算法才能接着进一步去做。非视觉向的人可以下跳去了解这个术语。
第二个是做一些很老的项目吧,这个项目论文是2015年的,他从师兄那改改就上去了。但里面的流程和基础概念他完全不理解,甚至不知道关联分析是为了优化流程。
第三个是挂羊头卖狗肉,说是说大数据挖掘,实际就是利用DEMO数据生成几个图表。
结论:
所以有时候应届生传出大厂年薪40万什么的我真的很能理解。要是他们都有这水平,大学期间打了比赛,做了自己的开源项目,发表了很不错的论文,这样优秀的人。哪个公司不会抢着要呢?
把普通程序猿的能力具体化该是什么?
背面试题?
项目做的特别好?
特别懂业务?
有一定管理能力?
曾经在顶级团队待过?
有自己的开源项目?
经常发表博客论文,技术帖?
拥有软件专利?
这些都是加分项,不过普通程序猿只要做到这些就够够的了:
- 数据结构和算法: 数据结构和算法是程序员面试的核心内容。掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、查找、递归、动态规划等)是至关重要的。
- 编程语言: 程序员需要熟练掌握一门或多门编程语言,通常是面试所需职位所要求的主要语言。这可能包括Python、Java、C++、JavaScript等。
- 操作系统: 了解操作系统的基本原理和概念,包括进程、线程、内存管理和文件系统等。针对特定职位可能需要深入的操作系统知识。
- 数据库和SQL: 了解数据库基本概念,如SQL查询、表设计、索引和事务管理。熟悉常见的关系数据库管理系统(如MySQL、PostgreSQL、Oracle等)。
- Web开发: 如果面试涉及Web开发,要了解前端和后端开发的基本原理,包括HTML、CSS、JavaScript、Web框架和RESTful API等。
- 面向对象编程: 理解面向对象编程的基本概念,包括类、对象、继承、封装和多态等。
- 版本控制: 熟悉版本控制工具,如Git,能够有效地管理代码库和协同工作。
- 软件工程原则: 理解软件工程原则,如DRY(不要重复自己)、SOLID原则、设计模式等,以编写可维护和可扩展的代码。
- 问题解决能力: 在面试中,面试官通常会提出算法和编程问题,要有良好的问题解决能力,能够分析和解决复杂问题。
- 系统设计: 对于高级职位,可能需要进行系统设计和架构方面的面试,要能够设计可扩展、高性能的系统。
- 沟通能力: 良好的沟通能力是面试中的重要因素,要能够清晰地表达思想和解释解决方案。
- 项目经验: 准备在面试中讨论你在过去的项目中的经验,包括你所负责的任务和所面临的挑战。
技术骨干型程序猿只要做到这些就够了:
- 网络和安全: 了解计算机网络原理和基本安全概念,以保护应用程序免受攻击。
- 性能优化: 能够分析和优化应用程序的性能,提高响应速度和效率。
- 系统架构: 了解系统架构设计和微服务概念,对大规模应用程序的设计有经验。
- 大数据和云计算: 了解大数据技术(如Hadoop、Spark)和云计算平台(如AWS、Azure、Google Cloud)。
- 自动化和部署: 学会自动化部署流程,使用CI/CD工具来持续集成和持续交付。
- 学习优秀框架: 如!!!!!!!关注题主 写的一些手写框架类的文章!!!!,思考如何做出企业级中间件,对于性能瓶颈如何应对。
- 如何阅读国外最新的论文 ,并且!将他们产业化
业务管理型程序猿只要做到这些就够了:
- 法律和伦理: 了解软件开发的法律和伦理问题,确保遵守相关法规和道德准则。
- 掌握行业动向,读懂行业报告,掌握行业咨询。了解最新的产品
别再想着35岁失业了!!!
财务自由程序猿只要做到这些就够了(拥有被动收入就可以成为财务自由的人):
- 写一个toC端的App
- 写企划书去拉投资人
- 去寻找商务伙伴
- 去寻找科研合作单位
看到这,请点赞一键三连,让平台置顶让更多人看到这篇文章,减少 35 岁失业的人。可以吗?
附录:
SFM和MVS是计算机视觉和计算机图形学领域中的两种不同技术或方法:
- SFM (Structure from Motion - 运动估计与三维结构恢复): SFM是一种计算机视觉技术,用于从一系列二维图像中恢复三维场景的几何结构(例如物体的位置和相机的运动)。它基于图像中的特征点和相机的运动信息,通过三角测量和优化技术来估计场景的三维结构。SFM通常用于三维重建、摄影测量和虚拟现实等应用领域。
- MVS (Multi-View Stereo - 多视角立体匹配): MVS是一种计算机视觉技术,用于从多个视角的图像中创建高质量的三维模型。它涉及到从不同角度拍摄的图像中的立体匹配,以生成具有深度信息的三维点云或模型。MVS通常用于建立精确的三维模型,如建筑物、雕塑、景观等。
这两种技术通常可以结合使用,以创建更精确和详细的三维重建结果。它们在计算机视觉、计算机图形学、地理信息系统(GIS)和虚拟现实等领域中具有广泛的应用。