<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>admin-saiko, Author at Saiko Software</title>
	<atom:link href="https://saiko-software.com/author/admin-saiko/feed/" rel="self" type="application/rss+xml" />
	<link>https://saiko-software.com/author/admin-saiko/</link>
	<description></description>
	<lastBuildDate>Thu, 06 Aug 2026 00:12:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://saiko-software.com/wp-content/uploads/2024/03/cropped-logo-black-p5-32x32.png</url>
	<title>admin-saiko, Author at Saiko Software</title>
	<link>https://saiko-software.com/author/admin-saiko/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Software Developer (NodeJS) &#8211; Job Opportunity at Saiko</title>
		<link>https://saiko-software.com/software-developer-nodejs-job-opportunity-at-saiko/</link>
					<comments>https://saiko-software.com/software-developer-nodejs-job-opportunity-at-saiko/#respond</comments>
		
		<dc:creator><![CDATA[admin-saiko]]></dc:creator>
		<pubDate>Tue, 15 Jul 2025 08:49:55 +0000</pubDate>
				<category><![CDATA[Hiring]]></category>
		<guid isPermaLink="false">https://saiko-software.com/?p=996</guid>

					<description><![CDATA[<p>Job Brief We are seeking talented NodeJS Developers to join our dynamic team at Saiko, a software company specializing in outsourcing for the Japanese and US markets. As a team member, you’ll work on both server-side and frontend aspects of our web applications, contributing to their full lifecycle. If you’re passionate about coding, problem-solving, and [&#8230;]</p>
<p>The post <a href="https://saiko-software.com/software-developer-nodejs-job-opportunity-at-saiko/">Software Developer (NodeJS) &#8211; Job Opportunity at Saiko</a> appeared first on <a href="https://saiko-software.com">Saiko Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading"><strong>Job Brief</strong></h3>



<p class="wp-block-paragraph">We are seeking talented <strong>NodeJS Developers</strong> to join our dynamic team at <strong>Saiko</strong>, a software company specializing in outsourcing for the Japanese and US markets. As a team member, you’ll work on both <strong>server-side</strong> and <strong>frontend</strong> aspects of our web applications, contributing to their full lifecycle. If you’re passionate about coding, problem-solving, and building innovative applications, we want to meet you!</p>



<p class="wp-block-paragraph"><strong>Salary</strong>: Up to 25M VND (gross), based on skills and experience.</p>



<h3 class="wp-block-heading"><strong>About Saiko</strong></h3>



<p class="wp-block-paragraph">Saiko is a small, vibrant team dedicated to long-term collaboration. We focus on delivering high-quality software solutions for global clients, particularly in Japan and the US. At Saiko, we value relationships and aim to grow together with our team members.</p>



<h3 class="wp-block-heading"><strong>Responsibilities</strong></h3>



<ul class="wp-block-list">
<li>Contribute to the entire application lifecycle, focusing on coding and debugging.</li>



<li>Write clean, functional code for web applications.</li>



<li>Troubleshoot and debug to ensure smooth performance.</li>



<li>Conduct UI tests to optimize application performance.</li>



<li>Leverage cutting-edge technologies to enhance legacy applications.</li>



<li>Collaborate with clients to improve application quality.</li>



<li>Build reusable code and libraries for future use.</li>
</ul>



<h3 class="wp-block-heading"><strong>Requirements &amp; Skills</strong></h3>



<ul class="wp-block-list">
<li><strong>1-5 years</strong> of experience in software development with <strong>NodeJS</strong>.</li>



<li>Experience with <strong>ExpressJS</strong> or <strong>NestJS</strong>.</li>



<li>Experience with <strong>ReactJS</strong> or <strong>VueJS</strong>.</li>



<li>Previous experience as a team/technical leader is a plus.</li>



<li>Strong problem-solving skills and a positive mindset.</li>



<li><strong>Good English skills</strong> for client communication (written) and research.</li>



<li>Knowledge of databases (<strong>MongoDB</strong>, <strong>PostgreSQL</strong>, or <strong>MySQL</strong>).</li>



<li>Proficient with code versioning tools (<strong>Git</strong> preferred).</li>



<li>Bonus: Open-source <strong>GitHub</strong> repositories, <strong>LeetCode</strong> profile, or similar.</li>
</ul>



<h3 class="wp-block-heading"><strong>Benefits</strong></h3>



<ul class="wp-block-list">
<li>Competitive salary: <strong>10M &#8211; 25M VND (gross)</strong>, based on ability and position.</li>



<li>13th-month salary and holiday bonuses (Lunar New Year, etc.).</li>



<li><strong>Work schedule</strong>: Monday to Friday, full weekend off (Saturday &amp; Sunday).</li>



<li>Full social, health, and unemployment insurance as per labor law.</li>



<li>Training and mentorship by senior developers, if needed.</li>



<li>Annual company trips, sick leave, maternity leave, and more.</li>
</ul>



<h3 class="wp-block-heading"><strong>Interview Process</strong></h3>



<ol class="wp-block-list">
<li><strong>Round 1</strong>: 30-minute to 1-hour technical test.</li>



<li><strong>Round 2</strong>: Interview with our team.</li>
</ol>



<h3 class="wp-block-heading"><strong>How to Apply</strong></h3>



<p class="wp-block-paragraph">Ready to join our journey? Send your CV, GitHub/LeetCode profiles, and a brief introduction to hr@saiko-software.com. Let’s build something amazing together at Saiko!</p>
<p>The post <a href="https://saiko-software.com/software-developer-nodejs-job-opportunity-at-saiko/">Software Developer (NodeJS) &#8211; Job Opportunity at Saiko</a> appeared first on <a href="https://saiko-software.com">Saiko Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://saiko-software.com/software-developer-nodejs-job-opportunity-at-saiko/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algorithm: Longest common prefix</title>
		<link>https://saiko-software.com/algorithm-longest-common-prefix/</link>
					<comments>https://saiko-software.com/algorithm-longest-common-prefix/#respond</comments>
		
		<dc:creator><![CDATA[admin-saiko]]></dc:creator>
		<pubDate>Wed, 02 Apr 2025 04:44:57 +0000</pubDate>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[leetcode]]></category>
		<guid isPermaLink="false">https://saiko-software.com/?p=988</guid>

					<description><![CDATA[<p>Today we will look at an easy problem: finding the longest common prefix of an array of strings. Could you find the optimized solution for it?</p>
<p>The post <a href="https://saiko-software.com/algorithm-longest-common-prefix/">Algorithm: Longest common prefix</a> appeared first on <a href="https://saiko-software.com">Saiko Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Problem</h2>



<p class="wp-block-paragraph">Write a function to find the longest common prefix string amongst an array of strings. <br>If there is no common prefix, return an empty string&nbsp;<code>""</code>.</p>



<p class="wp-block-paragraph"><strong>Example 1:</strong></p>



<pre class="wp-block-preformatted has-ast-global-color-2-color has-ast-global-color-5-background-color has-text-color has-background has-link-color wp-elements-c0d94e01c8ac8cce8c02e4a75c10a6f1"><strong>Input:</strong> strs = ["flower","flow","flight"]
<strong>Output:</strong> "fl"
</pre>



<p class="wp-block-paragraph"><strong>Example 2:</strong></p>



<pre class="wp-block-preformatted has-ast-global-color-2-color has-ast-global-color-5-background-color has-text-color has-background has-link-color wp-elements-a8884e3464e9ffe0d50ccf12e188009f"><strong>Input:</strong> strs = ["dog","racecar","car"]
<strong>Output:</strong> ""
<strong>Explanation:</strong> There is no common prefix among the input strings.</pre>



<h2 class="wp-block-heading">Solution</h2>



<h3 class="wp-block-heading">Brute force</h3>



<p class="wp-block-paragraph">This is an easy problem. First we will look at the brute force solutiton:<br>– Loop through the first string in the array.<br>– Loop through other strings in the array and compare the characters in the same position.<br>– if the characters are not matched –&gt; break through the loop.<br>– if the characters are matched, add it to the result.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="const solution1 = function(strs) {
    let result = &quot;&quot;;
    let baseStr = strs[0];
    if (strs.length === 1) return baseStr;
    for (let i = 0; i &lt; baseStr.length; i++) {
        let matched = true;
        for (let j = 1; j &lt; strs.length; j++) {
            if (strs[j][i] !== baseStr[i]) {
                matched = false;
                break;
            }
        }

        if (matched) {
            result += baseStr[i];
        } else {
            break;
        }
    }
    return result;
};" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">solution1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">function</span><span style="color: #ECEFF4">(</span><span style="color: #D8DEE9">strs</span><span style="color: #ECEFF4">)</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">let</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">result</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;&quot;</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">let</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">baseStr</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">strs</span><span style="color: #D8DEE9FF">[</span><span style="color: #B48EAD">0</span><span style="color: #D8DEE9FF">]</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">strs</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">length </span><span style="color: #81A1C1">===</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">baseStr</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #81A1C1">let</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">baseStr</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">length</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">let</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">matched</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">true;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #81A1C1">let</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">strs</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">length</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">strs</span><span style="color: #D8DEE9FF">[</span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF">][</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">] </span><span style="color: #81A1C1">!==</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">baseStr</span><span style="color: #D8DEE9FF">[</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">]) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #D8DEE9">matched</span><span style="color: #D8DEE9FF"> </span><span st