导航:首页 > 编程语言 > 编程之美最近点对

编程之美最近点对

发布时间:2023-02-27 12:13:16

㈠ 如何准备互联网公司面试(算法相关)

书籍: 《算法导论》 这本是大部头,很多人都看不完。我本人也并没有看完,它跟了我这么多年,完全是属于常看常新的牛书。每一次看,都发现会有新的收获。比如,以前并不知道求K位数或者中位数有平均为O(n)复杂度的算法。看到了别的地方的参考资料,才知道,原来《算导》上专门有一小节讲这个内容。我基本上是本科比较集中的看了一遍,研一的时候又集中的看了一遍,才算是粗略的看完。但是其实,很多理论性的,以及图论一部分依然还是没有看完。个人推荐,先从简单的开始,挑选比较熟悉的一些偏重与数据结构方面的知识作为起点。这本书的习题非常重要,要是有时间,能够全部做完,那绝对是能够神功在手了。其实,集中把,第二部分(排序),第三部分(数据结构),第四部分(高级设计,我基本主要看动态规划和贪心),第五部分(高级数据结构,B树和二项堆,并差集),第六部分(图算法,最大流部分较难,自己可以看情况掌握)。这些部分可以先从算法本身开始,伪代码全部看懂。因为算法导论讲的很详细,而且有来龙去脉,基本不会有太大难度。数学证明,推荐大家掌握,但是,突击或者第一次,可以选择性的看看。我自己是重复看,才把证明看掉的。第一次看的时候,基本都跳过了。不过,证明和习题是精髓!希望如果有时间,一定要补回来。 《编程之美》《挑战编程》 这本书绝对是将全中国企业,或者说是一部分懒惰的企业面试题库提升了一个档次的一本神书。网络面我师兄的时候,我师兄直接把有一道题的最优解答出来了。但是,那个面试官显然是不知道最优解,一直在引导我师兄答出,这本书里面的第四个解。呵呵。书很不错。全部看一遍并不难。说个不好听的,可以背下来,而且相信我,基本上绝对有用!比如说,n!后面有多少个0。我相信,你们今年面试或者笔试,一定会碰到这道题。《挑战编程》大家可以自行考虑一下吧,这个完全是针对acm竞赛的,不过,看看题也不错。 《编程珠玑》 业界神书嘛。习题全部做完就是了。其实都是些小东西,但是,基本上一步步考察你的解决问题的能力。个人觉得,最常用的就是bit map做排序或者去重,拓展一下就是bloom filter,我当时都是在这本书里面看到的。 《算法技术手册》 这本书貌似出镜不多。书很薄,代码写的非常好,其实基本上全部都是基础算法和数据结构的实现。但是,它牛逼就在于,代码写的太好了,基本上,看一遍,绝对能背下来。面试基础很重要。基本上每个笔试或者面试,都会考一个100行以内的小程序。比如,给定一棵树,以及其中一个节点x,要求出这棵树的中序遍历序列中,x的后续节点,非递归实现。这种题非常简单,但是,真正写对的,其实并不多。《STL源码剖析》《C标准库》 都不厚。挑着看一遍非常舒服。特别是,看看STL每个数据结构迭代器类型啊,红黑书如何实现啊。C标准库,最常见的,比如strcpy()和memcpy()有什么区别啊。特别是,STL,看过之后,对泛型还是能有一定了解的。《C专家编程》《Effective c++》《深度探索C++对象模型》 第一本比较简单,可以当八卦书看。后两本其实也没啥好说的,其实都是些业界公认的牛书。我再重复一遍也没什么意义。但是,的确,考察基本上也就都是这么几本书上面的东西。基本上后两本主要侧重看c++对象方面的一些指示,特别是多态相关的。 《具体数学》《组合数学》 这两本其实可以看作修身养性的书。我当时是时间比较充裕的时候看完的。纯突击,大家就可以跳过了。但是,看完真的很有用。比如说,你们就可以跟面试官扯约瑟夫环的构造解了(这道题我觉得80%会遇到),直接推推公式,就不用写模拟代码了。《组合数学》也是,很多笔试一般会有些小智力题。不过,其实一般的题目,不看这本书也可以搞定。所以,这两本仅供参考。大家有兴趣的时候,可以翻翻。《Linux内核源码剖析》《Linux环境高级编程》…… 要是有机会,能看看最好。因为很多公司都会考察Linux相关的知识。最少要会点脚本,一些简单的Linux命令,以及正则表达式什么的。要是能聊聊内核源码或者驱动开发什么的东西,面试官肯定更加喜欢了。 知识: c & c++ 首先要知道c和c++的区别。常考的有const的用法,一些生僻关键字比如extern,static的用法。 结构体与类的差别。类里面的字对齐问题,也就是说一个类到底有多大。以及一个空的类有多大。 虚函数以及多态相关的显然是重点。比如析构函数什么时候需要写成虚函数,构造函数是否可以是虚函数。 int a[10]; a 和 &a的区别。 java java我并不熟。但是基本上肯定会考一些虚拟机相关的,以及GC等知识。然后,一般招聘的java程序员都会问到很多多线程编程的东西,以及hadoop!这个绝对是重点,淘宝绝对就是问这个的。 操作系统 这个看工作岗位的实际要求。基本的进程线程区别==肯定是会问到的。要是要求高一些,就会问很多多线程编程的问题。一些竞争死锁等基础知识,一些进程调度的算法,最近的kernel好像用的是CFS调度算法。shell编程,如何读取程序堆栈,写一些core mp的读取程序等等的。 数据结构 基本上所有的排序都要会写。与树有关的操作都要会些非递归版本。图一般考的不多。Flood-Fill算法等等。查找中位数。B树和红黑书最好要掌握,不用会写,能扯扯基本就行。KMP,这个很有可能考!而且的确真的不好懂。要是实在不行,背下来吧。哈哈。 网络 这个其实比较基础了。我个人网络方面的知识并不好。但是各种协议的基础,几次握手啊,一些操作系统的api实现到底是单工还是双工用的是TCP还是UDP。我个人网络纯粹靠拼RP。 数据库 数据库非常重要。基本的SQL肯定是要会的。最常见有一道题,inner join和out join的区别。MySQL是重点,基本上很多企业都是问这个。然后,网络扯多了会跟你扯MySQL引擎 的一些东西。这些我就不太懂了。要是能准备的话,或者说的确是做这方面的,就可以着重多准备下。 大规模数据处理这一块绝对是重点!而且本身不是一个系统的学科分支。但是,基本上几家大公司都会问这方面的。推荐先读读google那几篇论文。Page Rank那一篇,然后Map Rece好像有几篇吧。Big Table什么的。推荐一个网址。这篇貌似是转载的,我以前找到的源地址现在找不到了。处理这一类问题基本上思路都是,哈希,map rece以及bit map等等的。对了,推荐看一下外排序以及相关的败者树。这些都是大规模数据处理的一些典型问题。掌握了这些其实也就够了。这块有点屠龙之技的感觉,特别是对于学生,基本没有谁能有机会把这些代码实现出来。但是,没办法,这些公司就是喜欢考。看完那篇博客的,然后再自行查找一些资料,基本就够了。万变不离其中,而且,这些东西,没办法考那么难的。 推荐一个博客吧,作者收集了100+道面试题,并且全部给出了代码。把这个全部看完,基本上很多面试笔试,都是这些原题。 推荐Top Language里面的今天我们思考系列,好几年前的了。看大牛的思考过程,非常有帮助。希望自己能多想想再看答案。注意,google group好像有时被墙。 我把发芽网的题库版块也扫了一遍。 还有好多一时想不起来了。

