改进编程技巧的小程序?

时间:2022-10-31 05:52:38

I realize that to become a better programmer, you need to program! So obviously the more practice, the better you become.

我意识到要成为一个更好的程序员,你需要编程!显然,练习得越多,你就会变得越好。

My problem is this. I am currently in university, and I find my course load is a bit daunting, and I don't have a lot of free time. I don't think I could really take on a big project, particularly I don't think I would have to motivation to see it through, it would be easier just for me to keep putting it off in favour of work that is due is school.

我的问题是这样的。我现在正在上大学,我发现我的课程负担有点令人生畏,而且我没有很多的空闲时间。我不认为我真的能接受一个大项目,特别是我不认为我必须要有动力去看它,因为我更容易坚持把它推迟到应得的工作中去。

But I still want to practice. So I am looking for any resources which have programming challenges which can be completed in a fairly small amount of time. Ideally something i could get done in under 10 hours of work (so just over an hour of work each day), if not smaller.

但我还是想练习。因此,我正在寻找任何具有编程挑战的资源,这些资源可以在相当短的时间内完成。理想的情况是,我可以在10小时内完成一件事(也就是每天超过1小时的工作),如果不是更小的话。

I have heard of Google Code Jam, but I am not sure the length of the programs it specifies, nor the skill level.

我听说过谷歌代码阻塞,但我不确定它指定的程序的长度,也不确定技术水平。

