前提・実現したいこと
javaの初学者かつ独学中です。javaの実務をされている方々にお聞きしたいと思います。
javaの実務に近い問題と解答例がある書籍又はサイト(日本語、又は英語)を探しています。
cracking the coding interview、leetcodeを行っていますが、
いずれもデータ構造とアルゴリズムに近いように思いまして、もう少し実務寄りの問題と解答がある書籍又はサイトをご存知の方がいましたら教えていただけますでしょうか。
justsystemさんの100本ノックはとても良く、この100本ノックのような問題と解答がある書籍又はサイトをイメージしています。
https://github.com/JustSystems/java-100practices[リンク内容](https://github.com/JustSystems/java-100practices)
ご参考まで、100本ノックの問題の一部を以下に転記させていただきます。
問79
以下の要件を満たすクラスを作成するよう、リーダーから指示された。簡単に設計ポリシーを説明した上で、該当クラスを実装せよ。
<要件>
ファイルの取得元のリストと保存先フォルダーを引数として受け取る
取得元にアクセスし、保存先フォルダーに対象ファイルを保存する
取得元としては、URL(http://example.com/folder/file.png の形式)、ローカルファイル(C:\temp\test.txtの形式)、UNC形式のパス(\host\public\file.htmlの形式)の3種類が指定できる。
処理が失敗した場合は、保存先フォルダーのerror.txtに対して、失敗したファイルの取得元パスを出力する。
オープンソースアプリケーションの写経も行っていますが、最初に正解のコードを見てしまうため、定着があまり良くありません。問題についてまず自分で試行錯誤し、その結果をプロの方のコードと照らし合わせるように学習出来たらと思っています。
書籍又はサイトは日本語、又は英語のものを希望します。
お手数ですがアドバイスいただきますと大変助かります。よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/21 03:43
2021/10/25 00:29
回答6件
0
ベストアンサー
そもそも実務って仕事なので型にはまったものやってる訳じゃないので「実務の勉強」なんてものはしようがないです。
勉強として何かしらアプリケーション作ったとして、その時に凝った実装をしたのが業務で役に立つことは
なくはないですけど、"こういうのは絶対に実務で使うので勉強になる"みたいなのはないです。
強いて言うなら基礎の部分ぐらい。
ただ単にずっと仕事してれば経験である程度の当たりが付けれるようになるぐらいなので、
実務に向けてって事なら普通に公式のドキュメントが読めたりすれば十分でしょう。
少し追記すると、この回答は実務に入った時に困らないように事前に練習したい、というような意味で質問されたのかという推測の上で回答しています。
そういう意味でなら自分で実力を偽らない限りは、普通未経験を採用する際は、企業側も即戦力として
獲得してる訳ではなく、数年後に戦力としてバリバリ働いて貰うために育成込みで雇っている事が殆どです。
Javaを使った開発の現場に入りたいならJavaの勉強、後はこれはどこでもですがGitなどの
バージョン管理システムは扱えるようになっていると評価されやすいと思います。
以上、蛇足気味ですが参考になれば。
投稿2021/10/20 04:54
編集2021/10/21 00:05総合スコア1282
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/21 23:58
2021/10/28 03:57
2021/10/28 10:18
2021/10/28 23:53
0
javaの実務に近い問題と解答例がある書籍又はサイト
ないです。
実務は実務。
勉強は勉強。
案件やプロジェクトによって方針ややり方が違うし、それらは外に出ることはないので、実務を知りたければ実務に入るしかありません。
学習は大抵答えがあってそれを求めるのが目的。
実務は答えを自ら作り、それまでのプロセスも自己の責任において完遂するものなので全く毛色が違います。
投稿2021/10/20 03:56
総合スコア80875
0
こういう質問サイトで
・javaで
・実務っぽい内容で(←雰囲気から判断する?)
・しかしほぼほぼ丸投げ気味に「どうしたらいい?」とか問うている(←そうじゃないと「問題」の形態にならないので)
ようなのを探してみるとか…
そんなに都合よく条件に合致するようなものが存在するのか? は不明ですが,
こういう場所の質問というのは,(いかにも課題みたいなやつの存在を無視すれば)まがりなりにも実際に生じた問題であるハズなので,
アルゴリズムがどうの~的ないかにも問題として作った問題よりは,ご所望の雰囲気に近い話を見つけることができるかもしれません.
既存回答がコードを示す形でついていれば,それを参考にできる可能性もありますし,
コードという形でなくとも考え方などを述べているかもしれません.
また,なんなら回答行動をしてみてもよいでしょう.
その回答内容がひどい場合,運が良ければ上級者がボコボコにしてくれるでしょうから,結果として他者のやり方とか考え方と「照らし合わせる」に近いような経験が得られるかもしれません.
#ただし,回答やら指摘をする/している他者が「プロ」かどうかは不明.ここが難点であり注意点.
投稿2021/10/21 03:25
編集2021/10/21 03:26総合スコア11996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/21 03:30
2021/10/21 04:15 編集
2021/10/21 04:27
0
回答になるかどうかはわかりませんが、
もしもあなたがソフトウェアのプロを目指しているなら、「Javaの実務」の問題を知りたいというのは方向性が違っています。特に「データ構造とアルゴリズム」ではないものを知りたいというのはよろしくないでしょう。
プロのアメフト選手を目指す高校生が、ランニングや筋トレばかり練習しても意味がないので、実際の試合でのテクニックを知りたい、といっているようなものです。
体力のついていない人がプロのスポーツ選手になれるわけはないのです。
筋肉が裏切らないかどうかは良くわかりませんが、「データ構造とアルゴリズム」はプログラマを裏切りません。
個々のお客様が欲しいといわれるものは、実は発注してい方にも自分自身良くわかっていないことも多いです。そこをヒアリングして、質問して、提案をして外部仕様を確定するときに、内部データやインタフェースを設計するために必要なのは「データ構造とアルゴリズム」などのポケットの多さと深さです。
プログラミング言語は流行してはすたれていくものです。個別のプログラミング言語に関する知識は時代遅れになることはよくあります。新しい「データ構造とアルゴリズム」が現れることもありますが、それでも身についた「データ構造とアルゴリズム」は裏切りません。
タッチダウンを決めるファインプレーの前提は、筋トレや飯トレ、ストレッチ、ランニングで作った肉体と反射神経です。それが嫌なら趣味のスポーツで楽しくやれば良いのです。
プログラミングの世界も同じです。「データ構造とアルゴリズム」、デザインパターンなどの勉強をしたくないなら、趣味のプログラマとしてプログラミングを楽しんで下さい。
投稿2021/10/20 15:55
総合スコア24670
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
サイトや本では存在しないと思われます。
代わりに、OSSの勤怠管理や給与計算などの、概要が想定しやすい業務ソフトを探して、マニュアルや実運用にて仕様を確認して、それをソースで確認するというのはいかがでしょうか?
とりあえず、該当するものがありましたので、挙げておきます。
MosPオープンソース勤怠管理
投稿2021/10/20 14:07
総合スコア1750
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
そもそも前提を履き違えています。
仕事レベル(趣味レベルであってもですが)は『こう書けばいい』ってものではありません。
単に穴埋め問題や数学とかの問題を解くだけ……で金がもらえるのでしょうか。
そもそも企業は良くも悪くも営利目的です。
では私達には就職する以外方法はないのか。いいえ。違います。「実際に作品を作る」です。
たとえば、『あー、日付からフォルダ名を決めて作成して、その中にフォルダをまた作って、○○.txtっていうファイルを生成して…っていう処理を毎日やるけどメンドくせー』と思ったらそれがヒントです。
そう、そういう一括処理程度でもいいので実際に何か作るのです。
もちろん、PHPなりPythonなりでサイトを作るでもいいですし、Unityでゲームを作るとかでもいいです。とにかく作りたいものを作る。(他人の権利を侵害しない限り)
ただし、「○○作りたいからコードくれ」ではなく、「自分で設計し、自分でコーディングし、自分でデバッグまでする」です。まあ、できればテスト(検証)までやった方がいいですが、趣味だとそこまで手が回らないことも多いので。
なので『実際に何か作る』をオススメします。
千本ノックやらなんやらをやるよりも有意義です。
モチベーションもキープしやすいし、自分が意図した通りに動くという楽しさもあるし、
実際に最低限必要な技術(設計やデバッグ等)も身につくので。
ただ、これだけではまだ弱いと思います。
ここまでは趣味の範囲。仕事の場合はチーム開発です。
なのでチーム開発が出来ないと話になりません。
よって、こればかりは実際に就職してからでないと出来ないと思います。
学校とかでサークルとかに加入しているのでしたら、チームとして一つの作品を作るのも手です。
趣味&独学でチーム開発が出来ない人でも、Git/GitHubを利用して疑似的にチーム開発をまねることもできるようです。
参考: 【Github】一人擬似チーム開発の練習 (軽く「git 疑似 チーム開発」でggった結果)
[追記1]
千本ノックやらなんやらのようなものをやるなら、「競技プログラミング」がいいかもです。
有名なのはAtCoderですかね。他にもあるようですが。
過去問で、カテゴリ分けされている方はここですかね。
あるいは、競技プログラミングではないと思いますが、[Paizaスキルチェック]
(https://paiza.jp/challenges/info)ですかね。
ただし、このスキルチェックはネットとかで答えを聞いたり、開示したりするのは規約違反です。
(割とこの規約を無視している人が多い)
なので質問にある条件(模範解答を見たりして…等)はできません。
AtCoderも過去問については開示したりするのはOKらしいですが、試験があってそれから一週間かな? 特定期間はPaizaスキルチェックと同様に、聞く事自体がアウトになるようです。
そういう風に規約によって変わるようですが、一応こういうのもあるということで。
ただ、上記にあるように、「本来は穴埋め等をするものではない」のでお勧めはしませんが。
(それと『競技プログラミングは業務に役に立たない』とも揶揄されているようですが、それは人によるのではないかなと)
投稿2021/10/20 10:11
編集2021/10/21 10:19総合スコア4962
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/20 10:33
2021/10/20 10:37 編集
2021/10/20 10:48
2021/10/20 10:53
2021/10/21 03:05 編集
2021/10/21 08:40
2021/10/21 08:50
2021/10/21 08:53
2021/10/21 08:59
2021/10/21 09:06
2021/10/22 02:53 編集
2021/10/21 10:14
2021/10/21 10:25 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。