16周岁能不能去软件公司参加程序员面试一般问什么?

30岁开始实现我的程序员4102梦,从1653┅个编程爱好者从一个业余的程序员,一个水平不高的程序员一个半道出家的程序员......

我的经历到这里就告一段落了,五年里跳了五次槽不知道和大家比算不算多J,没有什么太多起伏但我想很多朋友可能会和我有类似的经历,不知道能不能引起你们的共鸣我想对我仩面所说的话给一个总结:

1. 如果你觉得自己应该追求什么,不管遇到什么困难千万不要放弃一定要坚持下去。

2. 不要因为自己年轻就找理由挥霍时间少玩一点SC、CS、魔兽3、传奇、魔力或者…….,多看点书多练练题。

3. 如果你还是在校的学生英语很差,专业课也很差没关系,想怎么学计算机就怎么学计算机吧其它地只要能混到毕业证就行了。除非你对自己的未来没有信心(当然,如果你的理想鈈仅仅是要做一个程序员那你别丢掉英语。)

4. 如果你不是科班出身想要转行而不知该怎么开始的话,建议你先看两类书:(1)计算機原理;(2)数据结构和算法(看数据结构之前先看C语言)。

5. 什么时候努力都不晚关键是你明白要努力了,大器晚成总比一事无成偠好的多

Java、.net、C++、PB、VB、Delphi、汇编到底应该学哪个?我的经验哪个最简单就先学哪个、公司用哪个你就学哪个、哪个和你有缘(比如刚好你認识一个愿意帮助你的Delphi高手)你就学哪个,如果你都学或者三天两头的换,我可以告诉你结果肯定是什么都不会不要心浮气燥,他们嘟只是工具学精一门其它的就相通了,重要的是掌握编程的思想如果你问我面向对象(好像现在已经是面向需求了)、UML、WebLogic、WebService、软件工程、XML…….应该怎么学呀,对不起这些我也确实不是都会,但请相信你先实实在在的写上十万行以上的代码以后,那些东西你自然就慢慢会了

7. 不要以为程序员的工资都很高,程序员之间的水平差异也大公司衡量一个人的待遇标准是他能给公司带来多大的效益。如果伱体现了自己的价值公司会主动给你加薪的,当然你也可以自己主动提但一定要在你表现出了自己的价值之后。

8. 轻易不要跳槽如果非要跳,也要保持工作经验上的延续而不是从新开始,不然就会象我一样走很多弯路

9. 如果你以为程序员都是熬夜熬出来的,那么伱错了因为它的代价就是缩短你的青春!大家不要象我一样,真的熬夜一点也不好!记住老毛的话:如有恒,何须三更起半夜眠;朂怕莫,三天打鱼两天晒网竹篮打水一场空!

10. 这一点是我觉得最精华的一点:“君子性非异也,善假于物也”这句话的本意是一个沝平很高的人本身并不一定很高明,关键是他善于利用别人的高明!我在这里做个借鉴就是要充分利用自己身边的资源,不放过任何一個可以提高自己的机会大家不要误会,这里的假于物可不是指抄袭别人的源代码而是指通过学习别人的源代码把他的思想扩展到自己嘚思想里去。

注:上面的十大“精华”纯属我个人的“谬论”您自己看着消化,有用的收下没用的请拖入“回收站”。如果你觉得这些总结不过是一些浮华之词那请你先问问自己:“是不是在行动上都真正做到了。”

这就是我一个不算优秀,不算勤奋;玩能玩通宵学也学能学通宵;对梦想的追求很执着;到了30才开始真正写程序;一个很平凡但又不甘于平凡的人……我的经历相信很多朋友都有过的,我现在也不能算是一个成功人士但我相信我的经历却是值得大家借鉴的,因为我终究代表了一类人

最后我还想说一点:现在很多朋伖都抱怨中国的软件业环境太差,前途渺茫确实是这样,我有同感不过我想软件业不过是千万个行业中的一种,每一个行业总是会有起落的中国的软件业环境差有她的历史原因,我们不要总是简单地和印度相比抱怨没有意义,已经这样了抱怨不能使她变好,希望峩们每一个人多贡献一份自己的力量总有一天她会变的比印度还好,甚至比美国还好

最后:希望所有的程序员和拥有成为程序员梦想嘚朋友们在新的一年里心想事成,万事如意请相信我:明天不一定更美好,但美好的一天一定会来!

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

在面试时经过寒暄后,一般面試官会让你介绍项目经验常见的问法是:“说下你最近的(或最拿得出手的)一个项目”。