Does anyone have suggestions? Even perhaps a compendium of tutorials for different functions might be useful. For example, a tutorial on file IO would be worthwhile (if I didn't already know it), even though it can be a fairly small topic.

谁有建议吗?即使是不同功能的教程汇编也可能是有用的。例如,一个关于file IO的教程是值得的(如果我还不知道的话),即使它是一个很小的主题。

13 个解决方案

#1


33  

You should look into code katas, they do exactly what you are talking about. Short exercises that are designed to perfect your coding/thinking abilities.

您应该研究代码katas,它们所做的正是您所谈论的。为提高你的编码/思考能力而设计的短练习。

Other references:

其他参考资料:

  1. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources
  2. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources

#2


20  

Project Euler has some math/number related problems that are very interesting and ranged from easy to very challenging. You can pick your language of choice and submit only the solution (a large integer number). After you submitted the correct solution, you have access to a forum/comment page where others posted their comments and solutions.

欧拉项目有一些数学/数字相关的问题,这些问题非常有趣,从简单到极具挑战性。您可以选择您的语言并只提交解决方案(一个大整数)。在你提交了正确的解决方案之后,你可以进入一个论坛/评论页面,其他人可以在那里发布他们的评论和解决方案。

#3


17  

From experience I recommend finding a task that you do repetitively and turning it into a program. I also recommend, seriously, re-invent the wheel in order to get practice with programming. Don't let people tell you to not do something just because it exists already. If you don't know how it works, try to write it yourself.

根据经验,我建议你找一项任务,反复做,然后把它变成一个程序。我还建议,认真地,重新发明*,以获得编程实践。不要让别人告诉你不要做某事,因为它已经存在了。如果你不知道它是如何工作的,试着自己写下来。

I don't exactly know what programming level you are on, but don't try to do anything too crazy off the bat, that is just a demotivator (such as trying to write a game for the PS3).

我不知道你的编程水平到底是多少,但是不要一开始就做一些太疯狂的事情,那只是一个消极因素(比如尝试为PS3编写一个游戏)。

If you already can navigate your way around with IO, then you should try to really learn how to use Collections effectively. I think one of the best practice assignments I have ever done was rewriting the Java TreeMap Class. It was a huge challenge and I learned a lot by doing it.

如果您已经能够使用IO导航了,那么您应该真正地学习如何有效地使用集合。我认为我做过的最好的实践作业之一就是重写Java TreeMap类。这是一个巨大的挑战,我从中学到很多。


Here are some suggestions for practice assignments:

以下是一些练习作业的建议:

Take a text file that has a fair amount of information in it, grab anything, you can get something from here if you'd like: http://www.gutenberg.org/ and make a program that will do the following:

取一个包含大量信息的文本文件,抓取任何信息,如果你想:http://www.gutenberg.org/,你可以从这里获得一些信息,并制作一个程序,它将执行以下操作:

  1. Read in the file
  2. 读取的文件
  3. Create a collection of words and their occurrences
  4. 创建单词和它们出现的地方的集合
  5. Create a collection of anagrams
  6. 创建一个字谜集合
  7. Create a collection of words and the positions in which they occur (line#, word position)
  8. 创建单词的集合和它们出现的位置(第#行,单词位置)
  9. Develop statistics on the words in the file - meaning - treating each word as an individual - which words occur before it and after it.
  10. 对文件中的单词进行统计——意思是——把每个单词都当作一个单独的单词——这些单词在它之前和之后都会出现。
  11. Remove all of the white space from the file
  12. 从文件中删除所有空格。
  13. Write all of the above data to their own files
  14. 将上述所有数据写入自己的文件中

One of my favorite things to do is mess with web data, go to a polling website, find a page that has poll data in a tabular form and do the following:

我最喜欢做的一件事就是弄乱网络数据,去一个投票网站,找到一个表格形式有投票数据的页面,然后做以下事情:

  1. Download the data
  2. 下载数据
  3. Parse through the data and turn the tabular data into a CSV file
  4. 解析数据并将表格数据转换为CSV文件
  5. Open it in excel without error
  6. 在excel中打开,没有错误

Or just look for any site and extract data from it, just make sure the site is robot friendly http://www.robotstxt.org/, you don't want any one site to feel like it is under attack. Most of the time though this isn't normally a problem because if you read the site's terms of use it clearly states you are allowed to download 1 copy of whatever it is you are viewing so long as you don't intend to sell it. Of course this changes for every site.

或者只是寻找任何站点并从中提取数据,只要确保该站点是机器人友好的http://www.robotstxt.org/,您不希望任何一个站点感觉自己受到攻击。大多数情况下,这通常不是一个问题,因为如果你读了网站的使用条款,它清楚地表明你可以下载一份你正在看的东西,只要你不打算卖掉它。当然,这对每个站点都是变化的。


Go to a website and get all of the links off of the page programmatically.

访问一个网站,以编程方式从页面中获取所有链接。


Here is a fun one, the Susan Program (I don't remember why it is named Susan) which I initially wrote using a C program and two Bourne shell scripts in a Unix environment. The idea in this program is to fork 4 child processes and give them each a task like so:

这里有一个有趣的例子,Susan程序(我不记得为什么它叫Susan),我最初在Unix环境中使用一个C程序和两个Bourne shell脚本编写这个程序。这个程序的想法是将4个子进程分成4个子进程,并给每个子进程分配如下的任务:

Child 1: Reads in a file, creates a dictionary of each word and its position in the file, this is outputted to a file.

子1:读取文件,创建每个单词的字典及其在文件中的位置,并输出到文件中。

Child 2: Takes Child 1's output and reconstructs the document, this is outputted to a file.

子2:获取子1的输出并重新构建文档,并将其输出到文件中。

Child 3: Takes Child 2's output and does what child 1 did again

子3:获取子2的输出并再次执行子1所做的操作

Child 4: Takes Child 3's output and does what child 2 did again

子4:取子3的输出,再做子2做的事

The goal here is to have an exact replica of the original file once Child 4 outputs it. This is challenging and somewhat pointless, but the point of this exercise is to get the practice.

这里的目标是,一旦子4输出它,就有一个原始文件的完全副本。这很有挑战性,而且有些毫无意义,但这个练习的目的是为了练习。

In your case, don't feel that you need to use different threads for this, you can just use a single program with two different functions and just call them in order.

在您的示例中,不要认为需要为此使用不同的线程,只需使用一个具有两个不同函数的程序并按顺序调用它们。


Again, not sure if you are at this level yet, but try to replace any "for" or "foreach" loop you have in your program with recursion, just as practice. Recursion is a pain in the butt, but it is valuable to know and understand.

同样,还不确定您是否处于这个级别,但是请尝试用递归替换程序中任何“for”或“foreach”循环。递归是一种痛苦,但是了解和理解它是很有价值的。

These are some suggestions which I think will really help you sharpen your skills.

我认为这些建议能帮助你提高技能。

Enjoy

享受

#4


9  

I like SPOJ and Project Euler to take quick programming challenges and exercises.

我喜欢SPOJ和Project Euler进行快速编程挑战和练习。

#5


5  

Code Jam is a good programming contest, although, as you mentioned, most of the problems there aren't for beginners.

Code Jam是一个很好的编程竞赛,但是,正如您所提到的,大多数问题并不适合初学者。

There's a good selection of problems from past topcoder algorithm competitions. (They are held ~2 times a month for almost 10 years already, so there're quite a lot.)
Difficulty range from very simple (but still interesting) problems in the 2nd division to very hard. Additionally, there're editorials with solutions and live environment where you can submit and test your code. You can also learn from submissions by other people.

在过去的topcoder算法竞赛中有很多问题可供选择。(他们每个月都要举行2次,已经有将近10年了,所以有很多。)难度从非常简单(但仍然很有趣)的问题到非常困难的问题。此外,还有一些带有解决方案和实时环境的社论,您可以在其中提交和测试您的代码。你也可以从别人的作品中学习。

Check the problem listing.
Another advantage of topcoder is the regular online contests they hold. I find that competing against other people in realtime is a great boost for motivation.

检查问题清单。topcoder的另一个优势是他们经常举办的在线比赛。我发现实时地与他人竞争对激励有很大的促进作用。

There're many more problem archives, like SPOJ, UVA and Timus, although they rarely provide solutions or even hints.

还有更多的问题存档,如SPOJ、UVA和Timus,尽管它们很少提供解决方案甚至提示。

#6


3  

http://codegolf.stackexchange.com might have some programming challenges to your liking. A lot of the answers on that site are golfed (they implement the program in the least number of characters) but there are definitely some interesting examples to learn from.

http://codegolf.stackexchange.com可能有一些您喜欢的编程挑战。这个网站上的很多答案都是golfed(他们用最少的字符来实现这个程序),但肯定有一些有趣的例子值得我们学习。

#7


3  

Try enrolling on any IT course on the following websites:

尝试在以下网站报名参加任何资讯科技课程:

These websites offer free educational IT programs from prestigious schools wherein there are lot of challenging exercises to sharpen your programming skills. I've learned to program percolation, pattern recognition, bouncing ball and so many more interesting things because of this. You will upload your program upon completion of the exercises and you will be graded accordingly (basically your progam will be checked).

这些网站提供来自著名学校的免费教育IT项目,那里有很多挑战练习来提高你的编程技能。我学会了编程,模式识别,跳跃球还有很多有趣的东西。你将在完成练习后上传你的程序,你将被相应地评分(基本上你的progam将被检查)。

At the end of each course, you will even receive a certificate of completion. Cool Right?

在每门课程结束时,你甚至会收到一份结业证书。酷吧?

#8


2  

It depends of the language, but in the past http://rubyquiz.com and http://pythonchallenge.com did great for me, also you can join to an open source initiative because usually helps to give you better code review chances.

这取决于语言,但在过去,http://rubyquiz.com和http://pythonchallenge.com为我做了很大的贡献,你也可以加入开源项目,因为这通常会帮助你获得更好的代码审查机会。

#9


2  

I've always thought that practicing with sample interview questions was a great way to sharpen one's skills and get exposed to types of problems that you normally wouldn't solve. Plus, if you're going to be looking for a job it helps you even more.

我一直认为,练习面试问题是一种很好的方法,可以提高自己的技能,让自己接触到一些你通常无法解决的问题。另外,如果你要找一份工作,这对你更有帮助。

Here's a pretty simple one that I did for fun the other day:

这是我前几天做的一个非常简单的游戏:

Write a routine to print the numbers 1 to 100 and back to 1 again without using any loops.

编写一个例程来打印数字1到100,然后再返回1,不使用任何循环。

Glassdoor.com has a lot of good interview question submitted by people who actually got them in an interview.

Glassdoor.com网站有很多很好的面试问题是由那些在面试中获得这些问题的人提出的。

#10


1  

Since you are in University and looking to improve your coding skills the hard-copy book Cracking the Coding Interview might be a good fit for you. It's got great general programming questions and tidbits about interviewing with some of the best companies in tech. Not only are there great questions, but there are decent problem breakdowns as well.

既然你在大学里,想提高你的编程技能,硬拷贝书破解编码面试可能是很适合你的。它包含了很多关于面试技术领域最好的公司的一般编程问题和趣闻。

[Disclosure: I own the book but otherwise have no association to it.]

[披露:我拥有这本书,但除此之外没有任何关联。]

#11


1  

If you like programming and want to improve your programmer skills, you must try cocode.co. It's a social young site, similar to * but based on posting and solving programming challenges, instead of asking and answering questions. From very easy challenges to very hard ones.

如果你喜欢编程并且想提高你的程序员技能,你必须试试cocode.co。这是一个年轻的社交网站,类似于*,但它基于发布和解决编程挑战,而不是问和回答问题。从非常容易的挑战到非常困难的挑战。

改进编程技巧的小程序?

#12


0  

You can try to solve ACM problems. There are thousands of problems there and you can find the difficulty level so you can choose which problems to do first. The offcial site for this is:

你可以尝试解决ACM问题。那里有成千上万的问题,你可以找到困难的程度,所以你可以选择先做哪些问题。这里的官方网站是:

http://uva.onlinejudge.org/. You can learn more there.

http://uva.onlinejudge.org/。你可以在那里学到更多。

regards arefin

问候arefin

#13


0  

It may seem a little obvious, but I've noticed a real boost in my regular-expressions skills lately just from answering regex questions on Stack Overflow. Teaching forces you to break down problems into easily explainable pieces, and will also guide your research on those occasions where you know most, but not quite all, of a solution.

这似乎有点明显,但我最近注意到,仅仅通过回答关于Stack Overflow的regex问题,我的正则表达式技能就得到了真正的提升。教学迫使你把问题分解成容易解释的部分,也将指导你在那些你知道的最多,但不是全部的解决方案的场合的研究。

I suggest finding a topic you're already somewhat proficient in, since this type of thing isn't so good as a beginners' tutorial. Search SO for questions tagged with that topic and try to figure out the answers. Don't just code them in your head; go ahead and write them out, test them, and explain them. If you're not sure your answer is correct, just write it without posting it.

我建议你找一个你已经很精通的话题,因为这类东西不如初学者的教程好。搜索,寻找与主题相关的问题,并尝试找出答案。不要只是在脑海中编码;继续写出来,测试它们,解释它们。如果你不确定你的答案是否正确,那就写下来,不要贴上去。

#1


33  

You should look into code katas, they do exactly what you are talking about. Short exercises that are designed to perfect your coding/thinking abilities.

您应该研究代码katas,它们所做的正是您所谈论的。为提高你的编码/思考能力而设计的短练习。

Other references:

其他参考资料:

  1. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources
  2. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources

#2


20  

Project Euler has some math/number related problems that are very interesting and ranged from easy to very challenging. You can pick your language of choice and submit only the solution (a large integer number). After you submitted the correct solution, you have access to a forum/comment page where others posted their comments and solutions.

欧拉项目有一些数学/数字相关的问题,这些问题非常有趣,从简单到极具挑战性。您可以选择您的语言并只提交解决方案(一个大整数)。在你提交了正确的解决方案之后,你可以进入一个论坛/评论页面,其他人可以在那里发布他们的评论和解决方案。

#3


17  

From experience I recommend finding a task that you do repetitively and turning it into a program. I also recommend, seriously, re-invent the wheel in order to get practice with programming. Don't let people tell you to not do something just because it exists already. If you don't know how it works, try to write it yourself.

根据经验,我建议你找一项任务,反复做,然后把它变成一个程序。我还建议,认真地,重新发明*,以获得编程实践。不要让别人告诉你不要做某事,因为它已经存在了。如果你不知道它是如何工作的,试着自己写下来。

I don't exactly know what programming level you are on, but don't try to do anything too crazy off the bat, that is just a demotivator (such as trying to write a game for the PS3).

我不知道你的编程水平到底是多少,但是不要一开始就做一些太疯狂的事情,那只是一个消极因素(比如尝试为PS3编写一个游戏)。

If you already can navigate your way around with IO, then you should try to really learn how to use Collections effectively. I think one of the best practice assignments I have ever done was rewriting the Java TreeMap Class. It was a huge challenge and I learned a lot by doing it.

如果您已经能够使用IO导航了,那么您应该真正地学习如何有效地使用集合。我认为我做过的最好的实践作业之一就是重写Java TreeMap类。这是一个巨大的挑战,我从中学到很多。


Here are some suggestions for practice assignments:

以下是一些练习作业的建议:

Take a text file that has a fair amount of information in it, grab anything, you can get something from here if you'd like: http://www.gutenberg.org/ and make a program that will do the following:

取一个包含大量信息的文本文件,抓取任何信息,如果你想:http://www.gutenberg.org/,你可以从这里获得一些信息,并制作一个程序,它将执行以下操作:

  1. Read in the file
  2. 读取的文件
  3. Create a collection of words and their occurrences
  4. 创建单词和它们出现的地方的集合
  5. Create a collection of anagrams
  6. 创建一个字谜集合
  7. Create a collection of words and the positions in which they occur (line#, word position)
  8. 创建单词的集合和它们出现的位置(第#行,单词位置)
  9. Develop statistics on the words in the file - meaning - treating each word as an individual - which words occur before it and after it.
  10. 对文件中的单词进行统计——意思是——把每个单词都当作一个单独的单词——这些单词在它之前和之后都会出现。
  11. Remove all of the white space from the file
  12. 从文件中删除所有空格。
  13. Write all of the above data to their own files
  14. 将上述所有数据写入自己的文件中

One of my favorite things to do is mess with web data, go to a polling website, find a page that has poll data in a tabular form and do the following:

我最喜欢做的一件事就是弄乱网络数据,去一个投票网站,找到一个表格形式有投票数据的页面,然后做以下事情:

  1. Download the data
  2. 下载数据
  3. Parse through the data and turn the tabular data into a CSV file
  4. 解析数据并将表格数据转换为CSV文件
  5. Open it in excel without error
  6. 在excel中打开,没有错误

Or just look for any site and extract data from it, just make sure the site is robot friendly http://www.robotstxt.org/, you don't want any one site to feel like it is under attack. Most of the time though this isn't normally a problem because if you read the site's terms of use it clearly states you are allowed to download 1 copy of whatever it is you are viewing so long as you don't intend to sell it. Of course this changes for every site.

或者只是寻找任何站点并从中提取数据,只要确保该站点是机器人友好的http://www.robotstxt.org/,您不希望任何一个站点感觉自己受到攻击。大多数情况下,这通常不是一个问题,因为如果你读了网站的使用条款,它清楚地表明你可以下载一份你正在看的东西,只要你不打算卖掉它。当然,这对每个站点都是变化的。


Go to a website and get all of the links off of the page programmatically.

访问一个网站,以编程方式从页面中获取所有链接。


Here is a fun one, the Susan Program (I don't remember why it is named Susan) which I initially wrote using a C program and two Bourne shell scripts in a Unix environment. The idea in this program is to fork 4 child processes and give them each a task like so:

这里有一个有趣的例子,Susan程序(我不记得为什么它叫Susan),我最初在Unix环境中使用一个C程序和两个Bourne shell脚本编写这个程序。这个程序的想法是将4个子进程分成4个子进程,并给每个子进程分配如下的任务:

Child 1: Reads in a file, creates a dictionary of each word and its position in the file, this is outputted to a file.

子1:读取文件,创建每个单词的字典及其在文件中的位置,并输出到文件中。

Child 2: Takes Child 1's output and reconstructs the document, this is outputted to a file.

子2:获取子1的输出并重新构建文档,并将其输出到文件中。

Child 3: Takes Child 2's output and does what child 1 did again

子3:获取子2的输出并再次执行子1所做的操作

Child 4: Takes Child 3's output and does what child 2 did again

子4:取子3的输出,再做子2做的事

The goal here is to have an exact replica of the original file once Child 4 outputs it. This is challenging and somewhat pointless, but the point of this exercise is to get the practice.

这里的目标是,一旦子4输出它,就有一个原始文件的完全副本。这很有挑战性,而且有些毫无意义,但这个练习的目的是为了练习。

In your case, don't feel that you need to use different threads for this, you can just use a single program with two different functions and just call them in order.

在您的示例中,不要认为需要为此使用不同的线程,只需使用一个具有两个不同函数的程序并按顺序调用它们。


Again, not sure if you are at this level yet, but try to replace any "for" or "foreach" loop you have in your program with recursion, just as practice. Recursion is a pain in the butt, but it is valuable to know and understand.

同样,还不确定您是否处于这个级别,但是请尝试用递归替换程序中任何“for”或“foreach”循环。递归是一种痛苦,但是了解和理解它是很有价值的。

These are some suggestions which I think will really help you sharpen your skills.

我认为这些建议能帮助你提高技能。

Enjoy

享受

#4


9  

I like SPOJ and Project Euler to take quick programming challenges and exercises.

我喜欢SPOJ和Project Euler进行快速编程挑战和练习。

#5


5  

Code Jam is a good programming contest, although, as you mentioned, most of the problems there aren't for beginners.

Code Jam是一个很好的编程竞赛,但是,正如您所提到的,大多数问题并不适合初学者。

There's a good selection of problems from past topcoder algorithm competitions. (They are held ~2 times a month for almost 10 years already, so there're quite a lot.)
Difficulty range from very simple (but still interesting) problems in the 2nd division to very hard. Additionally, there're editorials with solutions and live environment where you can submit and test your code. You can also learn from submissions by other people.

在过去的topcoder算法竞赛中有很多问题可供选择。(他们每个月都要举行2次,已经有将近10年了,所以有很多。)难度从非常简单(但仍然很有趣)的问题到非常困难的问题。此外,还有一些带有解决方案和实时环境的社论,您可以在其中提交和测试您的代码。你也可以从别人的作品中学习。

Check the problem listing.
Another advantage of topcoder is the regular online contests they hold. I find that competing against other people in realtime is a great boost for motivation.

检查问题清单。topcoder的另一个优势是他们经常举办的在线比赛。我发现实时地与他人竞争对激励有很大的促进作用。

There're many more problem archives, like SPOJ, UVA and Timus, although they rarely provide solutions or even hints.

还有更多的问题存档,如SPOJ、UVA和Timus,尽管它们很少提供解决方案甚至提示。

#6


3  

http://codegolf.stackexchange.com might have some programming challenges to your liking. A lot of the answers on that site are golfed (they implement the program in the least number of characters) but there are definitely some interesting examples to learn from.

http://codegolf.stackexchange.com可能有一些您喜欢的编程挑战。这个网站上的很多答案都是golfed(他们用最少的字符来实现这个程序),但肯定有一些有趣的例子值得我们学习。

#7


3  

Try enrolling on any IT course on the following websites:

尝试在以下网站报名参加任何资讯科技课程:

These websites offer free educational IT programs from prestigious schools wherein there are lot of challenging exercises to sharpen your programming skills. I've learned to program percolation, pattern recognition, bouncing ball and so many more interesting things because of this. You will upload your program upon completion of the exercises and you will be graded accordingly (basically your progam will be checked).

这些网站提供来自著名学校的免费教育IT项目,那里有很多挑战练习来提高你的编程技能。我学会了编程,模式识别,跳跃球还有很多有趣的东西。你将在完成练习后上传你的程序,你将被相应地评分(基本上你的progam将被检查)。

At the end of each course, you will even receive a certificate of completion. Cool Right?

在每门课程结束时,你甚至会收到一份结业证书。酷吧?

#8


2  

It depends of the language, but in the past http://rubyquiz.com and http://pythonchallenge.com did great for me, also you can join to an open source initiative because usually helps to give you better code review chances.

这取决于语言,但在过去,http://rubyquiz.com和http://pythonchallenge.com为我做了很大的贡献,你也可以加入开源项目,因为这通常会帮助你获得更好的代码审查机会。

#9


2  

I've always thought that practicing with sample interview questions was a great way to sharpen one's skills and get exposed to types of problems that you normally wouldn't solve. Plus, if you're going to be looking for a job it helps you even more.

我一直认为,练习面试问题是一种很好的方法,可以提高自己的技能,让自己接触到一些你通常无法解决的问题。另外,如果你要找一份工作,这对你更有帮助。

Here's a pretty simple one that I did for fun the other day:

这是我前几天做的一个非常简单的游戏:

Write a routine to print the numbers 1 to 100 and back to 1 again without using any loops.

编写一个例程来打印数字1到100,然后再返回1,不使用任何循环。

Glassdoor.com has a lot of good interview question submitted by people who actually got them in an interview.

Glassdoor.com网站有很多很好的面试问题是由那些在面试中获得这些问题的人提出的。

#10


1  

Since you are in University and looking to improve your coding skills the hard-copy book Cracking the Coding Interview might be a good fit for you. It's got great general programming questions and tidbits about interviewing with some of the best companies in tech. Not only are there great questions, but there are decent problem breakdowns as well.

既然你在大学里,想提高你的编程技能,硬拷贝书破解编码面试可能是很适合你的。它包含了很多关于面试技术领域最好的公司的一般编程问题和趣闻。

[Disclosure: I own the book but otherwise have no association to it.]

[披露:我拥有这本书,但除此之外没有任何关联。]

#11


1  

If you like programming and want to improve your programmer skills, you must try cocode.co. It's a social young site, similar to * but based on posting and solving programming challenges, instead of asking and answering questions. From very easy challenges to very hard ones.

如果你喜欢编程并且想提高你的程序员技能,你必须试试cocode.co。这是一个年轻的社交网站,类似于*,但它基于发布和解决编程挑战,而不是问和回答问题。从非常容易的挑战到非常困难的挑战。

改进编程技巧的小程序?

#12


0  

You can try to solve ACM problems. There are thousands of problems there and you can find the difficulty level so you can choose which problems to do first. The offcial site for this is:

你可以尝试解决ACM问题。那里有成千上万的问题,你可以找到困难的程度,所以你可以选择先做哪些问题。这里的官方网站是:

http://uva.onlinejudge.org/. You can learn more there.

http://uva.onlinejudge.org/。你可以在那里学到更多。

regards arefin

问候arefin

#13


0  

It may seem a little obvious, but I've noticed a real boost in my regular-expressions skills lately just from answering regex questions on Stack Overflow. Teaching forces you to break down problems into easily explainable pieces, and will also guide your research on those occasions where you know most, but not quite all, of a solution.

这似乎有点明显,但我最近注意到,仅仅通过回答关于Stack Overflow的regex问题,我的正则表达式技能就得到了真正的提升。教学迫使你把问题分解成容易解释的部分,也将指导你在那些你知道的最多,但不是全部的解决方案的场合的研究。

I suggest finding a topic you're already somewhat proficient in, since this type of thing isn't so good as a beginners' tutorial. Search SO for questions tagged with that topic and try to figure out the answers. Don't just code them in your head; go ahead and write them out, test them, and explain them. If you're not sure your answer is correct, just write it without posting it.

我建议你找一个你已经很精通的话题,因为这类东西不如初学者的教程好。搜索,寻找与主题相关的问题,并尝试找出答案。不要只是在脑海中编码;继续写出来,测试它们,解释它们。如果你不确定你的答案是否正确,那就写下来,不要贴上去。