|
很多初學者,尤其是半路出家的遇到了一個很普遍的情況: 那就是只學會了Java 的語法, 而沒有學會編程。 我拿一個例子來說一下, 下面是一個SimpleList 的類, 模仿java 的ArrayList, 已經定義好了接口,需要實現(xiàn)具體的業(yè)務: /** * 自定義的一個模仿ArrayList的類, 你需要實現(xiàn)其中的add, get, remove , 等方法 * @author 劉欣 */ public class SimpleList<T>{ private Object[] elementData; private int size=0; public int size() { return -1; } public SimpleList(){ } public boolean isEmpty() { return false; } public boolean add(T e) { return false; } public boolean remove(Object o) { return false; } public T get(int index) { return null; } } 然后我拿這個類給幾個人測試, 我發(fā)現(xiàn)很少人能夠順利的把這幾個方法給實現(xiàn)了, 哪怕是非常粗糙的實現(xiàn)也沒有。 感興趣的同學也可以用你擅長的語言嘗試一下。 這個題目不要求實現(xiàn)復雜的算法, 也不需要進行面向對象的設計,也不需要考慮多線程下的線程安全, 況且已經給了提示: 用一個Object數組來實現(xiàn)。 如果說有一點語法層面的難度, 那就是使用了一點泛型。 其實如果我把泛型去掉, 估計他們還是實現(xiàn)不了, 因為這個類的核心邏輯不是泛型。 這個SimpleList 要求的就是能對一個數組進行操作,核心就兩點: 1. 能往數組添加數據, 記錄size ,如果數組空間不夠了, 需要增大空間 2. 能刪除數組指定位置的數據,并且把之后的數據往前挪動。 難嗎? 這其實是編程序的基本素養(yǎng), 編程的本質,和用什么語言實現(xiàn)沒有關系。 如果不是Java , 學的是C#, 或者Python, 我估計結果也差不多。 我想可能是不少人都缺乏最最基本的數據結構和算法的訓練, 還沒有養(yǎng)成面向計算機的邏輯思考的方式。 解決的辦法其實也很簡單:就是多實踐,多編碼, 我推薦多做數據機構和算法的習題, 這也是我個人的經驗, 大學時把數據結構的習題都做一遍, 后來工作中只要不是設計算法, 基本上沒要難住我的。 如果以后想選擇碼農作為職業(yè), 這種編程能力是必不可少的, 所以在校的同學, 不妨從現(xiàn)在就開始, 把缺失的能力不上。
|
|
|