Java SE8 Silver合格体験記

会社からの要求でJava SE8 Silver試験を受け合格しましたので、出題内容、難易度、勉強の仕方などの知識を共有したいと思います。

 

【出題内容】

試験で問われる内容は大きく以下の3つ。(細かい出題範囲はOracleのHPを見てね)

ちなみにAPIの使用は下のリンクのサイトから調べることができます。

http://docs.oracle.com/javase/jp/8/docs/api/

 

もちろん、上記に比べてJava独自のルールがあるのでそこもしっかり理解しないと正解できない問題が結構出ます。(変数に使ってよい文字列や省略をどこまで許すかなど)

 

【難易度】

あくまで僕の考えですが、プログラミング未経験者には少し難しいかなあといった印象です。独学だと、参考書を読む段階で心が折れるのではないでしょうか。プログラミングとは何て面倒くさいんだとおもってしまうかもしれません。

それでも合格ラインは正答率約66%以上なので、完全に理解できなくとも基本的な知識を抑えておけば十分合格が可能だと思います。

 

プログラミング経験者の方であれば、細かいルールとAPIの仕様を理解すれば余裕で合格できるかと思います。オブジェクト指向に慣れていない方だと少しクラスやインタフェースなどの概念に苦しむかもしれませんが。。。

 

【勉強の仕方】

僕は通称「黒本」と呼ばれる問題集をひたすら解きました。この参考書はとてもよく研究されているようで、本番試験にほとんどそのままの問題が数問出題されました。

アマゾンのリンクは以下。

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Silver-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-808/dp/4844339931

 

ただ、時々解説が親切でないことがあります。そういう時はJava APIの仕様を確認するか、グーグル先生に聞くのがてっとりばやいと思います。大体の解答がどこかにあります。みんな躓くポイントは一緒です。

僕は黒本のやりこみだけで正答率約97%をとることが出来ました。

 

オブジェクト指向

僕自身、オブジェクト指向プログラミングは未経験でした。Cで開発していたときにC++の機能をちょいちょいつまみ食いしていた程度で、最初はオブジェクト指向の意味がわかりませんでした。

なんのためにクラスを作ったり、継承やらなんやらルールを増やすんだろうかと思っていました。しかし、多人数での開発やソースコードの保守性を考えるとオブジェクト指向のよさがわかってきました。

詳しくは説明しませんが、オブジェクト指向ってなんのためにあるのかわからない!ってときは多人数のチームで一つの大きなプログラムを作る事や、使ったプログラムを再利用することを考えてみてください。何かわかるかもしれません。

 

【出題形式】

テストはテストセンターのPCで受けることになるでしょう。選択肢が与えられて正解を一つ、もしくは複数選択する形式です。

出題数は77問、試験時間は150分とまあまあのボリュームです。時間が足りなくなることはないんじゃないでしょうか。僕は90分くらい残して解答を終えました。

問題は解答後も見直すことができるので、わからない問題はサクサク飛ばしてもよいでしょう。

また、問題はPCでうけることになります。試験対策本などで紙のソースコードを追うことに慣れてしまっている人は注意が必要だと思います。

 

以上だらだらと書いてしまいましたが、みなさんの勉強の役に立てれば幸いです。

シューカツ GD

とある企業のグループディスカッションを受けてきました。

 

四人班で私以外周りは某有名国立大生。

この時点でまじかよーくそ頭いいんだろうなと思ってしまいました。

 

 

部屋には試験官1人が座っていて、ホワイトボード、メモ用紙、名札代わりの紙が用意されていました。

 

その後簡単なルール説明の後、お題が発表され即議論という形でした。議論に使える時間は45分、その後発表という流れです。

お題は「新幹線を世界で新たに開業するにはどこがよいか。」というものでした。

僕たちのグル―プは

目的設定~そのために必要な条件~条件の優先度づけ

というプロセスで具体的な地域を絞り込もうとしたのですが地理の知識が乏しくつまってしまいました。

また、議論の最中で始めに設定した目的を見失いがちな意見になってしまい、議論終了後に社員さんからその点を指摘されました。

 

結果がまだでていないのでなんとも言えませんがGDそのものに関しては

議論に対しきちんとしたフィードバックをもらえたので有意義に感じました。

 

そして「GDは思ったより難しい」と感じました。

特に普段使っている言葉が相手に簡単に通じない。できるだけ万人にわかりやすい言葉でしゃべる必要がある。特に最近は研究室のメンバーと主に会話してしていたので知らず知らずのうちに専門用語を使ってしまっていた。

 

ただ、できるだけある程度やればなれるだろうなとも感じました。普段から議論的なものはやっているし。

 

これから就活本番の人、がんばりましょう!!

 

 

アルゴリズムとはなんぞや

アルゴリズムってやつについて書いてみます.
wikipediaさんによると...

アルゴリズム(英: algorithm)とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。

アルゴリズム - Wikipedia

なんだかわかるようなわからないような解説ですね.wikipedia先生っていつもそう.

