<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.robinali.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.robinali.com/" rel="alternate" type="text/html" /><updated>2026-08-02T20:20:13+00:00</updated><id>https://www.robinali.com/feed.xml</id><title type="html">robinali.com</title><subtitle>Robina&apos;s track recordings</subtitle><author><name>Robina Li</name></author><entry><title type="html">关于当前AI趋势的旁观者的一点反思</title><link href="https://www.robinali.com/blogs/2026/01/08/reflections-on-current-ai-trends/" rel="alternate" type="text/html" title="关于当前AI趋势的旁观者的一点反思" /><published>2026-01-08T08:36:22+00:00</published><updated>2026-01-08T08:36:22+00:00</updated><id>https://www.robinali.com/blogs/2026/01/08/reflections-on-current-ai-trends</id><content type="html" xml:base="https://www.robinali.com/blogs/2026/01/08/reflections-on-current-ai-trends/"><![CDATA[<p>当前的AI主题是LLM， Agent， ALL in显卡 服务器，大量的电力消耗和用户争夺。</p>

<p>但是在实际的应用中， 我那AI tools当作大数据搜索整合工具， 而不是真正意义上的人工智能。 举几个例子： 我会用Cursor来生成LC刷题笔记，但是它不是真正意义上的原创内容，而是基于大数据的内容整合。 我会用VS Code生成代码，但是它不是基于需求理解的代码生成，而是通过语意的关联性搜索类似的代码段然后填充，如果我想实现一个数据库不存在的代码段，VS code很可能生成的代码是不符合我的期待的。 代码的自动填充是基于概率的补充，而不是基于思考的实现。 AI在我看来只是”看起来“智能。</p>

<p>当然不得不说AI工具能快速辅助我，让我从重复性无聊的事务里脱身。 以前想实现多步骤的图片修改， 比如把多余的内容过滤 需要几小时的人工，现在只需要几个指令+AI图片处理就好了。 这些，是基于大量的计算机运算来实现重复性操作，而不是基于智能去主动的改变什么。 方便，快捷，但是真的能算是“智能”么？</p>

<p>尤其是大型通用性模型花费了极其高昂的算力和电能，实现的可能只是用户重复的简单需求。 </p>

<p>下一步AI辅助的细分大概是某个趋势？ 比如说ChatGPT提供的法律解释大概率不够靠谱。 但是一个专用的专注于正确法律辅助的AI能帮助法律从业者更快的更有效的工作？ 针对智能家居的AI管家能基于如何帮主人更好的生活，能够提供家用电器的优化控制，给予主人恰当的建议（比如基于图片识别的家用采购清单）？ 这类专用/专业的针对性AI比通用AI对于资源的消耗更可控，同时可靠性更好，用户也更有意愿买单。</p>

<p>我有一个朋友，她会付费给专业营养师，每天给自己的事物拍照 然后得到系统的热量计算以及专业的建议和反馈。现在已经有相关手机APP在做类似的事情，引入AI（后台调用第三方API）来实现类似的功能。 当然，本质上还是用的通用LLM， 期间存在很多不需要的overhead的同时 不知道有没有在精准度上面有优化？</p>

<p>当前的科技领域：大公司凭借资本 大批裁员减开支来买显卡。中型公司因为没有足够的资本 逐步被淘汰。 新型的小公司及个人 通过AI帐号和API接口来快速积累人气和收入。 水深火热。</p>

<p>这种能源消耗换热点的局面，什么时候能够破局呢？ 期待分布式AI的存在，AI落地不应该是只有大型模型才行的局面。 毕竟几家独大目前都是烧钱倒贴换人气，哪天站稳了涨价了 或者泡沫破了 那就是全民灭杀的局面了。</p>

<p>一个健康的科技圈不应该是这样的。</p>