㈡ 学习c语言看什么书好

最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。
我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像C语言那么灵活,易于理解和学习。
然后可以继续学习C语言,这个语言比较灵活。有了pascal的基础,在进行C语言编程就不会因为C语言的灵活而有问题
。后面的就可以学习VC什么的了。
C语言的书推荐谭浩强的,比较好。
我当时学习pascal和C语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,C就是很好的选择,如果是Windows开发,那么VC就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵

还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就OK了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。
在你学习好C语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。
只是一家之言,有不到之处,还望见谅

㈢ 你怎么看待程序员这个职业

说到程序员

大家的第一印象就是

木讷

不怎么说话

比较理性

不解风情

有的看起来还傻呼呼的

最重要的一点都是单身狗

然而。我作为一名程序员

我看待程序员的角度就不痛了

在我的眼里。。

程序员。是聪明的

至少有逻辑有条理

虽然经常和产品干假

但不代表我们是蛮不讲理的

因为改一次需求我们要付出的不仅仅是时间还有精力。

我接触过的程序员基本都是内骚。有的是风骚,还有的是内外兼骚

不认识的时候感觉都很正经

但是认识后

一个比一个风趣

一个比一个幽默

程序员不会说话

一般都是一些特定场合

一般也都是指对女的

因为程序员比较少和女的接触

所以感觉不知道怎么和女的交流

就造成了不说话的印象

哎。。

这可不能怪我们

实在是工作中接触的女性实在不多

程序员单身。。

不知道是不是工作久了

感觉身边都是结婚的

要不然也都是也对象呃呃呃无论新老员工。无论应届还是非应届

只能说相对单身的会多一点。但是这个现象在慢慢的减少

毕竟程序员的队伍在慢慢壮大

好了其他不多说。。

来几段段子,该上班了。

段子集锦

程序猿问科比:“你为什么这么成功?”科比:“你知道洛杉矶凌晨四点是什么样子吗?”程序猿:“知道,一般那个时候我还在写代码,怎么了?”科比:“额…….”

【程序员被提bug之后的反应】1.怎么可能;2.在我这是好的,不信你来看看;3.真是奇怪,刚刚还好好的;4.肯定是数据问题;5.你清下缓存试试;6.重启下电脑试试;7.你装的什么版本的类库(jdk)8.这谁写的代码;9.尼玛怎么还在用360安全浏览器; 10.用户不会像你这么操作的。

一女同学在食堂吃饭时,一程序猿凑到旁边,“同学,我能和你说话不,我已经一个月没和女生说话了。

一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班。”

程序员的读书历程:x 语言入门—> x 语言应用实践—> x 语言高阶编程—> x 语言的科学与艺术—>编程之美—>编程之道—>编程之禅—>颈椎病康复指南。

人艰不催。。

㈣ 求高手用c++解决二十四点的问题,具体如下

