㈠ 程序员应该如何面试,程序员面试问什么技术
3年以下的面试
面试主要看两个方面:
一、通过沟通交流,一些简单的问题,了解的你的逻辑思维,个人性格。
二、一些常用的技术是否了解,根据你的回答问几个典型的问题。
这个阶段面试技术并不是最重点的,主要还是逻辑思维是否敏捷,为人处事是否好相处,技术是可以培养的,基本带一周就可以很好的干活了。
3年以上就麻烦了
一、技术会问的很详细,没有扎实的功底,挡不住啊。
二、超过3年的招聘,一般都是有一定目的性的,比如需要搭建项目构架,或者需要专攻数据库的,或者需要比较全能的技术大牛来解决问题,所以应该针对面试方的一些需求去准备。
以上都是瞎掰,看看就行了。
㈡ 初级程序员怎么逆成大牛
1首先是定位,知道自己所处的阶段,自己的长处和短处,其次是设定目标,看看差距多远
2其次,看看其中的差距如何通过努力获得
其中可以多看看大牛们分享的成功经验,他们的学习方法,思维方式,处理问题的出发点等
做程序员有点和其他岗位区别很大的就是,你要有独立思考的能力,不能总是controlC control V,要有自己的想法。
3坚持多学习最新和最前沿的知识,对待现有的工作要有专研的精神。
4、现有的工作除了从程序员的角度出发,也可以跳出程序从产品的角度出发思考问题,对于自己的程序的逻辑更有帮助。这样也可以避免操作中出现bug的概率。
总之,做任何事情都不是一蹴而就,一定要即努力又要有办法。
希望能帮助到你
㈢ 为什么程序员越来越排斥面试时做题
几乎没做过程序员,不是不想做,实在是岁数大高手多的是。
登录
微wx笑
关注
为什么程序员都很排斥面试时做题?答不出题的程序员会是大牛吗? 原创
2018-11-08 08:24:52 16点赞
微wx笑
码龄12年
关注
相信很多人都有过这样的经历,就是去面试的时候,先被要求做题。
如果像下面的判断选择还好!
如果是让写个什么算法之类的,那就呵呵了!每天和鼠标握手,还哪会写字啊!
关于这件事,很多小伙伴纷纷吐槽。
网友一:
不止是程序员,没有谁喜欢面试时做题吧。
对于程序员的面试来说,通常的面试方法有两种,一种就是做题加面试,一般针对比较低级的岗位。一种就是聊,直接和技术经理,或者技术总监聊,面试官一般会提醒面试者带着自己的作品或者项目来,通过作品项目更能看出一个人的过往经历和专业水平。
发现没有,很多人一起做题,本身就是对待比较初级岗位的做法,谁会喜欢?如果阿里巴巴挖一个华为的工程师,难道面试前先做个题?
有经验的HR就知道,很多时候面试的时候让面试者写题目,往往会错失一个好人才。
我的上家招我的时候一开始就是让我答题的,结果题目全是一些大学时候学的概念和平时写代码时候用到的知识点。
说实在的,我真的很多概念都记不住了。因为离开学校三年了,记忆力哪有这么好。
结果我只答了一半的题目,就直接放弃了,我说我不想答了,能不能直接找你们技术总监谈一下。
㈣ 请问大牛们一般java程序员工作内容是什么
1.HR看刚毕业的一般都是看基础知识,就是你说的JAVA运行模式程序大体结构,我刚工作时候基础肯定没你好,大学JAVA是选修,也没培训过,都是后来慢慢学
2.和google是必备的,照搬代码是不行的
3.光靠JAVA基础好要做出产品是不可能的,还有软件工程的知识,数据库,各种框架,要学的东西多得数不过来,能不能提高都是看自己的,多阅读java源码,会有很多收获,比如List和Map都可以随机访问,但是看源码发现List用迭代,Map用哈希,具体该用哪个这都是做产品时候需要考虑的,apache很多工具类的源码也是很好的材料
4.数学可以补,人都是逼出来的
㈤ 为什么现在的程序员,真正的大牛非常少
简单算个账:近十多年来,中国的各种大学每年有30万计算机相关专业毕业生,加上其他行业的转入,编程岗位每年新增超过20万人,全国的规模大约300万。平均每人年15万成本,大约需要4500亿成本。市场有多大呢?手机万亿级,互联网万亿级,游戏万亿,企业服务市场万亿。至于不足的那部分在哪里呢?中国之外, 还有很多国家。
而IT和编程这种转移成本几乎为零的行业,在世界上任何一个角落都可以占领。以美国为例, 它本国市场规模比中国还大, 却也占领了世界上其它国家包括中国的大部分市场。美国大约有700-800万程序员,编程工资相当于中国的2-3倍,原因正是因为我们不能自给。世界范围来看, 把上面的市场单位换成美元就好了。
当程序员, 确切的说是码农, 是一个见钱最快的职业, 这也就导致现在干这个的特别多,各种培训机构也满天飞。当然, 程序员也是有分水岭的, 这取决于掌握的知识技能的多少。也有一些比较精深的知识,如数据结构算法、编译原理、操作系统、计算机网络、面向对象等这些, 如果能掌握,会让一个程序员的工作效率和质量有巨大的提高 , 也有了向高阶程序员进化了资格 。 然而, 对于一份普通的写代码的工作, 这些东西最多只能算是绵上添花, 掌握与不掌握, 对于饭碗没有本质的影响 。 假如把掌握这些知识作为程序员的入门标准, 那么程序员的数量估计会少一大半。不过话说回来, 不应该说程序员的数量多, 而是整个IT行业的从业人员多, 像做设计、产品、运营这方面的人, 数量不比程序员少吧。
㈥ 程序员的工资为什么那么高
根据《2018年中国程序员生存状况报告》,年薪 5w 以下的程序员仅占 6.2%,且年龄都在 25 岁以下,工作年限只有 1-2 年;大多数程序员年薪在 9-30w,平均月薪达到 10k 以上,这相比于其他行业已算是高薪;年薪 40 万以上平均年龄为 36 岁。
为什么程序员普遍高薪?
1、程序员是IT行业的核心竞争力
it 行业自诞生以来,一直是资本的宠儿。近年来,多数风投都进入了互联网公司,这是一个循环,资本看好,就会出现更多的创业者。创业公司越多,就需要越多的技术人员。所以,这个行业总体上是不缺钱的,有能力给程序员开高薪。
2、程序员的门槛相对比较高
这个门槛不是指学历,而是很多人倒在入门的路上,因为零基础入门时总会遇到挫折,很容易让人放弃,能真正坚持学完然后做这一行的人,相比别的行业来说还是少很多。
3、程序员的不可替代性
软件技术公司最主要的开销就是人力开销,人才是最重要的组成部分。软件开发不是工厂,很难量化,没办法做到流水线工程。有些关键的岗位人才一旦流失,就会对公司产生巨大的损失,这也是程序员值钱的一个原因。当然前提是技术实力过硬,如果只是打杂或者混日子的,那就另当别论了。
未来,程序员会持续高薪
在所有职业当中,程序员是增长得最快的。很多传统工作类型已经渐渐被取代了,正是因为程序员把这些工作内容自动化了,这个趋势肯定会继续下去。
软件行业的变化会远远超过几次工业革命的变化。传统行业被软件化需要程序员来实现和维持。未来几十年内,需求只会越来越大,与其它行业的工资差距也会越来越极端。
站对了风口,猪都能飘,更何况是工资?
㈦ 你要面试一个程序员,应该问他什么问题
首先面试程序员分有没有经验
面试没有经验的程序员就随便问问点ssm,ssh五大框架问题,多线程什么的,再问问是否会点前端技术
有经验就看看他的简历,问他简历项目上的问题,可以围绕着简历上的项目问,通过他的回答涉及到的技术点之类的,拓展出去问其他的
㈧ HR怎么通过简历来判断程序员是否优秀
01.简历中项目的参与度、贡献度
简历本身的效用信息往往非常局限,看了简历之后,也难以形成对候选人的初步判断。但我们其实可以通过项目经历上的信息,来评估候选是否完整、深入参与其中。
在候选人简历的项目板块,我们可以查找是否有以下关键信息:本人在项目中的角色?比如后台系统开发,主导搭建了页面框架,提高代码质量;公共组建的提取、编写。解决了什么样的问题?比如通过自动化,让代码易于管理;统一的编码规范,更有利于多人合作,降低了代码出错率;性能上带来多少提升?比如单页应用让请求次数变少、页面呈现更快,用户体验更好了。通过以上信息,我们基本上可以判断候选人在项目中的角色,或者从解决的结果来看能基本评估出候选人在整个项目中的贡献度。
另外一种是简历上的项目阐述,可以通过以下两个例子对比:例子一:A:应用 xx 技术,解决了XXXB:应用 xx 技术,解决了XXX,出错率降低了 0.1% 等。例子二:A:结合使用 xx,实现了 app 登录和个人资料的自动填充B:结合使用 xx,实现了 app 登录和个人资料的自动填充,提高了多少的转化率我们可以直观看出,有量化的结果的项目履历更有说服力,也可以侧面证明候选人是有深度参与到项目中,才能对数据结果有一定的了解。
02.候选人在技术社区的使用情况
很多优秀的技术人才都有分享的习惯,比如在GitHub、知乎等社区都会分享一些自己的技术经验贴。通常来讲,如果候选人有在社区发帖的习惯,确实会增色不少。比如全球最大的开源社区GitHub,大多数程序员都会有账号,但这个只能算是真正的“圈内人”,如果是GitHub的重度用户,其实非常亮眼的:如候选人在GitHub发布的项目经常能收获很多follower和star,那正是其能力的体现,可以通过其贡献的项目来评估;如果能长期坚持使用GitHub,也能说明的是这个人心态比较开放,对业界比较关注、律己、有耐心;GitHub上大多数代码是经过长时间构思和反复修改重构,代码质量可以很好反映其当前的Code水平,其中也可以窥见解决问题的能力。
经常在技术社区发帖互动,可以说是判断是否为优秀技术程序员的加分项,但也只能是敲门砖,不能过份强调它的重要性。
03.通过代码笔试,直击简历
要看能力最终还是应该考查编码能力。面试官或HR其实可以通过一场在线笔试,在简历初筛阶段来进一步判断是否为大牛。
面试官可以设置一些耗时较短,考察具体硬技能的题目,来考察候选人的基本功,将简历造假的同学筛掉,在ShowMeBug笔试平台,支持不同职级、不同语言、不同维度等题目,面试官可以快速发一起一场笔试,可以节省面试官大量的时间;
对于简历中的项目,其实可以设计一个非常真实的问题,比如你目前有独立设计实现过一个完整的功能吗?你研发的这个功能产生了什么作用,你在项目中扮演一个什么角色?ShowMeBug笔试支持音视频题型,面试官可以量身设计,让候选人更加真实的回答。
㈨ JAVA程序员面试总结,高手整整理加强版
第一阶段:三年
我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。
第二阶段:五年
五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被 更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。
第三阶段:十年
十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些 人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。
第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:
1、我到底适不适合当一名程序员?
2、我到底应不应该一辈子以程序员为职业?
3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?
最终,明确自己的职业规划,对自己的规划负责并为之努力。
关于项目经验
在网上经常看到一些别的朋友有提出项目经验的问题,依照我面试的感觉来说,面试主要看几点:项目经验+基本技术+个人潜力(也就是值不值得培养)。
关于项目经验,我认为并发编程网的创始人方腾飞老师讲的一段话非常好:介绍产品时面试官会考察应聘者的沟通能力和思考能力,我们大部分情况都是做产品的一个功能或一个模块,但是即使是这样,自 己有没有把整个系统架构或产品搞清楚,并能介绍清楚,为什么做这个系统?这个系统的价值是什么?这个系统有哪些功能?优缺点有哪些?如果让你重新设计这个 系统你会如何设计?
我觉得这就已经足以概括了。也许你仅仅工作一年,也许你做的是项目中微不足道的模块,当然这些一定是你的劣势且无法改变,但是如何弥补这个劣势?
从方老师的话中我总结几点:
1、明确你的项目到底是做什么的,有哪些功能。
2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用。
3、明确你的模块在整个项目中所处的位置及作用。
4、明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术。
在你无法改变自己的工作年限、自己的不那么有说服力的项目经验的情况下(这一定是扣分项),可以通过这种方式来一定程度上地弥补并且增进面试官对你的好感度。
关于专业技能
写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。
1、基本语法
这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满 意,因为能看出你非常热衷研究技术。
最深入的一次,我记得面试官直接问到了我Volatile关 键字的底层实现原理(顺便插一句,面试和被面试本身就是相对的,面试官能问这个问题同时也让面试者感觉到面试官也是一个喜爱研究技术的人,增加了面试者对 公司的好感,我最终选择的就是问了这个问题的公司),不要觉得这太吹毛求疵了—-越简单的问题越能看出一个人的水平,别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,切记。
2、集合
非常重要,也是必问的内容。基本上就是List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。
集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、 HashSet的实现原理,能流利作答,当然能掌握CopyOnWrite容器和Queue是再好不过的了。另外多说一 句,ConcurrentHashMap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于ConcurrentHashMap, 我给网友朋友们提供三点回答或者是研究方向:
(1)ConcurrentHashMap的锁分段技术。
(2)ConcurrentHashMap的读是否要加锁,为什么。
(3)ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器。
3、设计模式
本来以为蛮重要的一块内容,结果只在阿里巴巴B2B事业部面试的时候被问了一次,当时问的是装饰器模式。
当然咱们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:
(1)你的项目中用到了哪些设计模式,如何使用。
(2)知道常用设计模式的优缺点。
(3)能画出常用设计模式的UML图。
4、多线程
这也是必问的一块了。因为三年工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说Thread和Runnable的区别和联 系、多次start一个线程会怎么样、线程有哪些状态。当然这只是最基本的,出乎意料地,几次面试几乎都被同时问到了一个问题,问法不尽相同。
总结起来是 这么一个意思:
假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
聪明的网友们对这个问题是否有答案呢?不难,java.util.concurrent下就有现成的类可以使用。
另外,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?实际一些的,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。
最后,虽然这次面试问得不多,但是多线程同步、锁这块也是重点。synchronized和ReentrantLock的区别、 synchronized锁普通方法和锁静态方法、死锁的原理及排查方法等等。
5、JDK源码
要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。我面试过程中被问了不 少JDK源码的问题,其中最刁钻的一个问了我,String的hashCode()方法是怎么实现的,幸好我平时String源代码看得多,答了个大 概。
JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:
(1)List、Map、Set实现类的源代码
(2)ReentrantLock、AQS的源代码
(3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
(4)线程池的实现原理
(5)Object类中的方法以及每个方法的作用
这些其实要求蛮高的,我去年一整年基本把JDK中重要类的源代码研究了个遍,真的花费时间、花费精力,当然回头看,是值得的—-不仅仅是为了应付面试。
6、框架
老生常谈,面试必问的东西。一般来说会问你一下你们项目中使用的框架,然后给你一些场景问你用框架怎么做,比如我想要在Spring初始化bean 的时候做一些事情该怎么做、想要在bean销毁的时候做一些事情该怎么做、MyBatis中$和#的区别等等,这些都比较实际了,平时积累得好、有多学习 框架的使用细节自然都不成问题。
如果上面你的问题答得好,面试官往往会深入地问一些框架的实现原理。问得最多的就是Spring AOP的实现原理,当然这个很简单啦,两句话就搞定的的事儿,即使你不会准备一下就好了。我遇到的最变态的是让我画一下Spring的Bean工厂实 现的UML图,当然面对这样一个有深度的问题,我是绝对答不出来的/(ㄒoㄒ)/~~
7、数据库
数据库十有八九也都会问到。一些基本的像union和union all的区别、left join、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门 把SQL基础和SQL优化的内容准备一下。
不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。
8、数据结构和算法分析
数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中绝对能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较 重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。记得某次面试,某个面试官和 我聊到了数据库的索引,他问我:你知道索引使用的是哪种数据结构实现吗?
我答到用的Hash表吧,答错。他又问,你知道为什么要使用树吗?我答到因为Hash表可能会出现比较多的冲突,在千万甚至是上亿级别的数据面 前,会大大增加查找的时间复杂度。而树比较稳定,基本保证最多二三十次就能找到想要的数据,对方说不完全对,最后我们还是交流了一下这个问题,我也明白了 为什么要使用树,这里不说,网友朋友们觉得索引为什么要使用树来实现呢?
至于算法分析,不会、不想研究就算了,记得某次面试对方问我,Collections.sort方法使用的是哪种排序方法,额,吐血三升。当然为了 显示我的博学,对算法分析也有一定的研究(⊙﹏⊙)b,我还是硬着头皮说了一句可能是冒泡排序吧。当然答案肯定不是,有兴趣的网友朋友们可以去看一下 Collections.sort方法的源代码,用的是一种叫做TimSort的排序法,也就是增强型的归并排序法。
9、Java虚拟机
出乎我的意料,Java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。要知道,我去年可是花了大量的时间去研究Java虚拟机的,光周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,我就读了不下五遍。
言归正传,虽然Java虚拟机没问到,但我觉得还是有必要研究的,我就简单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:
(1)Java虚拟机的内存布局
(2)GC算法及几种垃圾收集器
(3)类加载机制,也就是双亲委派模型
(4)Java内存模型
(5)happens-before规则
(6)volatile关键字使用规则
也许面试无用,但在走向大牛的路上,不可不会。
10、Web方面的一些问题
Java主要面向Web端,因此Web的一些问题也是必问的。
我碰到过问得最多的两个问题是:
谈谈分布式Session的几种实现方式。
常用的四种能答出来自然是让面试官非常满意的。
另外一个常问的问题是:讲一下Session和Cookie的区别和联系以及Session的实现原理。这两个问题之外,web.xml里面的内容是重点,Filter、Servlet、Listener,不说对它们的实现原理一清二楚吧,至少能对它们的使用知根知底。另外,一些细节的方面比如get/post的区别、forward/重定向的区别、HTTPS的实现原理也都可能会被考察到。
最后,如果有兴趣有时间,建议学习、研究一下SOA和RPC,面向服务体系,大型分布式架构必备,救命良方、包治百病、屡试不爽。
㈩ 程序员中的大牛都是从很早就开始接触编程的吗
顾名思义编码农民,特别是在当今工业化的快速发展,越来越多的依赖计算机应用在各行各业,紧随其后的是社会需要很多的基础编码的农民工,他们有聪明的大脑,对于编程,设计,开发,和熟练的技术,但随着雇主的追求更好的利润,他们的生活时间很紧,加班很正常,所以相应的建设农民工相比,他们的地位与农民工远远优于相比,人类已经开始逐渐从手工转向抽象劳动,但高劳动强度和劳动在某些情况下,他们投资的回报是成比例的,业内人士用来关注程序设计工作被称为代码农民。
但随着时代的变迁,互联网公司里许多最英俊的IT工程师都在自嘲。他们更多的是为IT精英们提供高学历、高收入,很多人在企业中担任高级建筑师和高级工程师,因为他们热爱自己的编程并坚持编写代码的习惯,所以被称为“代码”。此外,大型互联网公司的总部位于城市边缘的开发区,如北京上地、深圳科技园等,所以它是“农业”的自我贬抑。
农民在另一方面,它的“代码”是一种高ShuaiFu自嘲,例如,北京上地附近的房地产销售和客户经常开玩笑地说:农民炸这里的建筑比在城里的码是昂贵的,和代码农民邻居最舒适,代码农民质量最高,等等。比尔?盖茨(Bill Gates)和马克?扎克伯格都是富人和富有的代表。