怎么看待程序员普遍缺乏数据结构和算法的知识?题主不在一线城市,公司面试要求数据结构和算法。:简单的评价中国的程序员是不准确的,可能在早期的中国程序员在
简单的评价中国的程序员是不准确的,可能在早期的中国程序员在找一份工作的时候欠缺数据结构和算法知识还能说的过去,但是现在大部分的程序员对于数据结构和算法还是存在一定的功底,主要原因还在于行业的门槛整体有了很大的提升,而且中国程序员整体的水准也在不断的提升,最直接的证据就是国内互联网公司不断在全球制造出大的影响力,而且这种影响力与日俱增,特别是国际版的抖音在全球应用下载量已经超过脸书等应用,而且这种上涨趋势还在不断的增强中,美国为了抑制这种趋势直接采用了政治手段。
早期的中国程序员懂点C语言基础就能找份工作,现在很多毕业生花大钱参加培训毕业后还不一定能找份合适的工作,都是证明了行业门槛在提升,而且每年还有上百万的计算机毕业生,很多年轻的科技企业都是在打应届生的策略,毕竟毕业生相对薪资比较低而且如果遇到潜质比较好的,产出比还是非常高,当然站在应届生的角度去考虑问题如果在刚毕业的时候有一家企业能够收留自己,在自己混到经验再去考虑去大公司也是一种不错的选择,很多毕业院校不是很好的计算机毕业生都会选择这种路线,基本上在工作两年之后自身的基本功也得到极大的提升同时也混到了一定的经验之后选择大公司几乎是大部分人的选择,当然也有运气非常不错的工作的单位因为业务关系得到极大的提升,公司在短时间内做起来了,那么这些人就成为了公司的元老很可能随着公司上市了,公司规模再大点很可能直接就上市了,直接完成了财政自由。
成为一个程序员的基本功就是数据结构和算法,可能对于很多程序员来讲并没有感觉到这两种有太多直接的关系,但是稍微接触框架或者性能层面的程序员都会了解数据结构和算法对于提升性能有着非常大的作用,很多程序员不觉得这两者有多大的作用,证明了程序员接触层次以及认知都还有很大的提升空间,如果一个行业的程序员普遍缺乏数据结构和算法的知识,证明了这个行业还是存在很大的提升空间,虽然国内程序员数量非常众多,但是对于高层次的程序员的招聘一直是各大公司长期做的事情,对于软件企业来讲最大的财富就是技术人才,只有拥有足够多的技术人才才能真正意义上去突破所谓的技术核心。
对于年轻刚毕业的计算机学生来讲既然选择要成为一名程序员不要心存侥幸的心理,就要把数据结构和算法掌握,数据机构是算法的基础,数据结构中涉及到很多算法的基础,像二叉树,队列等等都是算法基础,再复杂的算法也需要基于基础算法来完成,而且在未来的人工智能发展历程中算法会作为专门的专业出现,而且从生物领域已经取得了突破已经找到某些规律很多人的想法其实都是由于一些复杂的算法组成,听上去还是非常的恐怖但是算法的重要性已经不言而喻了,而且未来算法不仅仅是程序员关注的事情了,在很多领域都会有涉及的。
未来的程序员的重要性也在加强,但是对于算法的要求也会越来越高,很多刚毕业的博士或者研究生算法专业的都能拿到非常高的薪资,算法也是程序员的必备基础,随着人工智能的普及化对于程序员的要求也会越来越高,未来的程序员不仅仅只是做集成或者简单应用功能这种事情了,还需要涉猎到复杂算法的变种和整合中,而且研究越深入其自身的价值也会越高,可以肯定未来高端程序员的薪资会越来越高。
本人就是一名科班出身的程序员,我来给你解释一下。
1.数据数据和算法这些东西一般我们在大学的时候就已经学习了,在大学的时候我们只是学习了理论知识,具体实践这个要看个人如何运用。
2.出来在社会上工作后,现在大多数工作一般招程序员进入都是写一写业务代码,不会涉及到所谓的算法,如果所学的理论没法和实践结合在一起,那也只能是纸上谈兵。
3.像现在社会上那种招聘算法岗位的都是一些大公司,他们都对学历有一定要求,而且本身算法岗社会需求量没那么大,再加上学习算法需要持之以恒的坚持学习,这些种种原因也就导致了社会上精通的人少。
首先,因为中国人多,软件从业者多,涵盖了很多行业。对大部分应用行业来说,程序员不需要很深的数据结构和算法。
其次,说明中国整体软件水平还待提升,需要增加有深度的行业软件开发力度。例如CAD软件、3维软件、数据库系统、操作系统等,这些软件的研发需要大量数据结构和算法知识,它们比例的提高,会提升程序员的整体开发实力,提升国家的科技水平。
暂且不讨论实际开发中用不用得上。
就重要性来说,这些算法也不是最重要的。I/O是最大的瓶颈,算法的优化是渣渣。你用了树,顶多把线性阶给优化到对数阶,但是你一个不注意,把本该放到缓存中的东西写了本地,就可以抵消掉所有算法方面的优化。
而复杂度方面,只要一个普通的程序员,再怎么搞不清楚链表和数组,也很少会写出立方阶甚至指数阶的实现来。
而且我认为,树、图、链表的实现是狭义的算法。广义上的算法是复杂度分析,就是看出你项目中每个模块的复杂度,挑选符合要求的来用,从而避免写出来性能过低的东西。
在校期间相信大部分基本都学过数据结构和算法这门课程,但是在实际工作过程中,除非是跟算法相关的或者大数据相关的工作,否则平时是比较少能接触到优化问题的,大部分的程序员工作还是主要以业务场景的实现,以及web开发为主,这些工作很多都不牵涉到数据结构和算法这块的,只有涉足到性能优化等方面,才需要这部分的知识,所以工作一段时间的程序员数据结构和算法这些知识也基本都还给老师了,没办法,工作内容让我们这部分的能力弱化了。
不知道题主问的是中国的程序员,还是全球的程序员。我作为中国程序员中微不足道的一员。截止2020年9月为止,我有13年的从业经验。我想我应该是有资格谈谈自己的看法的。
目前没有权威的报告统计中国的程序员人数是多少以及有多少程序员是科班出身。
中国有多少程序员?
我根据专业的程序员网站,通过一些公开的数据,可以粗糙的估算一下。
2011年,黑客在网上公开了CSDN的用户数据库,涉及了600万个用户账号。CSDN表示,该数据库是2009年版的备份文件,其最新的数据库有2000万用户账号并没有被泄露(备注:截止2011年)。博客园的日均活跃用户数290万(2020年5月的统计数据)。我以前也是博客园的活跃用户,大概四五年之前经常在上面写技术博客。不过这几年,因为杂事繁忙,已经很少访问博客园了。
我猜测,中国程序员数量在1000万至3000万之间。
所谓术业有专攻,我认为中国的大部分程序员应该都是科班出身的。作为科班出身的程序员,要想拿到毕业证,在大学里面肯定是好好学过计算机专业的必考核心课程数据结构的。可能有一些培训机构出身的程序员,没有学过数据结构。
我认为程序员普遍都懂数据结构和算法的知识。只是在大部分公司,可能用不上数据结构,大部分繁琐的编程工作都是增删改查。程序员们可能普遍对数据结构和算法生疏了。
说明工作中用不到,而是面试需要
很正常,程序员为什么叫码农,很大原因是初级的程序员只要会复制粘贴也能完成一部分程序工作,但只有高级的才需要玩数据结构和算法,当然高级的人少了。
可以问点非常重要的语法基础,也可以问下设计模式,比如最常用的单例模式,还有网络协议,以及简历上常用框架的用法和原理,但算法还是得问,如果不懂算法,是缺乏创造力的,内功越是深厚,代码质量越好,处理问题越快,理解业务的能力也会越强,如果业务量上来了,才更有自信设计整个系统的架构,如果是不懂的人替代性也会更强,也就可能真的变成吃青春饭了,也许每次讨论问题的时候都不会叫你,这样就更难有成长了,不要相信任何贬低数据结构和算法的说法,那只是想把你拉低到和他们一个水平,整个行业需要提升整体素质,需要传播正确的价值,不要对程序太好,也许这是害了他们。
虽然我也是科班出身,但我的数据结构和算法却很一般,原因我估计应该就是毕业后用的比较少。
即使以前学习的时候学的还可以,但长期不用的话也基本上会忘的差不多。
华裔女赌王就此没落,生前让所有 浓情端午粽飘香,青浦邀你“云体 上海:“云端”展现端午节文化内 “甜咸大战”!明星艺人们喜欢什 如何做一个男人喜欢的情人(如何 当你和你同时出现在同一个场景中 如何在昏暗的光线下设置快门速度 教育在生活中的价值是什么? 世上做坏事的人死后会面临什么因 拜登就任总统后的第一步是什么? 同意/不同意:人生最重要的目标 二战后,德国在调和分歧方面做得 亚伯·林肯恨白人吗? 一个编辑能把你的故事毁得有多严 现在的iPhone6还能坚持再用一年 曹操为什么不杀司马懿? 现在买房是不是最便宜的时候,现 我身边的农业银行营业厅关了,AT 欧洲媒体评选CBA最有实力球员, 荣耀play的6+128和荣耀8X的6+128 蚂蚁集团是科技公司还是金融公司 请问机友华为mate30P与华为mate3 听说老詹修剪一次指甲需要5小时 为什么说宝宝“一月睡二月哭三月 戴笠人称戴老板,这个是怎么叫出 没有工作能一次性补缴社保么? 我想知道定向师范生和免费师范生 肺癌引起的咳嗽是怎样的呢? 5000mAh电池的5G手机推荐吗?要 恒大亚冠表现“差强人意”,你觉