24点算法分析
很久没有研究程序了,惭愧中。。。这个夏天大致地翻了一下微软亚洲研究院出的《编程之美》,很喜欢这本书的风格,里面很多题目都很有意思。书中主要突出的是一个“巧”字,最关键的,就是从变化中寻找不变的规律。 这次说的问题其实也很简单,给四个数,写一个程序输出算24点的结果,如果没有就输出“No Answer”。但是如果用我们自己算24点的思维来写程序是不行的,因为那属于一种“凑”的方法,有碰巧和经验的成分。计算机能做的,就是通过一种固定的方式来找寻结果。如果没有一般性的所谓“固定”方式,那么只有通过遍历和穷举来解决问题。这样的方法下诞生了很多所谓的NP难问题,如果原始数据规模比较大就要花很长的时间来得到结果。
24点这个问题最直接的方法就是,列举四个数所有的排列组合,加上各种运算符以及括号,所有的情况经过处理之后可以得到一个包含所有计算结果和计算式的列表,从其中寻找24的影踪就可以了。如果不计计算结果重复的情况,最终的结果有7680种,数据量还是有点大,因此这个算法需要进一步的优化。例如,考虑到加法和乘法的交换律,如果遇到相应的情况只计算一种,对于另一种直接返回。这样的剪枝处理可以减少不少的运算。
不过我用的是书中的另一种思路,采用了划分的思想。具体的算法是:
如果A是一个数组,定义f(A)为数组中的所有数经过四则运算所能得到的结果的集合。对于A中元素个数大于1的情况,可以将A分拆成两个集合,定义运算 Fork(A,B)为f(A)和f(B)中各取一个元素的四则运算得到的所有的结果的集合。这样,如果列举出集合A所有的拆分情况,那么所有Fork结果的并集就是f(A)的结果。
对于24点的情况,因为数组A有4个数,因此将其用各种方法拆分即可得到最终的f(A),然后查询其中是否存在元素24即可得到有解或者无解的判断。
需要说明的有几点:
1.这个问题表面上需要采用递归的算法,即如果只有一个元素那么直接返回,否则将问题转化为多个f的计算,而每个f的计算又要经过转化,层层递归,直至只有一个元素的情况。但是,不要忘了递归的方法一般都是针对回溯次数不确定的问题。例如汉诺塔问题,只有一个盘子的情况和64个盘子的情况,回溯次数截然不同,千差万别;但是对于24点,因为只有4个数,实际上分拆的可能性是固定的,就那么有限种情况。递归算法的思路是从树的根部往下遍历,而且一般不知道树的大小和规模。而对于24点问题,这棵树的大小固定,完全可以从树的叶子着手,从叶子向根步进,从而得到最终的结果。
2.分拆有一定的技巧,最合适的方法是通过位运算。比如一种分拆方法是{a1,a2},{a3,a4},那么写做1100和0011。这种方法的好处在于,比如要判断1000是不是1100的一个子集,只需要将两者做与运算,最后的结果如果还等于1100则表明确实是子集,同时分拆的另一个结果便是两者的差。这样至多只需要比较 10多次就可以列举出每个集合所有的分拆情况,比较巧妙的方法。同时,位运算的速度也很快,不会对计算的时间有较大的影响。
3.这个方法的缺点在于,最终得到的只是一个无解或者有解的判断,并没有输出表达式。
所以我对这个算法进行了一定的改进,使之能输出表达式。
首先要考虑的,也是最重要的,是这个程序的数据结构。最终的目的自然是为了达到最少的时间复杂度。由于上述方法中f函数返回的是“集合”,因此不存在重复的元素。这样的情况下,哈希表自然是首选的数据结构。
为了记录表达式,需要引入另一套数据结构。每一个计算的结果都必须和一个表达式对应。这样,当最终查询到一个计算结果为24的时候,只需查找相应的表达式就可以得到结果。
这里就产生了冲突。哈希表的特点是存放是乱序的,也就是说,如果只采用一个哈希表存放计算结果,用一个vector存放表达式,那么无法产生对应关系。
因此,有两种方案:
第一种方案比较节省存储空间,将计算结果和表达式分别存在两个vector中,由于两者都是有序的集合类,因此可以在插入数据的时候令各自的下标对应,这样就可以方便地得到对应关系。但是,这样做的后果是,在插入新数据的时候需要在vector中查找是否已经存在这个计算结果,如果已有则不必插入。 vector的查找是穷举式的,效率比较低,尤其是当vector比较大的时候将很大程度上影响计算的效率。但如果不进行查找,势必会计算很多没有意义的重复结果,这样就失去了这个算法的意义了。
第二种方案在第一种方案的基础上将计算结果多存一份哈希表数据。这样做增加了存储空间,但是在时间上的优势是显而易见的。在插入的时候,通过查找哈希表来决定是否已经存在这个结果,由于哈希表的查找效率很高,因此这一步不会对这个程序造成时间上的瓶颈。如果不存在,那么同时在哈希表和两个vector中同时插入数据即可。计算结果和表达式的对应关系依然存在,同时查找的效率也大大提高,整个程序的时间复杂度大大降低。这是典型的空间换时间的方法。
写算法我首选的语言还是c++,但是很惭愧c++的HashTable我不会用,因此用java写了一个版本,还算比较成功,能输出最终的结果。在写程序前我写了一个小程序来测试java的HashSet和ArrayList的查找效率,结果很令人惊讶。在10000次查询中,HashSet所用时间为0ms,而ArrayList则用了1300多ms,看来这个效率完全不是一个数量级上的。因此我采用了上述的第二种方案,最终的效果还不错。
曾经有人问过我5,5,5,1怎么算24点,当时想了很久都没想出来。现在用这个程序可以很轻松地算出5*(5-1/5)=24。看来这个程序可以输出一些大家想不到的结果,很强大把。类似的例子还有很多,比如3,3,7,7等等。总之呢,优化了的穷举法(我这个程序实际上还是一种变相的穷举)是一种很不错的解决问题的思路,值得采用!
过几天就开学了。也许每年的开学前才有时间去研究下这种问题,等到开学之后就基本没什么时间了。嗯,好好工作把,也愿今年能开个好题,明年好好做毕设。Good luck。

PS:昨天经同学提醒才发现有更好的解决方法。主要是因为好久没用,把java的HashMap给忘了。这个数据结构用在这里正合适,也就是说不用两个HashSet加两个ArrayList解决了,直接存在一个HashMap里面就可以。
具体的做法是:把计算结果存在map的key中,而表达式存在map的value中,问题彻底解决。map中key的查找效率是很高的,同时插入也很快;当找到一个计算结果为24的时候直接根据这个key去寻找相应的value即可得到完美的答案,同时HashMap也保证了每个计算结果只保留一个表达式,避免了重复。
我做了一下性能测试,总的来这个改进后的版本效率比以前的版本略有提高,但是最关键的是大大减少了空间的存储,因此也算是对程序进行的大优化把我想。这两天看这个帖子似乎看的人比较多哈,也愿我的想法能给大家一些启发。

㈤ 用java做服务器开发都要学些什么啊请高手帮忙解惑 ps:本人不是学计算机专业的。

