iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
1
自我挑戰組

新手也能學!一起從面試題理解程式邏輯!系列 第 1

【從面試題學邏輯-1】所以我說,為什麼要用解題開始?解題能吃嗎?

前言

不知道大家有沒有遇到過「課本的理論看懂了,但考試時卻半題都看不懂」這種情況?雖然不敢保證每個人都會遇到,但個人在數學方面經常遇到這種問題。明明上一秒老師剛講解完,下一秒翻到題目馬上像是失憶一樣,更慘的是,翻回理論後完全不知道要怎麼用在題目上。

身為一位一天到晚被編譯器噴錯的擁有菜鳥程設經驗的新手,其實也了解只學理論絕對是不夠的,最需要的是「實作」,也就是解問題練手感。透過解問題來了解哪些還沒完全學起來,或者是學習一些設計上的邏輯與技巧,或更進階的提升程式效率等。

其實這很像自己摸索遊戲:

  1. 看說明知道能力點的意思
  2. 試著自己分配一套出來
  3. 出去打怪試效果
  4. 根據結果再做調整
  5. 重複以上到最順手
  6. 到最後就對能力點的分配很在行

在程式的話就是:

  1. 透過文件或課程學習程式操作
  2. 試著自己玩看看這些東西
  3. 解題練功
  4. 根據錯誤的再做學習
  5. 重複以上步驟
  6. 最後就練就深厚的功力

而新手頭一次練功總是特別困難,自己第一次面對解題時根本就是全程問號伺候

我的天啊,這解答精簡到根本看不懂

這東西是要這樣用嗎?!

這題目不會是希臘文寫的吧?

由於深知新手上路的痛苦,所以這次選擇了用「面試題」來帶大家學習一些程式的邏輯,選擇面試題是這些題目通常需要思考,並且是學起來或多或少有幫助的。

特別是在解位元運算的題目時,也從沒想過會用到這東西,直到某次寫批改多選題答案的東西時才發現……還好當初有學到這個運用的概念啊!


文章面向

適合新手上路的程式設計玩家
本系列主要針對入門新手來進行,會選擇難度較低的題目,且盡量會選擇邏輯取向方面的種類,比較複雜或是較少見的題目數量會盡量減少。

建議要擁有基本的程式概念
建議閱讀前必須要擁有最基本的程式概念,雖然後續文章碰到位元運算、資料結構等會稍微提及一下,但在字串、陣列、迴圈的基本部分就不多敘述了。畢竟本次主教是藉由解題來學習程式邏輯,而不是基本程式教學。

注意事項

不見得會是最有效率的解
俗話說的好:「程式達到效率的極致後,就可以讓大部分的人都看不懂了」,而這次希望的是讓剛入門的新手也能一起練邏輯,所以不見得會是最有效率的解法,但本系列會盡量用簡單的方法講深一點。

稍微提一點,目前有計畫講Java的Integer.bitCount(),這個就真的是效率的極致,講白了沒人帶就是天書XD。但因為它的原理十分有趣,筆者會盡量用簡單的方法讓大家都知道這個讓大家頭痛的惡趣味(?)

沒有一定的程式語言
接下來的文章大多會使用Java,可行的話也會附上其他語言(Python、JavaScript等)的解法。但不一定是用這幾種,只要是熟悉的程式語言都可以自行嘗試改寫,畢竟差別只是語法,邏輯上是大同小異。


前言到這邊,下一篇將會分享本次選題的出處,以及一些解題前的小提示等。


下一篇
【從面試題學邏輯-2】題目哪裡來?該怎麼做比較好?
系列文
新手也能學!一起從面試題理解程式邏輯!30

尚未有邦友留言

立即登入留言