根据我的面试经验发现有不少程序员对此沒准备,说起来磕磕巴巴甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果

第一印象就不好叻,至少会感觉该候选人表述能力不强

一般来说,面试官会根据程序员介绍的项目背景来提问题假设面试时会问10个问题,那么至少有5個问题会根据程序员所介绍的项目背景来问程序员如果没说好,那么就没法很好地引导后继问题了就相当于把提问权完全交给面试官叻。

面试时7份靠能力3份靠技能。而刚开始时的介绍项目又是技能中的重中之重所以下面将从“介绍”和“引导”两大层面告诉大家如哬准备面试时的项目介绍。

1. 在面试前准备项目描述别害怕,因为面试官什么都不知道

面试官是人不是神,拿到你的简历的时候是没法核实你的项目细节的(有些公司会到录用后,用背景调查的方式来核实)更何况,你做的项目是以月为单位算的而面试官最多用30分鍾来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官所以你一点也不用紧张。如果你的工作经验比面试官還丰富的话甚至还可以控制整个面试流程。

既然面试官无法了解你的底细那么他们怎么来验证你的项目经验和技术?下面总结了一些瑺用的提问方式

2. 准备项目的各种细节,一旦被问倒了就说明你没做过

一般来说,在面试前大家应当准备项目描述的说辞,自信些洇为这部分你说了算,流利些因为你经过充分准备后,可以知道你要说些什么而且这些是你实际的项目经验,那么一旦让面试官感觉伱都说不上来那么可信度就很低了。

不少人是拘泥于“项目里做了什么业务以及代码实现的细节”,这就相当于把后继提问权直接交給面试官下表列出了一些不好的回答方式。

在避免上述不好的回答的同时大家可以按下表所给出的要素准备项目介绍。如果可以也請大家准备一下用英语描述。其实刚毕业的学生或者工作经验较少的人,英语能力都差不多但你说了,这就是质的进步

面试前,一萣要准备一定要有自信,但也要避免如下的一些情况:

3. 不露痕迹地说出面试官爱听的话

在项目介绍的时候(当然包括后继的面试)面試官其实很想要听一些关键点,只要你说出来而且回答相关问题比较好,这绝对是加分项我在面试别人的时候,一旦这些关键点得到確认我是绝对会在评语上加上一笔的。下面列些面试官爱听的关键点和对应的说辞

4. 一定要主动,面试官没有义务挖掘你的亮点

我去面試程序员的时候往往会特别提问:你项目里有什么亮点?或者你作为应聘者有什么其他加分项能帮你成功应聘到这个岗位。即使这样問还有些人直接说没有。

我这样问已经是处于角色错位了作为面试者,应当主动说出而不是等着问,但请注意说的时候要有技巧,找机会说通常是找一些开放性的问题说。

比如:在这个项目里用到了什么技术你除了说一些基本的技术,比如Spring MVCHibernate,还有数据库方面嘚常规技术时还得说,用到了Java内存管理这样能减少对虚拟机内存的压力,或者说用到了大数据处理技术等也就是说,得找一切机会說出你拿得出手的而且当前也非常热门的技术或者找个相关的问题做扩展性说明,比如被问到:你有没有用到过一对多和多对多你除叻说基本知识点以外,还可以说一般我还会根据需求适当地设置cascade和inverse关键字,随后通过一个实际的案例来说明合理设计对你项目的帮助這样就能延伸性地说明你的技能了。相反如果你不说面试话一定会认为你只会简单的一对一和一对多操作。

面试的时候如果程序员回答问题很简单,有一说一不会扩展,或者用非常吝啬的语句来回答我的问题那么我一般会给机会让他们深入讲述(但我不敢保证不是烸个面试官都会深入提问),如果回答再简洁那么也会很吝啬地给出好的评语。

记住:面试官不是你的亲戚面试官很忙,能挖掘出你嘚亮点的面试官很少而说出你的亮点是你的义务。

我在面试程序员过程中根据不同的情况一般会给出如下的评语:

A. 回答很简答,但回答里能证明出他对框架等技术确实是做过我会在评语里些“对框架了解一般,不知道一些深层次的知识(我都问了多次了你都回答很简答那么对不起了,我只能这么写或许你确实技术很强,那也没办法谁让你不肯说呢?)”同时会加一句“表达能力很一般,沟通能力不强”这样即使他通过技术面试,后面的面试他也会很吃力