java 书籍选择方向
一、入门
《Java 2从入门到精通》- 推荐
《Thinking in Java》- 强烈推荐*
O’reilly的Java编程基础系列 - 参考*

二、进阶
《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅)
《O’reilly-Java IO》- 推荐* (包含Java IO编程的各个方面)
《O’reilly-Database Programming with JDBC》- 推荐* (JDBC编程)
《O’reilly-Java Programming with Oracle JDBC》- 参考*

三、Java Web编程
《O’reilly-Java Server Pages》- 强烈推荐*
《O’reilly-Java Servlet Programming》- 非常推荐*
《O’reilly-Jakarta Struts》- 推荐* (Java Web编程的一个MVC实现框架Struts的书)

四、EJB编程
《J2EE应用与BEA Weblogic Server》- 强烈推荐
《Mastering EJB 2.0》- 非常推荐*
《Enterprise Java Bean》- 推荐*

五、Java XML编程
《O’reilly-Java and XML》- 推荐*
《O’reilly-Java and SOAP》- 参考* (Java的SOAP编程)

六、设计模式
《Core J2EE Patterns》- 强烈推荐* (J2EE设计模式,设计企业应用软件必备参考书)
《EJB Design Patterns》- 推荐*

七、其它
《O’reilly Ant - The Definitive Guide》- 推荐* (Ant是一种功能非常强大的Java工具)

Note:
强烈推荐书籍:建议购买,重点学习
非常推荐书籍:建议花时间学习
推荐书籍:在学有余力的情况下,建议学习
参考书籍:有兴趣的情况下学习

Java, 那些美妙的书籍
文章分类:Java编程
整理一下最近看过或者比较有兴趣的Java书籍,以供大家参考:

1,数据结构、算法方面
《算法导论》 适合有一定基础而且可以平心静气慢慢推荐的人看,有一定难度。个人觉得这本书可以让程序员的水平提升一个档次。(附件有MIT的部分答案)

2,Java 基础相关
《Java 编程思想》 不多说了,看过,没看完,不过的确名不虚传 (附件添加第三版的电子书,中文)
《轻松学用Java2》 个人的Java入门书籍,很适合Java初学者
《Effective Java》正在看,很不错,建议e文不错的直接看英文原版,虽然很多东西以前也会注意到,但是系统的过一遍还是有好处的。(英文版部分章节电子书见附件)
《深入JVM》适合想进一步了解Java以及JVM虚拟机实现的,写的不错。不过很难买得到书了,附件提供中文电子版的下载(扫描版,不是很清晰,还有 英文chm版)。
《Java解惑》 再加一本Java进阶的书,这本书跟Effective Java类似,不过更直接,将各种可能出现的问题进行了归纳整理,目前手头有中文版部分章节的电子书,看看先再决定是不是要买。

3,Eclipse plugin/RCP开发
《Eclipse 从入门到精通》,陈刚着,虽然看完了不一定精通,但是作为少有的几本国内优秀的Eclipse教材,很不错了。个人的RCP入门书籍。(部分章节电子书见 附件)
《Eclipse Rich Client Platform》,着名Addison Wesley Eclipse Rich Client Platform 的第二版,Eclipse官网推荐,hyperbola示例很有用。(电子书见附件)
《Contributing To Eclipse》,大师经典之作。遗憾的是现在各大书店都没货。(附件中有英文版chm格式电子书)
《Swt JFace in Action》个人觉得in action 系统的书都不错,包括《Eclipse in action》《JUnit in action》等,本书对SWT/Jface 组件讲得很详细,也有很多示例程序。(电子书见附件)
《RCP 教程》个人整理的RCP教程,已经在CSDN上提供下载了。

4,GEF/EMF
《Eclipse Model Framework》,第二版出了,中文版也有了,这方面根本没有多少可以选择的余地。GEF就完全没有成形的书,EMF据我所知就这一本了。不便宜,看 过第一版的电子书,那时候觉得对应的版本太老了,看不下去。第二版有机会再试试。
GEF相信很多人是看八进制的博客,和Eclipseworld社区上的某位热心的tx翻译的一本日文教材入门的,至少我是,后来又收集了一些其他方面的 资料,不过还是太少。附件有IBM Developerworks上的GEF进阶系列的文章的电子书版。

4, 结构、设计模式
《敏捷软件开发——原则、模式和实践》,Uncle Bob的大作,个人强烈推荐。里面很详细的讲解了敏捷开发,以及很多实例。这本书花了很多章节讲解常用设计模式,例子非常巧妙,部分由C++实现,也有 Java实现的。如果想了解敏捷开发、软件类包设计、设计模式这方面的东西,这本书是不二选择。
《设计模式》 GOF的23种设计模式。不多说了,有人说很难懂,有人说很经典。(已添加电子书,中英版本都有,pdf)
比较适合入门的还是《Head First 设计模式 》系列,至少语言更生动,一样有人贬低有人热捧,建议先看电子书再决定 是否买,有点小贵。
《Thinking in Patterns》,突然想起Eckel还有一本讲设计模式的书,很早就听说过了,这本书还没看过,不过还是列出来吧。

5,JUnit
《JUnit in action》讲解JUnit很不错的一本书,某看了一部分,受益匪浅,使用JUnit测试就是从看这本书起的。

6, 编程技巧
《编程之美》,据说是微软的面试题集合,不过有些题的确不太好搞。提供部分章节电子书下载,有兴趣的可以看看。

先 写这么多了,上面的书某90%都看过,如果有什么与各位见解上的差距,还请谅解。

索性再加几本电子书吧:
A,《代码大全》也是久负盛名的书了,中文版 清晰版
学院派图书
Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚 解”,先对Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。

1、《Java编程思想》

在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知 识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚,也比较罗嗦,不适 合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。

2、《Agile Java》中文版

