実際に書いて覚える

プログラミング初心者の多くは、学習初期には市販のテキストを読んで必死に勉強している状態だと思います。
JavaScriptのような特別な環境を必要としないプログラミング言語は別ですが、多くのプログラミング言語には開発環境が必要で、テキストを読むだけの方が楽だと考えがちになります。
そのため、PCの開発環境を整える前に、座学でプログラミングのイロハを学ぶなど頭で理解しようとする人が増えています。
また、アルゴリズムなどを数学的なレベルから理解しようとする人まで登場し、その傾向は高学歴者など学習に成功体験を持つ人に顕著です。

しかし、プログラミングは書いて動かすことが一番効率的な上達法であり、プログラミング初心者にとって最も効率的な勉強法だといえます。
特にスマートフォンなどのアプリの開発をするために必要なJavaなどのプログラミング言語は、実際の試行錯誤が必要です。

市販のテキストのサンプルなどをまずは書いてみて、5周ぐらい繰り返し開発すると良いと言えます。
何周かテキストの内容を回すうちに、基礎力だけではなく応用力も身に付き、自分なりのアレンジを行いたくなります。
そこがコードを実際書くことの、座学でプログラミングを学習することに対する優越性です。

一方で、どうしても座学で学びたい場合、基本情報技術者試験の午後試験のプログラミング分野の過去問を解く方法は一定の効果があります。
しかし、基本情報技術者試験の出題は実際のプログラミングとはやや乖離しているため、アルゴリズムの考え方を確認する程度に留めると良いでしょう。