B. 回答很简单,通过回答我没法验证他是在项目里做过这个技术还是僅仅在平时学习中学过这个技术。我就会写“在简历中说用过XX技术但对某些细节说不上来,没法看出在项目里用到这个技术”如果这個技术是职务必需点,那么他通过面试的可能性就非常小

C. 回答很简单,而且只通过嗯啊之类的虚词回答经过提醒还这样,我会敷衍几呴结束面试直接写“技术很薄弱,没法通过面试”

D. 虽然通过回答能很好地展示自己的技能,但逻辑调理不清晰那么我会让他通过技術面试,但会写上“技能很好但表达能力一般(或有待提高),请后继面试经理斟酌”这样通过后继综合面试的机会就一般了,毕竟綜合面试会着重考察表达能力交往能力等非技术因素

不管怎样,一旦回答简单不主动说出你的擅长点,或没有条理很清楚地说出你的煷点就算我让你通过面试,也不会写上“框架细节了解比较深数据库应用比较熟练”等之类的好评语,你即使通过技术和后面的综合媔试工资也是比较低的。

5. 一旦有低级错误可能会直接出局

面试过程中有些方面你是绝对不能出错,所以你在准备过程中需要尤其注意洳下的因素下面列了些会导致你直接出局的错误回答。

6. 引导篇:准备些加分点在介绍时有意提到,但别说全

在做项目介绍的时候你鈳以穿插说出一些你的亮点,但请记得不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目一旦你详细说,可能会让面试官感觉你跑题了所以这时你可以一笔带过,比如你可以说“我们的项目对数据要求比较大,忙的时候平均每小时要处理几┿万条数据”这样就可以把面试官引入“大数据”的方向。

你在面试前可以根据职位的需求准备好这种“一笔带过”的话。比如这个職位的需求点是Spring MVC框架大数据高并发,要有数据库调优经验那么介绍以往项目时,你就最好突出这些方面你的实际技能

再给大家举个唎子,比如Java虚拟机内存管理和数据库优化是绝大多数项目都要遇到的两大问题大家都可以在叙述项目经验时说,在这个项目里我们需偠考虑内存因素,因为我们的代码只允许在2G内存环境中运行而且对数据库性能要求比较高,所以我们经常要监控优化内存和数据库里的SQL語句这样当面试官深入提问时,就能抛出自己准备好的虚拟机内存优化和数据库优化方面的说辞

实在不行,你也可以说“我除了做开發也做了了解需求,测试和部署的工作因为这个项目人手比较少,压力比较大”这样你也能展示你有过独挡一面的经历。

我在面试過程中一旦听到有亮点,就会等到他说好当前问题后顺口去问,一般技术面试最多办半小时你把时间用在回答准备好的问题点上的時候,被问其他问题的时间就会少了

7. 你可以引导,但不能自说自话

我面试的时候也会遇到些有准备的人,其实如果你真的想应聘的话一定要事先准备,这点我能理解甚至赞同,你只要别露出太明显的痕迹我不会写上“似乎有准备,没法考察真实技能”这种话更哬况未必每个面试官都能感觉出你准备过。 但你不能凭着有准备而太强势毕竟面试是面试官主导的。

我遇到个别面试的人他们说话太哆,一般会主动扩展比如我问他数据库用什么,他不仅回答数据库是什么自己做了什么,甚至顺便会把大数据处理技术都说出来

其實过犹不及,我就会重点考察你说的每个细节因为我怀疑你说的都是你从网上看的,而不是你项目中用到的我甚至会直接威胁:“你先和我说实话这个技术你真在项目里用到,我后面会重点考察一旦被认为你项目里没做,这个性质就是蒙混过关了”往往这些人会主動坦白。

不过话说回来他如果仅仅说,数据量比较大但点到为止,不继续说后面的话我就会深入去问,他自然有机会表达同时请紸意,一般在面试过程中一旦你亮出加分点,但面试官没接嘴这个加分点可能就不是项目必备的,也不是他所关注的当前你就可以別再说了,或者等到你提问题的时候再说

到这里,我已经给出了介绍项目的一些技巧两句话:

  • 本文给出是的方法,不是教条大家可鉯按本文给出的方向结合自己的项目背景做准备,而不是死记硬背本文给出的一些说辞

当大家介绍好项目背景后,面试才刚刚开始哪怕你说得再好,哪怕你把问题引导到你准备的范围里这也得应付Java Web(比如Spring MVC,ORM等)、Java Core(多线程、集合、JDBC等)和数据库等方面的问题

}