这本书是出版社送给我的,我一拿到就束之高阁,放在书柜一页都没有翻过,但是前两天整理书柜的时候,拿出来一翻,竟然发现这绝对是一本好书!这本 书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的基础知识的过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。另外这本书 成书很新,以JDK5.0的语法为基础讲解,要学习JDK5.0的新语法也不错。还有这本书对于内容取舍也非常得当,Java语言毕竟类库庞大,可以讲的 内容太多,这本书选择的内容以及内容的多寡都很得当,可以让你以最少的时间掌握Java最重要的知识,顺便培养出来优秀的编程思路,真是一本不可多得的好 书。

虽然作者自己把这本书定位在入门级别,但我不确定这本书用来入门是不是稍微深了点。
Java编程进阶类
打下一个良好的Java基础,还需要更多的实践经验积累,我想没有什么捷径。有两本书值得你在编程生涯的这个阶段阅读,培养良好的编程习惯,提高你的代码质量。

1、《重构 改善既有代码的设计》

这本书名气很大,不用多介绍,可以在闲暇的时候多翻翻,多和自己的实践相互印证。这本书对你产生影响是潜移默化的。

2、《测试驱动开发 by Example》

本书最大特点是很薄,看起来没有什么负担。你可以找一个周末的下午,一边看,一边照做,一个下午就把书看完,这本书的所有例子跑完了。这本书的作用是通过实战让你培养TDD的思路。
Java架构师之路
到这个阶段,你应该已经非常娴熟的运用Java编程,而且有了一个良好的编程思路和习惯了,但是你可能还缺乏对应用软件整体架构的把握,现在就是你迈向架构师的第一步。

1、《Expert One-on-One J2EE Design and Development》

这本书是Rod Johnson的成名着作,非常经典,从这本书中的代码诞生了springframework。但是好像这本书没有中译本。

2、《Expert One-on-One J2EE Development without EJB》

这本书由gigix组织翻译,多位业界专家参与,虽然署名译者是JavaEye,其实JavaEye出力不多,实在是忝居译者之名。

以上两本书都是Rod Johnson的经典名着,Java架构师的必读书籍。在我所推荐的这些书籍当中,是我看过的最仔细,最认真的书,我当时读这本书几乎是废寝忘食的一气读 完的,有小时候挑灯夜读金庸武侠小说的劲头,书中所讲内容和自己的经验知识一一印证,又被无比精辟的总结出来,读完这本书以后,我有种被打通经脉,功力爆 增的感觉。

但是后来我看过一些其他人的评价,似乎阅读体验并没有我那么high,也许是因为每个人的知识积累和经验不同导致的。我那个时候刚好是经验知识积累已经足够丰富,但是还没有系统的整理成型,让这本书一梳理,立刻形成完整的知识体系了。

3、《企业应用架构模式》

Martin的又一本名着,但这本书我只是泛泛的看了一遍,并没有仔细看。这本书似乎更适合做框架的人去看,例如如果你打算自己写一个ORM的 话,这本书是一定要看的。但是做应用的人,不看貌似也无所谓,但是如果有空,我还是推荐认真看看,会让你知道框架为什么要这样设计,这样你的层次可以晋升 到框架设计者的角度去思考问题。Martin的书我向来都是推崇,但是从来都没有像Rod Johnson的书那样非常认真去看。

4、《敏捷软件开发 原则、模式与实践》

Uncle Bob的名着,敏捷的经典名着,这本书比较特别,与其说是讲软件开发过程的书,不如说讲软件架构的书,本书用了很大篇幅讲各种面向对象软件开发的各种模式,个人以为看了这本书,就不必看GoF的《设计模式》了。

软件开发过程
了解软件开发过程不单纯是提高程序员个人的良好编程习惯,也是增强团队协作的基础。

1、《UML精粹》

UML其实和软件开发过程没有什么必然联系,却是软件团队协作沟通,撰写软件文档需要的工具。但是UML真正实用的图不多,看看这本书已经足够了,完全没有必要去啃《UML用户指南》之类的东西。要提醒大家的是,这本书的中译本翻译的非常之烂,建议有条件的看英文原版。

2、《解析极限编程 拥抱变化》XP

这是Kent Beck名着的第二版,中英文对照。没什么好说的,必读书籍。

3、《统一软件开发过程》UP

其实UP和敏捷并不一定冲突,UP也非常强调迭代,测试,但是UP强调的文档和过程驱动却是敏捷所不取的。不管怎么说,UP值得你去读,毕竟在中国真正接受敏捷的企业很少,你还是需要用UP来武装一下自己的,哪怕是披着UP的XP。

4、《敏捷建模》AM

Scott Ambler的名着,这本书非常的progmatic,告诉你怎么既敏捷又UP,把敏捷和UP统一起来了,又提出了很多progmatic的建议和做法。 你可以把《解析极限编程 拥抱变化》、《统一软件开发过程》和《敏捷建模》这三本书放在一起读,看XP和UP的不同点,再看AM是怎么统一XP和UP的,把这三种理论融为一炉,形 成自己的理论体系,那么你也可以去写书了。

软件项目管理
如果你突然被领导提拔为项目经理,而你完全没有项目管理经验,你肯定会心里没底;如果你觉得自己管理项目不善,很想改善你的项目管理能力,那么去考PMP肯定是远水不解近渴的。

1、《快速软件开发》

这也是一本名着。可以这样说,有本书在手,你就有了一个项目管理的高级参谋给你出谋划策,再也不必担心自己不能胜任的问题了。这本书不是讲管理的 理论的,在实际的项目管理中,讲这些理论是不解决问题的,这本书有点类似于“软件项目点子大全”之类的东西,列举了种种软件项目当中面临的各种问题,以及 应该如何解决问题的点子,你只需要稍加变通,找方抓药就行了。

找个相关工作,踏踏实实干吧,戒浮躁~~~

㈥ web前端开发需要学习什么知识