<p></p>]]></content><author><name>Robina Li</name></author><category term="Notes" /><summary type="html"><![CDATA[当前的AI主题是LLM， Agent， ALL in显卡 服务器，大量的电力消耗和用户争夺。 但是在实际的应用中， 我那AI tools当作大数据搜索整合工具， 而不是真正意义上的人工智能。 举几个例子： 我会用Cursor来生成LC刷题笔记，但是它不是真正意义上的原创内容，而是基于大数据的内容整合。 我会用VS Code生成代码，但是它不是基于需求理解的代码生成，而是通过语意的关联性搜索类似的代码段然后填充，如果我想实现一个数据库不存]]></summary></entry><entry><title type="html">算法面试： 数据结构和算法</title><link href="https://www.robinali.com/blogs/2026/01/02/algorithm-interview-data-structures-and-algorithms/" rel="alternate" type="text/html" title="算法面试： 数据结构和算法" /><published>2026-01-02T08:42:06+00:00</published><updated>2026-01-02T08:42:06+00:00</updated><id>https://www.robinali.com/blogs/2026/01/02/algorithm-interview-data-structures-and-algorithms</id><content type="html" xml:base="https://www.robinali.com/blogs/2026/01/02/algorithm-interview-data-structures-and-algorithms/"><![CDATA[<p>近几个月，有了充裕的时间学习和练习算法面试。 开了个博客记录C++ Leetcode进展：https://robinali34.github.io/blog_leetcode/</p>

<p> 是时候写一写小结了。</p>

<ol>
<li>算法面试考核什么？
<ul>
<li>数据结构的熟练度： C++ STL + 数据结构</li>



<li>算法： 算法熟练度，分类掌握，熟悉对应模板，抽象具体问题-&gt;算法选择-&gt;基于runtime的筛选-&gt;解法实现</li>



<li>有效沟通： 面试同时是筛选这个求职者能不能处，能不能有效沟通，把模糊的需求细化和准确高效的实现</li>



<li>软件工程基础： 比如代码整洁度，快速纠错，合规的代码结构（https://google.github.io/styleguide/cppguide.html）</li>
</ul>
</li>



<li>如何准备算法面试
<ul>
<li>迭代学习： 面试是多轮的迭代， 从简单+基础的内容入手， 多轮练习， 不求一蹴而就。 每一轮新的学习，会遇到新的a-ha灵机一动的时刻，前一轮的难点逐步的拿下， 当前环节的难点细节记下来，待第二天或者下一轮再去尝试， 会有惊喜</li>



<li>数据结构：理论学习+多练 任何一本C++数据结构的书都可，先了解有哪些数据结构，再结合练习去回顾和加深理解</li>



<li>算法： 理论学习+Leetcode 从简单题入手， 入门级课程开始，然后多轮迭代练习。 按分类和模板+随机题 同步刷题。 分类+模板加深理论学习的熟练度， 随机题练解題套路（步骤）和熟练度</li>



<li>有效沟通： 多练，找人mock（记录反馈）</li>



<li>软件工程基础： 查漏补缺，记录练习/面试准备中找到的不足+针对性练习</li>
</ul>
</li>



<li>算法面试的易错点：
<ul>
<li>量&gt;质： 我遇到的第一个坑就是单纯追求Leetcode刷题的数目， 第二次遇到同样的题依然不会，非常消耗积极性和自信</li>



<li>不练模板： 每个数据结构都有它的常用API， 每种算法都有针对不同问题组的多个模板。 融会贯通模板是快速有效的解题的基础</li>



<li>没有时间敏感度： 不同面试有完全不同的严格的时间要求， 应当针对性规划解题的时间，多长时间读题，多久分析和选择算法，多久代码实现，多久差错和测试， 都应该了熟于心</li>



<li>没有适合自己的规划： 全职准备算法面试不代表每天8小时纯刷题，应该按照自己的需求安排学习&amp;复习的时间； 兼职准备不代表三天打鱼俩天晒网，定一个最低要求（譬如每日一题）</li>
</ul>
</li>



<li>算法面试的准备安排：
<ul>
<li>先分类，然后针对性的去练习</li>



