[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6043":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":15,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},6043,"The-Art-Of-Programming-By-July-2nd","julycoding\u002FThe-Art-Of-Programming-By-July-2nd","julycoding","本项目曾冲到全球第一，干货集锦见本页面最底部，另完整精致的纸质版《编程之法：面试和算法心得》已在京东\u002F当当上销售","",null,"C",21506,6991,1843,45,0,1,5,false,"master",true,[],"2026-06-12 02:01:15","## 程序员编程技艺(原编程艺术系列，脱胎于微软面试100题系列，后成书为编程之法)\n\n看过[结构之法算法之道blog](http:\u002F\u002Fblog.csdn.net\u002Fv_july_v)的朋友可能知道，从2010年10月起，[July](http:\u002F\u002Fweibo.com\u002Fjulyweibo) 开始整理一个微软面试100题的系列，他在整理这个系列的过程当中，越来越强烈的感觉到，可以从那100题中精选一些更为典型的题，每一题详细阐述成章，不断优化，于此，便成了程序员编程艺术系列。\n\n原编程艺术系列从2011年4月至今，写了42个编程问题，在创作的过程当中，得到了很多朋友的支持，特别是博客上随时都会有朋友不断留言，或提出改进建议，或show出自己的思路、代码，或指正bug。为更好的改进、优化、增补编程艺术系列，特把博客上的这个**程序员编程艺术系列和博客内其它部分经典文章**同步到此，成立本项目，最后成书为：《编程之法：面试和算法心得》。\n\n若发现任何问题、错误、bug，或可以优化的每一段代码，欢迎随时pull request或发issue反馈，thanks。\n\nupdate\n\n2023年2.4日July更新：这本编程之法，17-19年就特别想出修订版，但奈何当时各种事情实在是太多，顾不上来，是个遗憾，今年要弥补此前遗憾，出第二版，相比第一版将：\n- 1 重写1\u002F3的内容，且再度review所有代码、所有公式全部用LaTeX重新编辑一遍、删减个别内容\n- 2 新增1\u002F3的新题，从七月在线于2021年Q2至2023年Q2整理的过去两年的最新大厂面试题中精选20道数据结构\u002F算法和AI相关的新题\n- 3 新增部分机器学习技术，比如xgboost CNN RNN LSTM等\n\n有意参与读者审阅的欢迎随时联系我\n\n另，还在谋划4本新书，类似：\n- ChatGPT背后技术拆解，包括且不限于：1 微积分\u002F概率统计基础、2 ML与最优化基础损失函数\u002F梯度上升、3 RL\u002FRLHF与TRPO\u002FPPO算法、4 transformer\u002F自注意力机制、5 GPT-N\u002Fprompt学习、6 chatgpt训练三阶段及多轮对话等工程细节、7 chatgpt在各行各业的应用\n- 机器学习通俗笔记\n- RL极简入门\n- AI数学基础入门\n\n未来三年逐一出版\n\n## Contact me\nJuly个人微博：https:\u002F\u002Fweibo.com\u002Fjulyweibo ，并于2015年正式创业，任七月在线创始人兼CEO，公司官网为：https:\u002F\u002Fwww.julyedu.com\u002F ，致力于培养100万AI人才\n\n## Start Reading\n * [中文目录](ebook\u002Fzh\u002FReadme.md) Enhancement in progress\n * [English Contents](ebook\u002Fen\u002FReadme.md) Translation in progress\n\n## How To Contribute\n * 邀请大家帮忙把github上的文章导出到word上，欢迎到这里认领：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-By-July\u002Fissues\u002F337 」\n * 一章一章的测试所有代码，指正 bug，修正错误。 「必选，可到这里认领：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-By-July\u002Fissues\u002F210 」\n * 优化原文章上的C\u002FC++ 代码，优化后的代码可以放到[ebook\u002Fcode](ebook\u002Fcode\u002F)文件夹内，并注意代码命名规范的问题：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-By-July\u002Fissues\u002F234 。 「必选」\n * 添加其它语言如Java、python、go 的代码，放在[ebook\u002Fcode](ebook\u002Fcode\u002F)文件夹内，同样如上，注意代码命名规范的问题。 「可选」\n * 重绘所有的图片：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-by-July\u002Fissues\u002F80\n * 翻译成英文版，参考[中文目录](ebook\u002Fzh\u002FReadme.md)，把翻译后的文章编辑到这[English Version](ebook\u002Fen\u002FReadme.md),注：不必逐字翻译，精简大气即可（如有兴趣翻译，请到这里领取感兴趣的章节翻译：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-by-July\u002Fissues\u002F84 )\n * 自己主导续写新的章节；\n * 任何你想做的事情，包括痛批你觉得写的烂的章节，所有你的意见都将改进此系列。\n\n你可以做以上任何一件或几件事情，如遇到任何问题或疑惑，咱们可以随时讨论：\n\u003Chttps:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-by-July\u002Fissues?state=open>。\n「如不知如何在github上提交及同步作者的更新，可参考此文：http:\u002F\u002Fwww.cnblogs.com\u002Frubylouvre\u002Farchive\u002F2013\u002F01\u002F24\u002F2874694.html 」\n\n## Code Style\n本项目暂约定以下代码风格(不断逐条添加中)：\n关于空格\n- 所有代码使用4个空格缩进\n- 运算符后使用一个空格\n- \",\" 和for循环语句中的\";\" 后面跟上一个空格\n- 条件、分支保留字，如 if for while else switch 后留出一个空格\n- \"[]\", \".\"和\"->\" 前后不留空格\n - 用空行把大块代码分成逻辑上的“段落\n \n关于括号 \n- 大括号另起一行\n- 即便只有一行代码也加大括号\n - C 指针中的指针符靠近类型名，如写成int* p，而不写成int *p\n \n关于标点\n- 中文表述，使用中文全角的标点符号，如：（）、。，？\n- 数学公式（包括文中混排的公式）和英文代码，使用英文半角的标点符号，如：(),.?…\n\n关于注释\n- 注释统一用中文\n- 尽量统一用\"\u002F\u002F\"，一般不用\"\u002F\\*...\\*\u002F\"\n\n关于命名\n- 类名为大写字母开头的单词组合\n- 函数名比较长，由多个单词组成的，每个单词的首字母大写，如int MaxSubArray()；函数名很短，由一个单词组成，首字母小写，比如int swap()\n- 变量名比较长，由多个单词组成的，首个单词的首字母小写，后面紧跟单词的首字母大写，如maxEnd；变量名很短，由一个单词组成，首字母小写，如left\n- 变量尽量使用全名，能够描述所要实现的功能，如 highestTemprature；对于已经公认了的写法才使用缩写，如 tmp mid prev next\n- 变量名能“望文生义”，如v1, v2不如area, height\n- 常量的命名都是大写字母的单词，之间用下划线隔开，比如MY_CONSTANT\n- il \u003C 4384 和 inputLength \u003C MAX_INPUT_LENGTH，后一种写法更好\n\n - 一个函数只专注做一件事\n - 时间复杂度小写表示，如O(nlogn)，而不写成O(N*logN)\n - 正文中绝大部分采用C实现，少量C++代码，即以C为主，但不去刻意排斥回避C++；\n \n关于的地得\n- 形容词（代词） + 的 + 名词，例如：我的小苹果\n- 副词 + 地 + 动词，例如：慢慢地走\n- 动词 + 得 + 副词，例如：走得很快\n\n关于参考文献\n- 格式：主要责任者.书名〔文献类型标识 ] .其他责任者.版本.出版地：出版者，出版年.文献数量.丛编项.附注项.文献标准编号。例子：1 刘少奇.论共产党员的修养.修订 2 版.北京：人民出版社，1962.76 页.\n - 专业术语\n- 统一一律用“树结点”，而不是“树节点”。\n- 用左子树、右子树表示树的左右子树没问题，但是否用左孩子、右孩子表示树或子树的左右结点？\n - ..\n - 此外，更多C++ 部分可参考Google C++ Style Guide，中文版见：http:\u002F\u002Fzh-google-styleguide.readthedocs.org\u002Fen\u002Flatest\u002Fcontents\u002F ；\n\n有何问题或补充意见，咱们可以随时到这里讨论：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-By-July\u002Fissues\u002F81 。\n\n## Ver Note\n - 2010年10月11日，在CSDN上正式开博，感谢博客上所有读者的访问、浏览、关注、支持、留言、评论、批评、指正；\n - 2011年1月，在学校的时候，第一家出版社联系出书，因“时机未到，尚需积累”的原因婉拒，随后第二家、第三家出版社陆续联系，因总感觉写书的时机还没到，一律婉拒；\n - 2011年10月， 当时在图灵教育的杨海玲老师（现在人民邮电信息技术分社）再度联系出书，再度认为“时机未到”；\n - 2013年12月30日，本项目在众多朋友的努力之下，冲到github流行趋势排行榜全球第一，自己也在众人助推下冲到全球开发者第一。\n - 2014年1月18日，想通了一件事：如果什么都不去尝试，那么将年年一事无成，所以元旦一过，便正式确认今2014年之内要把拖了近3年之久的书出版出来；\n - 2013年12月-2014年3月，本github的Contributors 转移结构之法算法之道blog的部分经典文章到本github上，感谢这近100位Contributors，包括但不限于：\n- Boshen（除我之外，贡献本github的次数最多）\n- sallen450\n- marchtea（专门为本github书稿弄了一个HTML网页）\n- nateriver520（劝我把书稿放在github上，才有了本github）\n - 2014年3月，通读全部文章，修正明显错误，并邀请部分朋友review本github上的全部文章，包括cherry、王威扬、邬勇、高增琪、武博文、杨忠宝等；\n \n2014年4月\n- 整个4月，精简篇幅，调整目录，Contributors 贡献其它语言代码，并翻译部分文章；\n- 4月25日，跟人民邮电出版社信息技术分社签订合同，书名暂定《程序员编程艺术：面试和算法心得》，有更好的名字再替换。\n - 2014年5月，逐章逐节逐行逐字优化文字描述，测试重写优化每一段每一行每一个代码，确定代码基本风格；\n \n2014年6月\n- 第一周，压缩篇幅，宁愿量少，但求质精；\n- 第二周，全面 review；\n- 第三周，本github的部分Contributors 把全部文章从github转到word上，这部分contributors 包括包括：zhou1989、qiwsir、DogK、x140yu、ericxk、zhanglin0129、idouba.net、gaohua、kelvinkuo等；\n- 第四周，继续在Word 上做出最后彻底的改进，若未发现bug或pull request，本github将暂不再改动；\n- 6月30日，与出版社约定的交稿日期延期，理由：目前版本不是所能做到的最好的版本。\n2014年7月，邀请部分好友进行第一轮审稿，包括曹鹏、邹伟、林奔、王婷、何欢，其中，曹鹏重写优化了部分代码。此外，葛立娜对书稿中的语言描述做了不少改进；\n \n2014年8月\n- 8月上旬，新增KMP一节内容；\n- 8月下旬，重点修改SVM一节内容；\n\n2014年9月\n- 9月上旬，和一些朋友一起重绘稿件中的部分图和公式，这部分朋友包括顾运（@陈笙）、mastermay、在山东大学读研二的丰俊丙、厦门大学电子工程系陈友和等等；\n- 9月下旬，再度邀请另一部分好友进行第二轮审稿，包括许利杰、王亮、陈赢、李祥老师、litaoye等，并在微博上公开征集部分读者审稿，包括李元超、刘琪等等；\n\n2014年10月\n- 10月8日起，开始一章一章陆续交Word 稿给出版社初审\n- 10月9日，第一章、字符串完成修改；\n- 10月10日，第二章、数组完成修改；\n- 10月22日，第三章、树完成修改；\n\n2014年11月\n- 11月5日，第三章、树完成第二版修改，主要修正部分图片、公式、语言描述的错误；\n\n2014年12月\n- 12月1日，第四章、查找完成修改。至此，前4 章的修改稿交付出版社。 \n- 12月8日，第五章、动态规划完成修改，等出版社反馈中。一个人坚持有点枯燥。\n- 12月31日，第六章仍未修改完。\n\n2015年1月\n- 1月12日凌晨，第六章、海量数据处理完成修改，交付出版社。\n\n2015年4月\n- 4月27日凌晨，交完第七章初稿，接下来编辑老师反馈，我修改审阅反馈稿。且书名由原来的《程序员编程艺术：面试和算法心得》暂时改为《编程之法：面试和算法心得》。\n\n2015年5月\n- 5月2日，开始写书的前言，大致是：为何要写这本书，写的过程是怎样的；这是本什么书，有何特色，内容是什么，为什么这么写；写给谁看，怎么看更好。当然我还会加一些自己觉得比较个性化的内容。\n- 5月5日，审阅完编辑老师的第一章反馈，并合并。\n- 5月6日，审阅完第二章的一半。海玲姐两位老师给出了大量细致、详尽的修改建议，包括文字表述、语言表达、标点符号、字体格式、出版规范，尤其是正斜体、大小写、上下角。\n- 5月15日，和海玲姐审完第一、二章，标点、术语、表述、逻辑、图片、代码等一切细节。书稿进入一审阶段。\n\n2015年6月\n- 6月28日，经过反复修改、确认，书稿第一、二、三章基本定稿。 \n\n2015年7月\n- 7月10日，书稿全部七章基本定稿，即将进入二审。\n- 7月23日，补齐前言、封底、内容提要、邀请曹鹏、邹伟两位博士写推荐序，书稿进入二审，出版社重绘全部图片和公式。\n\n2015年8月\n- 8月6日，三审结束。书稿取得阶段性的胜利。 \n- 8月下旬，发稿审批。\n\n2015年9月\n- 9月上旬，排版校对，出胶片、印刷、装订成书 \n- 9月21日，几经易稿，终于敲定新书封面。\n- 9月22日，开始印刷。\n\n2015年10月\n- 进入10月份，万众期待的《编程之法》，终于终于要来了！\n- 10月13日晚，终于拿到第一批样书。\n- 10月14日下午三点半，我的新书《编程之法》终于在异步社区上首发开卖！\n- 10月28日，新书正式上架京东。目前京东、当当、亚马逊等各大网店均已有现货销售。\n\n## Contributors\n感谢所有贡献的朋友：https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-by-July\u002Fgraphs\u002Fcontributors ，因为有各位之力，本项目才能于13年年底冲到github流行趋势排行榜全球第一。非常期待你的加入，thanks。\n\n同时，欢迎加入《编程之法》讨论交流QQ群：74631723，需要写验证信息。\n\n孤军奋战的时代早已远去，我们只有团结起来，才能帮助到更多人。[@研究者July](http:\u002F\u002Fweibo.com\u002Fjulyweibo)，始于二零一三年十二月十四日。\n\n## Expressing Thanks\n\n- 感谢我博客上所有读者的访问、浏览、关注、支持、留言、评论、批评、指正，仅以本书献给我博客的所有读者。\n- 感谢Boshen、sallen450、marchtea、nateriver520等朋友帮我把博客上的部分经典文章移到GitHub上。\n- 感谢zhou1989、qiwsir、DogK、x140yu、ericxk、zhanglin0129、idouba.net、gaohua、kelvinkuo等朋友帮我把GitHub上的文章转为Word文件。\n- 感谢顾运、mastermay、丰俊丙、陈友和等朋友帮忙重绘书中的部分图和重录书中的部分公式。\n- 感谢cherry、王威扬、邬勇、高增琪、武博文、杨忠宝、葛立娜、林奔、王婷、何欢、许利杰JerryLead、王亮、陈赢、李祥老师、litaoye、李元超、刘琪、weedge、Frankie等众多朋友帮忙审校书稿。\n- 特别感谢曹鹏、邹伟两位博士。感谢他们非常认真细致地看完了全部书稿，给出了非常多的建设性意见，并为本书作序。\n- 最后，再次感谢杨海玲老师以及出版社的编辑们。感谢杨海玲老师给出了大量细致的修改建议，并且非常耐心地与我一轮一轮讨论和修改书稿。\n\n感谢以上诸位，正因为他们的帮助，纸书《编程之法：面试和算法心得》的质量才不断提升，从而给广大读者呈现的是更好的作品。\n\n声明：本电子书的版权属于July 本人，严禁他人出版或用于商业用途，违者必究法律责任。July、二零一四年五月十一日晚。\n\n## 干货集锦\nJuly’ PDF\n - 《支持向量机通俗导论（理解SVM的三层境界）》Latex排版精细版：http:\u002F\u002Fvdisk.weibo.com\u002Fs\u002FzrFL6OXKgnlcp ；Latex版本②：https:\u002F\u002Fraw.githubusercontent.com\u002Fliuzheng712\u002FIntro2SVM\u002Fmaster\u002FIntro2SVM.pdf 。\n - 《微软面试100题系列之PDF》：http:\u002F\u002Fdownload.csdn.net\u002Fdetail\u002Fv_july_v\u002F4583815\n - 编程艺术HTML网页版：http:\u002F\u002Ftaop.marchtea.com\u002F\n - 截止到2014年12.9日，结构之法算法之道blog所有155篇博文集锦CHM文件下载地址：http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gdrJndp\n \nJuly团队高校讲座PPT\n - 2014年4月29日《武汉华科大第5次面试&算法讲座PPT》：http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1hqh1E9e ；\n - 2014年9月3日西电第8次面试&算法讲座视频：http:\u002F\u002Fv.youku.com\u002Fv_show\u002Fid_XNzc2MDYzNDg4.html ；PPT：http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1pJ9HFqb ；\n - 北京10月机器学习班的所有上课PPT：http:\u002F\u002Fyun.baidu.com\u002Fshare\u002Fhome?uk=4214456744&view=share#category\u002Ftype=0；\n- July新书初稿的4个PDF\n - B树的PDF：http:\u002F\u002Fyun.baidu.com\u002Fs\u002F1jGwup5k ；\n - 海量数据处理的PDF：http:\u002F\u002Fyun.baidu.com\u002Fs\u002F1dDreICL ；\n - 支持向量机的PDF：http:\u002F\u002Fyun.baidu.com\u002Fs\u002F1ntwof7j ；\n - KMP的PDF：http:\u002F\u002Fyun.baidu.com\u002Fs\u002F1eQel3PK ；\n\n面试题集锦\n - 国内首个AI题库陆续发布，「BAT机器学习面试1000题」：https:\u002F\u002Fwww.julyedu.com\u002Fquestions\u002Finterview \n - 2021大厂最新AI面试题 [含答案和解析, 更新到前105题]：https:\u002F\u002Fwww.julyedu.com\u002Fcourse\u002FgetDetail\u002F369\n \n机器学习十大算法系列\n\nJuly在CSDN上有写一个「机器学习十大算法系列」（链接：https:\u002F\u002Fblog.csdn.net\u002Fv_july_v\u002Fcategory_9261611.html ），后远不止十大，现30篇，总阅读量500万，平均一篇16万多阅读，同事整理成PDF，竞达800页!其中最经典的十篇文章分别是：\n- SVM http:\u002F\u002Fblog.csdn.net\u002Fv_july_v\u002Farticle\u002Fdetails\u002F7624837\n- xgboost：https:\u002F\u002Fwww.julyedu.com\u002Fquestions\u002Finterview-detail?kp_id=23&cate=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0&quesId=2590 \n- CNN笔记：通俗理解卷积神经网络 http:\u002F\u002Fblog.csdn.net\u002Fv_july_v\u002Farticle\u002Fdetails\u002F51812459\n- RNN\u002FLSTM https:\u002F\u002Fwww.julyedu.com\u002Fquestion\u002Fbig\u002Fkp_id\u002F26\u002Fques_id\u002F1851 \n- 一文掌握目标检测：https:\u002F\u002Fwww.julyedu.com\u002Fquestion\u002Fbig\u002Fkp_id\u002F26\u002Fques_id\u002F2103\n- 通俗理解kaggle比赛大杀器xgboost，2018年8月：https:\u002F\u002Fblog.csdn.net\u002Fv_JULY_v\u002Farticle\u002Fdetails\u002F81410574\n- 如何从RNN起步，一步一步通俗理解LSTM，2019年5月：https:\u002F\u002Fblog.csdn.net\u002Fv_JULY_v\u002Farticle\u002Fdetails\u002F89894058\n- BERT通俗笔记：从Word2Vec\u002FTransformer逐步理解到BERT，2022年10月：https:\u002F\u002Fblog.csdn.net\u002Fv_JULY_v\u002Farticle\u002Fdetails\u002F127411638\n- ChatGPT通俗笔记：从GPT-N、RL之PPO算法到instructGPT、ChatGPT，2023年1月：https:\u002F\u002Fblog.csdn.net\u002Fv_JULY_v\u002Farticle\u002Fdetails\u002F128579457\n\n持续更新..\n\n## AI课程\n  - 七月在线「机器学习集训营」，http:\u002F\u002Fwww.julyedu.com\u002Fweekend\u002Ftrain18 ，一站式掌握大数据、机器学习、深度学习和CV\u002FN LP\u002F推荐项目实战，已帮助2000多人成功就业\u002F转型\n - 《CV高级小班 第十二期》：http:\u002F\u002Fwww.julyedu.com\u002FEmployment\u002Fcv12 ，在Facebook已年薪百万的都来学的CV高级班，不止精讲Vision Transformer 更实战6大企业级项目\n - 《NLP高级小班 第十一期》：http:\u002F\u002Fwww.julyedu.com\u002Fweekend\u002Fnlp11 ，不止精讲HMM\u002FCRF\u002FTransformer\u002FBERT且不止四大企业级项目，和在百度、字节、华为的同学共同提升\n - 《推荐高级班 第十三期》：https:\u002F\u002Fwww.julyedu.com\u002Femployment\u002Frs13 ，不止购买预测、文本推荐、行为预测、电商推荐，与已在大厂做推荐的同学共同提升\n","本项目是关于编程技巧、面试经验和算法解析的综合指南。它基于微软面试100题系列，精选了42个典型编程问题进行详细阐述，并不断优化更新。该项目不仅涵盖了数据结构和算法的经典题目，还涉及机器学习技术如XGBoost、CNN等，适合准备技术面试或希望提升编程技能的开发者。项目以C语言为主，但鼓励贡献者添加其他语言版本的代码实现。此外，项目还计划出版修订版书籍《编程之法：面试和算法心得》，并开放社区参与审阅和贡献内容。",2,"2026-06-11 03:05:28","top_language"]