㈦ 孩子要不要学编程课编程课的未来发展,到底是什么样的

个人认为没有必要学习。

编程是一个很不错的技能,可以让人学习操纵机器,能够设计程序实现各种各样的事情。但是让小孩子学习编程就不一定是什么好事了。

我记得我小时候,我们小学用的还是那种很肥厚的台式电脑,那个时候老师教我们一些很简单的操作指令来让电脑上的小乌龟运动。而且没有鼠标的。这应该就是我们最早接触到的和程序相关的东西了吧。之后老师还硬性要求我们背五笔打字口诀。那时候真的是痛苦了好久。因为特别没有意思又不知道能用来干啥。20年过去了,如今已经没有那种教学了吧,因为现在的电脑已经足够好用,人性化。

1,这是我的第一个观点, 科技 在不断的变化,现在的编程语言学习,迟早会变成一个古老的机器语言。未来的 科技 会向着更人性化更智能的方向去发展。那么现在的编程人性吗?智能吗?是不是很多程序员发生过写错了一个字母导致代码错误,结果查了半天查不出来的结果?是不是现在很多程序语言还得不停地学习各种高级数学逻辑学?当初鼠标被发明之前,人们只能不停地敲击键盘操作,想想看,这就是现在的编程世界。

随着AI 人工智能的出现,或许未来会出现一种编码器,人类说句话,指令就编辑好了。而这个或许就在不远的将来。当你的孩子长大,他发现当初辛苦报班学的编程已经被淘汰了。这是不是一种很让人难受的事。

2,学习简单得编程有助于孩子的思维逻辑培养。不得不说,这个想法真的太成人了。都是按照成年人的成功学角度来思考的。小孩子如果讲逻辑,那还是小孩子吗?毕竟,不是所有事情都能靠讲逻辑来解决。难道你要让你的孩子从小就脱发吗?不好意思,皮一下。

编程是一个在固定的逻辑语言系统下建立起来的东西。他可以是数学,可以是逻辑学。但是,要知道,这会固化小孩子的思维模式。让他变得只能尝试在框架内解决问题。这就好比当年地平说的学者烧死地圆说的学者,一直坚信光只走直线的科学家一样。

逻辑是人生活中必要的东西,但是却不是小孩子非要马上建立完整的东西。思维模式很重要,但是过早得学习编程,并不利于多元化思维模式的发展。

3,不要摧毁你孩子的天赋。说不定你的孩子有着惊人的绝对音感,有着超常的绘画天赋,运动天赋。而选择提前让孩子学习编程,很有可能会固化他们的思维方式,不利于天赋得发展。

4,编程是大学的专业课程是有原因的。 编程本身初级的是很容易的很好理解的。现在电子,互联网技术发展越来越高级,简单得编程或许可以改改网页,但是却没法在这么复杂的编程体系的世界里体现多大的价值。

这是两个问题,应该先回答第二个问题,第一个问题自然迎刃而解。下面说说一下现在编程的现状以及我的看法。

1 编程课的现状。

我生活在一个五六线的小县城,整个城区只有区区不到二十万人,目前至少有五六家的编程培训机构。你可以想象一下,我们这里都竞争这么激烈了,那么更繁华的一二三线城市还是怎样一个惨烈了得。

2 我的看法。

最近几年,由于 科技 的高度发展,人工智能也带动了少儿编程的学习。最近我们可以看到 社会 上越来越多的少儿编程的培训班正在兴起,很多家长也在纠结到底有没有这个必要让孩子去接触这个家长不了解的学科?

现在很多新闻、辅导机构为了给自己做宣传会发布很多关于上编程课的一些特例。某些因为编程能力出众,在高一的时候就被北京大学提前预录取,只要高考能上一本线就能直接入学北大的案例也不少。当然这都是赚钱的策略,目的就是你口袋中所剩无几的人民币。当然虽然商人看到的是商机,可是家长需要把握的是孩子的未来。在我看来如果条件允许的话还是让孩子学习编程吧,而且越早越好。至少要比一些外语了、奥数实在得多。

现在 社会 是非常工业现代化的时代。我在工业现代化中编程显得尤为重要。所以首先要说的就是一定要学习编程课。

对于学习编程课的方式来说,首先最为重要的就是培养兴趣了。现在有很多小孩子可以玩编程的,兴趣的一些课程以及玩具可以给小孩子玩一下。小的时候,如果说对于复杂的东西不太能够接受,就玩这些小玩具还是比较好玩的。

在玩到一定的阶层以后最好就是还是要推荐小孩子去学习英文,因为英语对于编程课程的学习是非常有帮助的。

最后一定要引导到小孩子去用实际的编程语言去书写编程,也就是说应该是全英文的界面,全英文的代码来书写编程。因为这才是工作当中真正编程的环境。

编程课程在以后的高考当中肯定也是非常重视的一门学科,这是信息技术当中的核心课程。说到底,编程可实际上是数学科目的一个延伸科目。编程是非常锻炼数学逻辑思维的一个计算机语言课程。

现在外面的实际工作当中,编程也是非常工薪高的一个岗位。所以要学好变成很多家长都是从小孩开始培养的。加油!

我儿子现在六年级,寒假刚学的C++。我们这个地方信息学很厉害,很多孩子三年级就开始学了。其实编程很锻炼孩子的逻辑思维能力,其中也要用到一些数学知识,不建议太小的孩子学。可以先让孩子学,如果孩子确实有兴趣,可以坚持学下去,对孩子的成长总有帮助。现在人工智能这么发达,未来可想而知,所以我觉得即使以后不从事程序猿的工作,但至少也应了解编程,了解人工智能。

非常有必要,但是要选好平台。可以选动手强的教育机器人图形化编程兴趣班

编程是一个很好的课程,它能提高孩子的逻辑思维能力,而且我们知道,人工智能是未来IT领域发展的方向。但要不要学,主要要看孩子是否对此感兴趣。