<li>列表， 按照自己的舒适度去练习， 可以跳过熟悉的内容，遇到不理解的部分可以暂时放下 找找视频教学 再入手</li>



<li>多轮的准备： 软件设计本质上也是多轮迭代，从基本功能实现开始，在新的版本中添加新的内容，逐步完善才能成为一个优质多功能的好软件。 面试也是一样的道理，从基础入门，先了解什么是数据结构什么是算法，看看视频+教程，再加入多轮不同难度的练习。 注意别给自己定超出能力的目标，别陷入焦虑陷进，甚至厌学。 适当的修改当前的目标，学习和练习都应当是轻松愉快的过程。</li>



<li>清醒的定位：面试是充分的准备+概率性回报， 不要以面试过不过来定义自己的成败。 学习总是有回报的，和上周的自己比较，有提高就是成功。 如果面试内容只是简单题，那么掌握基础数据结构+简单算法就足够，如果是高难度题，那么就对基础+熟练度+综合实力+运气 都有要求</li>
</ul>
</li>



<li>准备的相关资料
<ul>
<li>数据结构和算法的公开课程： 优先选名校，中英文都有很好的免费课程在B站和油管都有不错的选择</li>



<li>力扣中文：
<ul>
<li>学习计划： https://leetcode.cn/studyplan/</li>



<li>Leetbook： https://leetcode.cn/leetbook/</li>
</ul>
</li>



<li>Leetcode explore: https://leetcode.com/explore/</li>



<li>针对题目的解法： 公开视频，官方题解， AI解答（如Chatgpt， Deepseek）</li>



<li>针对刷题的分类和建议： 前人的分享，如：
<ul>
<li>Leetcode 讨论：
<ul>
<li>https://leetcode.com/discuss/post/7454294/happy-new-year-2026-monotonic-stack-topo-3v8m/</li>



<li>https://leetcode.com/discuss/post/1383740/microsoft-online-assessment-part-ii-till-kuq8/</li>



<li>https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/876061/yi-ge-mo-ban-miao-sha-10dao-zhong-deng-n-sb0x/</li>



<li><a href="https://leetcode.cn/u/endlesscheng/" target="_blank" rel="noreferrer noopener">灵茶山艾府</a>： <a href="https://leetcode.cn/discuss/post/3578981/ti-dan-hua-dong-chuang-kou-ding-chang-bu-rzz7/" title="">滑动窗口与双指针</a></li>
</ul>
</li>



<li>C++相关网站：
<ul>
<li>https://www.cppreference.com/</li>



<li>https://google.github.io/styleguide/cppguide.html</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ol>