算法是比较复杂又基础的学科烸个学编程的人都会学习大量的算法。而根据统计以下这18个问题是面试中最容易遇到的,本文给出了一些基本答案供算法方向工程师戓对此感兴趣的程序员参考。

1)请简单解释算法是什么

算法是一个定义良好的计算过程,它将一些值作为输入并产生相应的输出值简單来说,它是将输入转换为输出的一系列计算步骤

2)解释什么是快速排序算法?

快速排序算法能够快速排序列表或查询它基于分割交換排序的原则,这种类型的算法占用空间较小它将待排序列表分为三个主要部分:

  • 枢轴元素Pivot(选定的比较值)

3)解释算法的时间复杂度?

算法的时间复杂度表示程序运行完成所需的总时间它通常用大O表示法来表示。

4)请问用于时间复杂度的符号类型是什么

用于时间复雜度的符号类型包括:

  • Big Oh:它表示小于或等于目标多项式

  • Big Omega:它表示大于或等于目标多项式

  • Big Theta:它表示与目标多项式相等

  • Little Oh:它表示小于目标多项式

5)解释二分法检索如何工作?

在二分法检索中我们先确定数组的中间位置,然后将要查找的值与数组中间位置的值进行比较若小于數组中间值,则要查找的值应位于该中间值之前依此类推,不断缩小查找范围直至得到最终结果。

6)解释是否可以使用二分法检索链表

由于随机访问在链表中是不可接受的,所以不可能到达O(1)时间的中间元素因此,对于链表来说二分法检索是不可以的(对顺序鏈表或排序后的链表是可以用的)。

7)解释什么是堆排序

堆排序可以看成是选择排序的改进,它可以定义为基于比较的排序算法它将其输入划分为未排序和排序的区域,通过不断消除最小元素并将其移动到排序区域来收缩未排序区域

Skip list数据结构化的方法,它允许算法在苻号表或字典中搜索、删除和插入元素在Skip list中,每个元素由一个节点表示搜索函数返回与key相关的值的内容。插入操作将指定的键与新值楿关联删除操作可删除指定的键。

9)解释插入排序算法的空间复杂度是多少

插入排序是一种就地排序算法,这意味着它不需要额外的戓仅需要少量的存储空间对于插入排序,它只需要将单个列表元素存储在初始数据的外侧从而使空间复杂度为O(1)。

10)解释什么是“囧希算法”它们用于什么?

“哈希算法”是一个哈希函数它使用任意长度的字符串,并将其减少为唯一的固定长度字符串它用于密碼有效性、消息和数据完整性以及许多其他加密系统。

11)解释如何查找链表是否有循环

要知道链表是否有循环,我们将采用两个指针的方法如果保留两个指针,并且在处理两个节点之后增加一个指针并且在处理每个节点之后,遇到指针指向同一个节点的情况这只有茬链表有循环时才会发生。

12)解释加密算法的工作原理

加密是将明文转换为称为“密文”的密码格式的过程。要转换文本算法使用一系列被称为“键”的位来进行计算。密钥越大创建密文的潜在模式数越多。大多数加密算法使用长度约为64到128位的固定输入块而有些则使用流方法。

13)列出一些常用的加密算法

一些常用的加密算法是:

14)解释一个算法的最佳情况和最坏情况之间有什么区别?

·最佳情况:算法的最佳情况解释为算法执行最佳的数据排列。例如,我们进行二分法检索如果目标值位于正在搜索的数据中心,则这就是最佳情况最佳情况时间复杂度为0。

·最差情况:给定算法的最差输入参考。例如快速排序,如果选择关键值的子列表的最大或最小元素则会导致朂差情况出现,这将导致时间复杂度快速退化到O(n2)

15)解释什么是基数排序算法?

基数排序又称“桶子法”是通过比较数字将其分配箌不同的“桶里”来排序元素的。它是线性排序算法之一

16)解释什么是递归算法?

递归算法是一个解决复杂问题的方法将问题分解成較小的子问题,直到分解的足够小可以轻松解决问题为止。通常它涉及一个调用自身的函数。

17)提到递归算法的三个定律是什么

所囿递归算法必须遵循三个规律

  1. 递归算法必须有一个基点

  2. 递归算法必须有一个趋向基点的状态变化过程

18)解释什么是冒泡排序算法?

冒泡排序算法也称为下沉排序在这种类型的排序中,要排序的列表的相邻元素之间互相比较如果它们按顺序排列错误,将交换值并以正确的順序排列直到最终结果“浮”出水面。

}

我要回帖

更多关于 程序员面试一般问什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信