先说如果孩子不感兴趣,可能他不知道编程是怎么样的,你可以给孩子介绍编程,让他领略 科技 之美(比如说去一趟 科技 馆)可以激发孩子的兴趣。不过如果孩子真的不感兴趣,还是算了吧。

再说说编程发展的未来吧。近几年来, 科技 的飞速发展,是大家有目共睹。程序员这个职业,相比于其他职业,工资和待遇都相对较高,可以说人工智能是未来 科技 发展的方向,编程在未来也是一个不错的职业。

但是我想说的是,学编程,不一定未来非要做程序员,我上面说了,学编程可以提高孩子的逻辑推理能力,对于平常的学习是有很大帮助的。

首先说下编程的未来,个人认为发展空间很大,随着物联网和5g的兴起,有太多可以 探索 和发展的空间。举个简单的例子,近些年生活中就涌现了很多it 科技 产品,比如无人机,平衡车,智能音箱,运动手环,甚至这种各样的 娱乐 软件,生活工具等,这些都是程序猿的智慧结晶,未来 科技 的发展,仍然有很大空间。

其次,我认为编程课可以提升锻炼孩子的逻辑思维能力。设计一个功能,从无到有,如何一步步的实现呢?这个过程,孩子不断思考,逻辑能力不断提升。即便未来不从事编程相关工作,强大的逻辑能力也会在其它方向上给孩子带来助力

不知道孩子多大了,首先我觉得兴趣是第一位吧,从过来人的身份讲。因为孩子不是为了大人活,路还是要自己走,就比如我爸当年让我学日语,我不喜欢就没学下去,家长还是不要把自己的意志按在小孩身上,不然小孩会怼家长是你想学又不是我想学。

当然如果在引导下对编程很感兴趣就另当别论,当然是要大力支持。比如从很低的起点开始,平滑进入更难的阶段。孩子们开发的 游戏 ,要让更多朋友玩到,在大家的赞美声中得到鼓励,乐于进行更多尝试;再次,要把挫折感降到最低,一旦孩子遇到挫折,工具会比家长更有耐心,不停地鼓励他们越过挫折。

比如从以下几方面的切入点:

1.学习编程能够锻炼孩子逻辑思维能力、创新能力以及思维的严谨性等。会让我们变得更聪明

2.在这个世界里没有标准式的答案,完全可以根据自己的答案去解决问题,这对于提高独立解决问题的能力和逻辑思维能力都是非常有帮助的。会让我们有独立思考的能力。

未来发展趋势嘛肯定不用说了,后面是5G时代,物联网时代下的智能 汽车 、无人飞机、虚拟现实等 科技 技术都会应运而生。主要看看他愿不愿意走这条路,先试着培养他的兴趣,兴趣是通往成功路上必不可少的钥匙

小学、初中文化课压力不大有空闲时间可以发展孩子兴趣爱好,提高孩子分析、解决问题能力,逻辑思维能力

我认为编程对于孩子未来学化学和物理还是比较有帮助的,但是绝对不会是培训机构忽悠的那么大

㈧ 有什么适合大一计算机专业学生免费的刷题网站

既然大一的同学选择计算机专业,当然少不了刷题啦!但是有很多刷题网站是免费的,同学们想知道吗?下面由我来讲讲吧。

1.力扣

这个网站收录了很多知名互联网公司出的算法题目,相信大一同学很熟悉了,很多同学都在这里刷题,增强对计算机基础知识掌握。它支持多种编程语言,如:Java、Ptthon、Ruby等。最常做的是算法题,目前有一千多道的题目。有专门的图文和视频讲解,方便同学们茶楼补缺。也可以在个人界面查看进展,看自己的学习情况。如果出来工作笔试中,面试官会从这里抽题。刷题过程中全部会了,那么工作没有什么大问题。

以上我列举了三个计算机免费刷题的网站,同学们看到我写的推荐后,来收藏夹吃灰~希望同学们有时间使用这三个网站学习计算机相关知识,提高计算机专业能力,祝你们学有所成!

㈨ 软考程序员考试下午题如何解答

做一份工作,实际就是追寻梦想的过程,而为了完成梦想,必须有一个长期规划,从而指导我们选择工作。它是择业过程中最本质和最原始的参考借鉴。下载链接

为此,小云为你精选一份程序员面试书单,分为职业规划、编程技能两部分,适合刚毕业的大学生、正准备换工作的程序员们,涵盖算法工程师、Java工程师、测试等多个领域。

软技能 代码之外的生存指南约翰 Z.森梅兹 着

这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。

本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。

编程珠玑(第2版)乔恩·本特利(Jon Bentley) 着

作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨程序员的实际问题展开讨论,从而引导读者理解问题并学会解决问题的技能,这些都是程序员实际编程生涯中的基本技能。

为此,本书给出了一些精心设计的有趣而且颇具指导意义的程序,这些程序能够为那些复杂的编程问题提供清晰而且完备的解决思路,书中还充满了对实用程序设计技巧及基本设计原则的清晰而睿智的描述。

PS:本书在第一版的基础上增加了3个方面的新内容:测试、调试和计量,集合表示,字符串问题,并对第一版的所有程序都进行了改写,生成了等量的新代码。

重构 改善既有代码的设计马丁·福勒(Martin Fowler) 着

软件开发的不朽经典,生动阐述重构原理和具体做法,普通程序员进阶到编程高手必须修炼的秘笈。

重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是《重构:改善既有代码的设计》原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。《重构:改善既有代码的设计》也因此成为与《设计模式》齐名的经典着作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。

《重构:改善既有代码的设计》凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与《重构:改善既有代码的设计》最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。

C和C++程序员面试秘籍董山海 着

众多高级语言都从C/C++有所借鉴,所以说C/C++的语言基础对从事软件开发的人员来说非常重要。