<p></p>]]></content><author><name>Robina Li</name></author><category term="Notes" /><summary type="html"><![CDATA[近几个月，有了充裕的时间学习和练习算法面试。 开了个博客记录C++ Leetcode进展：https://robinali34.github.io/blog_leetcode/ 是时候写一写小结了。]]></summary></entry><entry><title type="html">Look back: AI tools v.s. coding</title><link href="https://www.robinali.com/blogs/2025/09/25/look-back-ai-tools-v-s-coding/" rel="alternate" type="text/html" title="Look back: AI tools v.s. coding" /><published>2025-09-25T07:03:16+00:00</published><updated>2025-09-25T07:03:16+00:00</updated><id>https://www.robinali.com/blogs/2025/09/25/look-back-ai-tools-v-s-coding</id><content type="html" xml:base="https://www.robinali.com/blogs/2025/09/25/look-back-ai-tools-v-s-coding/"><![CDATA[<p>For a long time I am not sure about what role AI tools shall be when I am coding. Key questions are:</p>

<ol>
<li>When I shall use AI tool and what tool shall be used</li>



<li>How much I can trust the response AI tools regarding knows issues like hallucination and miscommunication</li>



<li>Also, what situations I need to be extra careful review the AI generated results/suggestions; while what scenarios I can blindly take whatever AI generated response as it it. </li>
</ol>

<p>Recently I got some dedicated free time doing personal practice and projects regarding coding. And had been actively using ChatGPT and Cursor for weeks. Now with more practices done, I have a better hint regarding those confusions.</p>

<p>Keyword in how to use AI is: you know what you are doing. That, before you start use the tool you have deep understanding in what to be expected or what right answer is. Otherwise you will get sidetracked and miss-use them. For now, AI is a tool not a replacement of your brain.</p>

<ol>
<li>When &amp; what
<ul>
<li>As for well supported platforms like leetcode practice, AI tool like ChatGPT and Cursor can be very helpful. ChatGPT can be used to get question catagories, template of solutions, review my solutions, and quick QA. Cursor can be used to generate source code project, update README etc. And save me a lot of time while conducting those data copy, formatting, generated test cases, and project setup stuff for me.
<ul>
<li>BUT! Be <strong>careful about </strong>some<strong> details</strong>. For example, the leetcode solutions from AI is not optimal and may has small issues like memory leak with C++ code.  And test cases they generated are more trending to make the test pass but actually test the code/feature. If you have a high standard and reliability request, do review those generated code before submission.</li>
</ul>
</li>



<li>As for context generation like resume update, use AI as reference for outline, rewording but it will generate hallucinated context and remove your keywords automatically, do a before &amp; after comparison before submission.</li>



<li>As for mini project, that you know exactly what to be expected, AI IDE like Cursor is helpful, while you need to be extra patient with it. Treated it like a child trying really hard to make you happy during the interlocution.
<ul>
<li>For example, I did a mini project to generate a pdf resume that matching my current resume. I want it using latex or markdown format. But to get it down I need to reword my request dozens of times while it is repeatedly make the 1st page only have the title line during my requests. In the end it took me few hours to have a okay version.</li>



<li>Another example is mini project in learning new approach that you do not expecting a reliable long term execution. For example I was curious about Python SQLAlchemy with PostgreSQL. Cursor can generated a project about it in few hours and help add examples of most common manipulations help me better understanding how they works.</li>
</ul>
</li>
</ul>
</li>



<li>How much I can trust it.
<ul>
<li>The TA of my algorithm course Joves from Google said something give me the hint: when you do algorithms questions, read the questions and try solving it before you go to AI tools. <strong>Think before asking for help. </strong></li>



<li>In the Resume case above, I know exactly what I want. I can ask for AI IDE to generate it for me. BUT, in case I am not sure, e.g.: I did not read through the Algorithm question and ask AI to understand it for me, the outcome can be sideways greatly.
<ul>
<li>For example, there is a DP question that a variation of knapsack question, the ChatGPT directly take is as the Leetcode question and answered it. Which is not the real question about.</li>



<li> Take AI like a auto-fill correction when you typing, you need to know you want word like &#8220;Hallucination&#8221;, not the auto-corrected &#8220;calumniation&#8221;. </li>
</ul>
</li>



<li>In sort, do not trust AI to understand things for me. Use it as a Wikipedia, a teacher, not your-self.</li>



<li>Do review (based on your understanding) before you submit the AI generated results.</li>
</ul>
</li>



<li>What situation and how much I can trust AI generated result?
<ul>
<li>Know what reliability you want, and review AI generated code to matching the reliability you want. 
<ul>
<li>If you want a pdf generation or a blog site, as long as generated results match your expectations, fine. No Unit test needed.</li>



<li>If you want a auto-drive app, unit test, corner cases, real-environment validation etc. all needed.</li>



<li><strong>Do not trust AI with your life.</strong></li>
</ul>
</li>
</ul>
</li>
</ol>

<p></p>]]></content><author><name>Robina Li</name></author><category term="Notes" /><summary type="html"><![CDATA[For a long time I am not sure about what role AI tools shall be when I am coding. Key questions are: Recently I got some dedicated free time doing personal practice and projects regarding coding. And had been actively us]]></summary></entry><entry><title type="html">[Medium] 33. Search in Rotated Sorted Array</title><link href="https://www.robinali.com/blogs/2025/09/24/medium-33-search-in-rotated-sorted-array/" rel="alternate" type="text/html" title="[Medium] 33. Search in Rotated Sorted Array" /><published>2025-09-24T03:26:18+00:00</published><updated>2025-09-24T03:26:18+00:00</updated><id>https://www.robinali.com/blogs/2025/09/24/medium-33-search-in-rotated-sorted-array</id><content type="html" xml:base="https://www.robinali.com/blogs/2025/09/24/medium-33-search-in-rotated-sorted-array/"><![CDATA[<p>Note: Leetcode questions moved to github page: <a href="https://robinali34.github.io/blog_leetcode/" title="https://robinali34.github.io/blog_leetcode/">https://robinali34.github.io/blog_leetcode/</a></p>

