Slide 1

Slide 1 text

Webエンジニアのキャリア形 成と競技プログラミング 〜コーディングテストを乗り越えて(実務経験1年編)〜 2021/04/18 twitter:@zaki_chemtech

Slide 2

Slide 2 text

 自己紹介 . . ・ A P I . . ・

Slide 3

Slide 3 text

 もくじ ・(Web業界の)エンジニア採用スキーム ・競技プログラミングとは? ・実際に解いてみよう! ・まとめ

Slide 4

Slide 4 text

 (Web業界の)エンジニア採用スキーム(1) 書 類 応 募 技 術 面 接 技術責 任者 人 物 面 接 役員 カ ル チ ャ | マ ッ チ 面 談 メンバー達 (イケてる企業の?)採用スキーム例 ス キ ル チ ェ ッ ク 課題 b a c k c h e c k

Slide 5

Slide 5 text

 (Web業界の)エンジニア採用スキーム(1) 書 類 応 募 技 術 面 接 技術責 任者 人 物 面 接 役員 カ ル チ ャ | マ ッ チ 面 談 メンバー達 (イケてる企業の?)採用スキーム例 発表者のスキルチェックの 突破率は(一応)100%!! ス キ ル チ ェ ッ ク 課題 b a c k c h e c k

Slide 6

Slide 6 text

 (Web業界の)エンジニア採用スキーム(2) スキルチェックの内容 注:n1データなので参考までに ....

Slide 7

Slide 7 text

 (Web業界の)エンジニア採用スキーム(3) コーディングテストの内容 実行すると題意に則したアウトプットを出力するプログラムの作成 例 ・HackerRank(競技プログラミング形式) ・PRベースで提出(会計処理を自動化、データスクレイピング, ect...) 予想注目点 ・題意(要件)を正しく把握できているか ・課題対処への速さ(設計 実装 テストのサイクル速度) ・コードの綺麗さ(オブジェクト指向、デザインパターン、命名規則) ・(PRの作り方、計算量 ect...)

Slide 8

Slide 8 text

 (Web業界の)エンジニア採用スキーム(4) あれ??  コーディングテストって  めちゃくちゃ競プロer有利じゃね? ス キ ル チ ェ ッ ク に て 競 プ ロ e r は

Slide 9

Slide 9 text

 競技プログラミングとは?(1) 競技プログラミングでは、参加者全員に同一の課題が(テキストベースで) 出題され、より早く与えられた要求を満足するプログラムを正確に記述す ることを競う。 コンピュータサイエンスや数学の知識を必要とする問題が多く、新卒学生 の採用活動などに使われることもある (wiki引用:https://ja.wikipedia.org/wiki/競技プログラミング) 競技プログラミングってなんぞ?

Slide 10

Slide 10 text

 競技プログラミングとは?(2) 競プロする事によるエンジニアのメリット ・要件把握の正確性         (文書の読解力) ・設計実装テスト提出までの速度アップ ・(チームコンテスト出場時)可読性を考えたコーディング ・実装コードの計算回数の把握 ・コーナーケースを意識した実装 ・テストシナリオ作成能力      (バグの発見のため) つまり競プロは、 実務やコーディングテストに求められる能力に相関性アリ!

Slide 11

Slide 11 text

 競技プログラミングとは?(3) なるほど、よくわからん という事で 実際にやってみよう!!

Slide 12

Slide 12 text

 実際に解いてみよう!(1) (引用:https://atcoder.jp/contests/abs/tasks/abc085_c)

Slide 13

Slide 13 text

 実際に解いてみよう!(2) 計算回数:10^7~10^8以下までOK 10000*a + 5000*b + 1000*c = Y a + b + c = N

Slide 14

Slide 14 text

とりあえずa b cに適当な値を入 れて探索してみますか! ⬇ コード化!!

Slide 15

Slide 15 text

 実際に解いてみよう!(3) コード化 by Python

Slide 16

Slide 16 text

提出!!

Slide 17

Slide 17 text

 実際に解いてみよう!(4) 実行時間が2秒超えとる!! (計算量が多過ぎた...)

Slide 18

Slide 18 text

 実際に解いてみよう!(5) 計算量が多かったコード by Python aとbが決まればcは計算でだせそうだから ループが一個少なくて済みそう!! c = N - a - b N(max 2000)が3重ループ全てに関わっ てるのが悪そう? ※2秒で出来る計算量は約10^7〜10^8

Slide 19

Slide 19 text

リファクタ!!

Slide 20

Slide 20 text

 実際に解いてみよう!(6) 一つループを減らせた!! 計算量改善したコード by Python

Slide 21

Slide 21 text

再度提出!!

Slide 22

Slide 22 text

 実際に解いてみよう!(7)

Slide 23

Slide 23 text

 まとめ ・転職時にスキルチェックがある場合は  コーディングテストがほぼ8割 ・競プロとコーディングテストは求められる能力に  相関性がかなりある(と思う!!) ・(要件定義以降のフェーズでは)実務でも競プロは  役立ちそう  ※もちろん他の要素も実務では求められる

Slide 24

Slide 24 text

みんなで競プロやろうぜ!! AtCoder Beginner Contest(ABC) でお待ちしてます 土日の21時から100分間やってるよ! 詳しくはこちら⬇ https://atcoder.jp/?lang=ja