本书是一本解析C/C++面试题的书,可以帮助求职者更好地准备面试。《C和C++程序员面试秘笈》共包含12章,囊括了目前企业中常见的面试题类型和考点,包括C/C++程序基础,预处理、const、static与sizeof,引用和指针,字符串,位运算与嵌入式编程,C++面向对象,C++继承和多态,数据结构,排序,泛型编程,STL,算法和逻辑思维等最常见的面试题。《C和C++程序员面试秘笈》通过技术点解析、代码辅佐的方式让读者能深刻领会每个考点背后的技术。

本书紧扣面试精髓,对各种技术的剖析一针见血,是目前想找工作的C/C++程序员和刚毕业的大学生的面试宝典。

Java程序员面试宝典杨磊 着

本书对程序设计面试中Java常见的题型和常用解答技巧进行了介绍,对现代职业人如何有效求职、面试考官如何关注求职者动态等做了详细解说。本书将为您揭开知名IT企业面试、笔试的核心机密;传授程序员岗位求职的关键技巧。

编程之法:面试和算法心得July 着

本书涉及面试、算法、机器学习三个主题。书中的每道编程题目都给出了多种思路、多种解法,不断优化、逐层递进。本书第1章至第6章分别阐述字符串、数组、树、查找、动态规划、海量数据处理等相关的编程面试题和算法,第7章介绍机器学习的两个算法—K近邻和SVM。此外,每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。

书中的每一道题都是面试的高频题目,反复出现在最近5年各大公司的笔试和面试中,对面试备考有着极强的参考价值。全书逻辑清晰、通俗易懂,适合热爱编程、算法、机器学习,以及准备IT笔试和面试,即将求职、找工作的读者阅读。

C#与.NET程序员面试秘笈靳华 着

《C#与.NET程序员面试宝典》取材于各大IT公司的历年面试题252个(包括研发类笔试及口试题目、情商及智商类题目),详细分析了应聘C#与.NET程序员职位的常见考点。《C#与.NET程序员面试宝典》主要内容包括:面试流程、基础语法和技术框架、数据访问及XML应用、高级特性及应用进阶、测试及质量保证、跨国公司经典面试题等。

软件测试工程师面试指导蔡为东 着

对于想要得到一份软件测试工程师职位的朋友来说,可能会有一些疑问,如软件测试这个行业究竟怎么样?什么样的人适合做软件测试?面试当中要注意什么?软件测试的基本知识点都有哪些?笔试都会涉及哪些内容?等等。本书将解答以上所有的疑问。

本书共6章内容,主要包括软件测试行业概貌、软件测试从业人员的基本要求、如何找工作、软件测试技术基础、典型的测试工程师笔试题等。本书内容丰富,讲解深入浅出,能让读者朋友在短时间内掌握基本的测试技术,了解求职过程的各个环节,熟悉各种类型的笔试题,领会面试技巧。本书后附有一些实用的附录,例如简历模板、新人工作指南等,尤其是“我在微软做软件测试外包”这一部分内容,寓故事性和知识性于一体,讲述了作者在国际软件巨头——微软公司做软件测试外包的亲身经历,相信对于广大的读者朋友有阅读和参考的价值。

本书适合想要从事软件测试工作的朋友,也可供初级软件测试工程师学习之用,另外也可作为大专院校软件测试培训的教材之一。

Android高薪之路李宁 着

《Android高薪之路:Android程序员面试宝典》取材于各大IT公司面试真题,所给出的试题尽可能地覆盖了Android应用开发的各个方面,而且大多数试题都有解析部分,读者可以通过这部分更深入地理解试题中所包含的技术内容,希望真正做到由点成线,举一反三。

《Android高薪之路:Android程序员面试宝典》中还将Android中涉及的各个常用技术问题进行筛选、分类。这样读者可以有的放矢,对自己还没有掌握的Android技术进行重点攻破,从而起到事半功倍的效果。除了对每道题目都有详细的解析和回答外,对相关知识点还有扩展说明。

《Android高薪之路:Android程序员面试宝典》对面试中Android常见的题型和常用解答技巧进行了介绍,它不仅能帮助求职者快速复习相关知识点,也对现代职业人如何有效求职做了详细解说。《Android高薪之路:Android程序员面试宝典》对于读者从求职就业到提升计算机专业知识都有显着的帮助。

编程之美《编程之美小组》

《编程之美—— 微软 技术面试心得》收集了约60道算法和 程序设计题目,这些题目大部分在近年的笔试,面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。

书中绝大部分题目都提供了详细的解说。 每道题目后面还有一至两道扩展问题,供读者进一步钻研。

书中还讲述了面试的各种小故事,告诉读者微软需要什么样的技术人才,重视什么样的能力,如何甄别人才。回答读者关于IT业面试,招聘, 职业发展的疑问。 这本书的很多题目会出现在IT 行业的各种笔试,面试中。但本书更深层的意义在于引导读者思考,和读者共享思考之乐,编程之美。

阅读全文

与编程之美最近点对相关的资料

热点内容
6s怎么外接u盘需要什么app 浏览:131
linux查看文件权限命令 浏览:685
安卓手游存档怎么用 浏览:761
linuxyum安装ftp 浏览:690
村委会主任可以推行政命令吗 浏览:102
电脑文件夹封面多张图片 浏览:263
网吧总服务器叫什么 浏览:922
多个算法解决同一个问题 浏览:455
小车解压后我的购车发票呢 浏览:977
做app开发用什么云服务器 浏览:177
linux网卡子接口 浏览:985
21岁职高毕业学程序员怎么学 浏览:321
vs如何对单个文件编译 浏览:6
为什么有的电脑不能安装python 浏览:75
金蝶迷你版加密狗检测到过期 浏览:186
硬件描述语言编译结果 浏览:655
程序员逆天改命 浏览:19
金斗云服务器 浏览:447
港口工程pdf 浏览:770
程序设计语言pdf 浏览:434