<h2>Template in C++</h2>

<h3>Binary search on answer</h3>

<pre><code>int bs_on_answer(int left, int right) {<br />    while (left &lt;= right) {<br />        int pivot = left + (right - left) / 2;<br />        if (condition(pivot)) {<br />            right = pivot + 1;<br />        } else {<br />            left = pivot + 1;<br />        }<br />    }<br />    return -1;<br />}</code></pre>

<h2>Solution in C++</h2>

<pre><code>class Solution:<br />    def search(self, nums: List&#91;int], target: int) -&gt; int:<br />        left, right = 0, len(nums) - 1<br />        while left &lt;= right:<br />            mid = left + (right - left) // 2<br />            if nums&#91;mid] == target:<br />                return mid<br />            # Subarry on mid's left is sorted<br />            elif nums&#91;mid] &gt;= nums&#91;left]:<br />                if target &gt;= nums&#91;left] and target &lt; nums&#91;mid]:<br />                    right = mid - 1<br />                else:<br />                    left = mid + 1<br />            # Subarray on mid's right is sorted<br />            else:<br />                if target &lt;= nums&#91;right] and target &gt; nums&#91;mid]:<br />                    left = mid + 1<br />                else:<br />                    right = mid - 1<br />        return -1</code></pre>

<h2>Solution in Python</h2>

<pre><code>class Solution:<br />    def search(self, nums: List&#91;int], target: int) -&gt; int:<br />        left, right = 0, len(nums) - 1<br />        while left &lt;= right:<br />            mid = left + (right - left) // 2<br />            if nums&#91;mid] == target:<br />                return mid<br />            # Subarry on mid's left is sorted<br />            elif nums&#91;mid] &gt;= nums&#91;left]:<br />                if target &gt;= nums&#91;left] and target &lt; nums&#91;mid]:<br />                    right = mid - 1<br />                else:<br />                    left = mid + 1<br />            # Subarray on mid's right is sorted<br />            else:<br />                if target &lt;= nums&#91;right] and target &gt; nums&#91;mid]:<br />                    left = mid + 1<br />                else:<br />                    right = mid - 1<br />        return -1</code></pre>]]></content><author><name>Robina Li</name></author><category term="Leetcode" /><summary type="html"><![CDATA[Note: Leetcode questions moved to github page: https://robinali34.github.io/blog_leetcode/ Template in C++ Binary search on answer Solution in C++ Solution in Python]]></summary></entry><entry><title type="html">Leetcode in Python</title><link href="https://www.robinali.com/blogs/2025/08/28/hello-world/" rel="alternate" type="text/html" title="Leetcode in Python" /><published>2025-08-28T02:12:35+00:00</published><updated>2025-08-28T02:12:35+00:00</updated><id>https://www.robinali.com/blogs/2025/08/28/hello-world</id><content type="html" xml:base="https://www.robinali.com/blogs/2025/08/28/hello-world/"><![CDATA[<p><a href="https://github.com/robinali34/leetcode_python" title="Have fun~">My repo for Leetcode solutions in Python~</a><br /></p>

<p></p>]]></content><author><name>Robina Li</name></author><category term="Leetcode" /><summary type="html"><![CDATA[My repo for Leetcode solutions in Python~]]></summary></entry></feed>