アルゴリズムの"定義"はカッチリと数学的にできるんですが,カッチリやろうと思うと計算モデルがどうだとか計算可能性がどうだとかなんだか難しい話になるっぽいのでここではやりません.


ここではアルゴリズムという概念について簡単に説明していこうと思います.

細かい部分で厳密性を欠いた表現をするかもしれませんが,ここでは難しい議論はしたくないのでできるだけスルーしてもらえると助かります.


僕が誰かに「アルゴリズムとは?」と聞かれたらきっと


「問題を解くための計算手順」


と答えると思います.


抽象的すぎてピンとこないかもしれませんね.
現実の問題では,料理のレシピなんかもアルゴリズムと言えるでしょう.
上の回答にあてはめると,


「問題(料理)を解く(作る)ための計算(調理)手順」


といった具合です.
アルゴリズムってのは実は,
料理を作るための調理手順のことなんです!(違
cookpadさんなんかはアルゴリズムの宝庫ってことですね.

ですが,ここではあくまで
情報科学の意味でのアルゴリズムについてお話をしていきます.
つまりは「料理がしたい!」だとか「彼女が欲しい!」だとかの
コンピュータさんじゃあどうしようもない問題は考えません.

すると,
「じゃあ“問題”ってなんやねん!」
「"解く"ってなんやねん!」
「"計算"ってなんやねん!」
って話になってきます.


ここでは,"問題"というのは
「入力に対して出力(解)があり,数学的に記述できるもの.」
としましょう.


問題を“解く”とは,
「問題の入力が与えられたとき,有限時間内に正しく問題の出力(解)を導くこと.」
としましょう.


"計算"とは,
「コンピュータによって処理ができるもの.」
としましょう.(これはちょっと間違いかも...)

まだ抽象的すぎてよくわかりませんね.
では例を挙げながら考えていきましょう.
※ 本記事の問題の入力での変数はすべて整数値であるとします.


問題1(BMI計算問題)
入力 : Aさんの体重 w [kg], 身長 h [m]
出力 : AさんのBMI

BMIの計算式は皆さんご存知の通り(?)
BMI = (体重[kg]) ÷ (身長[m])^2
でしたね!
よって以下のアルゴリズム1-1は
正しくBMIを計算してることがわかります.

アルゴリズム1-1 :

h' ← h*h;\\
BMI ← w/h';\\
{\bf output}\, BMI;

また,途中の変数を使わずに
アルゴリズム1-2のようにも書けます.

アルゴリズム1-2 :

{\bf output}\, w/(h*h);

正しいアルゴリズムは一通りとは限りません.
違う理論をもとに設計をしたり計算の順番を入れ替えたり,
いくらでも違うものは存在し得ます.

アルゴリズムが正しいのは大前提として,
アルゴリズムの性能」だとか「わかりやすさ」
なんてものも重要になってきます.(ここでは書きませんが...)


次のような Yes/No を問う問題も考えられます.
問題2 (偶奇判定問題)
入力 : x
出力 : xが偶数ならYes, 奇数ならNo

アルゴリズム2 :

{\bf if}\ (x\ {\bf mod}\ 2 = 0)\ {\bf then}\\
\quad {\bf output}\ “Yes”;\\
{\bf else}\\
\quad {\bf output}\ “No”;\\

アルゴリズム中で if だの else だの書いてますね.
これは条件分岐が必要なときに登場します.
意味は...そのまんまです(投げやり)


さて,次のようなものはどうでしょう?
問題(?) :
入力 : Aさん
出力 : Aさんは太っているか否か

これは問題とは言えないですね.
数学的に記述できていないので,コンピュータさんが困ります.
コンピュータさんは定性的な説明や判断基準では何もできません.
常に数学的・定量的な記述が必要になります.


問題3 :
入力 : Aさんの体重 w [kg],身長 h [m]
出力 : AさんのBMIが25以上か否か

これなら良さそうです.

アルゴリズム3 :

{\bf if} (w/(h*h) ≥ 25) {\bf then}\\
\quad {\bf output}\ “Yes”;\\
{\bf else}\\
\quad {\bf output}\ “No";\\


問題1のように「これの値を計算して出力してくれ」っていう問題を 計算問題 と呼び,問題2,3のように「これはYesですか?Noですか?どっちですか?」っていう問題を 判定問題 と呼びます.そのまんまですね.問題は大きく上の2つに分類できます.



あれ,数学的な記述がされた問題ならば
どんな問題でもアルゴリズムが書けるのでは!?!?
アルゴリズムさん最強wwwwwコンピュータバンザイ!!!


と思われた方もいらっしゃるかもしれませんが,実は,
アルゴリズムが書けない(正確には,計算が不可能な)問題が存在します.

計算できないとは,なんのこっちゃ.
具体的にどんな問題があるのかってのは次回以降で書こうと思います.




まとめ :
アルゴリズムとは...

数学的に記述された問題を,コンピュータさんに,
有限時間内で正しく解いてもらうための計算手順のこと.

20160206

今日は麻雀のお話です.
私はたまに オンライン対戦麻雀 天鳳 で麻雀を打って遊んでいます.

その中で,「ここどう打つのが正解やねん...」って思う箇所が出てくるので,
それについて,メモついでに連々と書いていこうと思います.
(どなたでも気軽にコメントください...!)

この場面.

f:id:jongmah:20160206180356p:plain

南3局2本場
自分は北家で3着 : 17900点持ち
2着の下家(親)との点差 : -13800点
4着の上家との点差 : +12700点
対面がカンチャンを仕掛けて西の対子落とし,
早くて安いクイタンの一向聴くらいな雰囲気です.


しかしここで1000点や2000点の和了はあまり嬉しくありません.
まだ序盤なのでここからどう手が広がるかもわかりません.
このときの気持ちとしては,

  1. 3つの対子と1つの暗刻を使って対々和七対子が狙えそう
  2. ツモによってはピンズの一気通貫もあるかもしれない
  3. タンヤオを確定させるのは難しそう

こんな感じでした.

[※ 2016/02/06 追記] 一気通貫は遠いので考えなくていい,という意見をいただきました.確かに...

天鳳の牌理( http://tenhou.net/2/?q=4445m3566799p233s ) によると
打6pが最も効率がよいようですが,上記の理由より打6pはなさそうです.

となると打3p, 2s, 5m あたりが考えられそうなのですが,
一通の可能性を残そうと思うと打3pは早過ぎるかなと思います.

私は,危険そうな5mを先に切って4m暗刻をメンツに確定させる
という手を選びましたが,おそらく間違ってそうです.

赤5mツモやタンヤオ移行の可能性も考慮すると,5mは残して
打2sが正解だったような気がします.
5mを残してると後々対面に危なくなる気もしますが,
この序盤でそんなこと考えてたら和了れる手も和了れないです.



序盤はとにかく前のめりに打っていこうと思いました.



「その考えはおかしい!」とか「自分ならこう打つ!」だとかの
意見がありましたらお気軽にコメントしてください!

おしまい

テニス=硬式テニスだけではない!!

 

こんにちは!!

「テニス」に関し記事を書こうと思います。

 

テニスといえば、 

最近の錦織圭選手の活躍で最も関心が高まっている競技の一つではないかと思います。先日の全豪オープンでは惜しくもベスト8に留まりましたが、そもそも日本人選手がベスト8に残っている、という事は数年前には考えられなかったことです。

錦織選手の活躍により硬式テニス人口はこれからどんどん増えていくのでしょう。

 

しかし!!日本の皆さんにはもう一つの「テニス」があることを是非知ってもらいたいです。

 

軟式テニスです!!そう!!あのゴムボールをパカパカ打つ、地味に思われがちなスポーツです。

かくいう私は軟式テニス経験者ですが、世間一般のイメージがあまりよろしくないことに悲しい思いをしています。

 

そこで軟式テニスとはなにか??その魅力とは??

について語ることでイメージの改善につなげることができれば、、、と思います。

 

まず軟式テニスとは??

現在では「ソフトテニス」とも呼ばれ、その発祥の地はなんと「日本」です。まじです!

基本的なルールは硬式テニスと変わりませんが、使う「ボール」、「ラケット」が違います。ボールはあのお上品なフェルトでできた蛍光色のものではなく、真っ白いゴムボールです。そのお値段はなんと一個約400~500円!と硬式テニスよりお高くなっております…(何故なんだ…今度調べてみます…)

 

次にその魅力とは??

これに関しては

・アグレッシブな応援

・スピーディーな試合展開

などがあげられると思います。以下に詳しく述べます。

 

「アグレッシブな応援」について

ソフトテニスの団体戦(お互いのチームが複数ペアを出して試合を行い、総合的に勝利数の多いほうが勝ちとなる試合形式。要するにチーム同士の戦いです)では

互いのチームが一致団結して味方を応援するため、特に熱い展開の試合では双方から叫び声のような応援が飛び交います。

高校生の試合などでは1ポイント、1プレー毎にチーム一人一人が渾身のガッツポーズを決めている光景なども見受けられます。

(しかしこういった過度な?応援に対し品がない。マナーが悪い。といった声があるのも事実です…)

 

「スピーディーな試合展開」について

ソフトテニスの試合は硬式に比べはるかに「短い」時間で決着が着きます。なんと最も一般的な試合形式(7Gマッチ)では最短で16ポイント

で決着が着いてしまいます。

国際試合や全日本選手権の決勝ですら最短で20ポイントで決着が着きます。

 

そのため「1ポイントの重みが半端ない」です。格下相手での試合でも結構ハラハラさせられることがあり、非常にスリリングです。

応援で全力になるのもその辺が関係していると思います。

短時間で自分のパフォーマンスを引き出すのは思ったより難しく、そのため技術だけでなく精神面での重要さがかなりの大きいスポーツだといえるのではないでしょうか。

 

ソフトテニスは「スリルあふれる試合」「チーム同士の全力勝負」による魅力的なスポーツであることが少しでも伝われば幸いです。

 

 

まだまだ語りつくせてない感じがありますが、今日はこの辺で終わりとします。

最後まで読んで下さった方ありがとうございました。