RECRUIT

【新卒・中途採用】サーバーサイドエンジニア応募者向けの模試

《ご案内》
サーバーサイドエンジニア応募者向けの模試」は2023年5月より新しいものになりました。
次のURLをご参照ください。
https://qiita.com/taruhachi/items/56085228fe17537cc0d8

サーバーサイドエンジニア向けコーディング試験において、出題される問題と評価ポイントをまとめております。試験の参考にご活用ください。

対象者

サーバーサイドエンジニアの試験を受ける新卒・中途求職者

このような方におすすめ

  • どのような問題が出題されるのかわからない
  • 試験の評価ポイントがわからない

注意点

  • 実際の試験内容とは異なります。
  • 実際の試験の雰囲気を感じてもらうためのものです。
  • 応募者は、模試にご回答いただく必要はありません。

採用情報

新卒採用に関する採用情報は下記をご覧ください。
https://hrmos.co/pages/yumemi/jobs?jobType=NWGR

中途採用に関する採用情報は下記をご覧ください。
https://hrmos.co/pages/yumemi/jobs/0000005
https://hrmos.co/pages/yumemi/jobs/0000519


評価観点

このコーディング試験では、難易度の高い問題に対してどう回答するかのエレガントさは、そこまで重視しません。
基本的に、業務で使われるコードをどう記載していくかが評価ポイントとして高くなります。
弊社の考える業務コードの例としては、例えば以下の特徴を備えているコードとなります。

  • 一度書いたコードは本人の手を離れる
  • 中長期に渡って使い続けられる可能性がある
  • コードのメンテナンス時や、障害発生時に常に仕様書とセットで入手可能とは限らない
  • 要求仕様の一部が今後変更される可能性はある
  • 通常、プログラムは単体では利用されない
    • 入力されるデータも他のプログラムにより生成される
    • データ形式が将来的に変わる可能性がある

上記を踏まえて例えば『要求仕様中の一文により通常行うべきチェックや例外処理を省略する』ようなケースにおいてはその旨を記載しておく必要があると考えます。

但し、問題文に記載された要求仕様を満たすという前提で、自分はこのコード中で何を重視したかを別途コメントやアピールポイントに記載し、コードがそれを体現していた場合におきましては、 その観点で評価します。


・この問題文からは使い捨てのコードであると判断し、とにかく実装速度を優先しました。
・実行時のステップ数が少なくなることを最優先としています。
・実行時のメモリ使用量を最小化することを優先しました。

 

コーディング試験の例

実際の設問とは異なります

Webブラウザ上で動作するコーディング試験環境で、CLIプログラムを作成していただきます。
制限時間は200分です。
解答する言語は以下の中から選ぶことができます。

C, C++, Java, JavaScript, PHP, Python3, Perl, Ruby, Go, Kotlin, Rust

※コーディング試験環境にはtrackを使用しています

概要

あなたは、あるe-sports大会で集められたゲームのプレイログをもとに、ランキング上位10人を算出することになりました。

このランキングを算出するCLIプログラムの開発をしてください。

ゲームのプレイログの構造

  • プレイログは3列のCSVファイルとして提供されます。
  • 1行目は、ヘッダとしてcreate_timestamp,player_id,scoreと記載されています。
  • プレイログは2行目以降に記録されており、1行目のヘッダーの各項目に対応したデータが記載されています。
  • player_idはゲームにエントリしているプレイヤーごとに一つづつ払い出された個別のIDで、このIDが異なると別のプレイヤーと見做します。
  • player_idの構成要素はアルファベットの大文字、小文字、および数字の0-9のみとなります。
  • scoreは正の整数となります。
  • 同一のプレイヤーが複数回のプレイを実施したときには、複数行のログが記録されます。
  • 対象のプレイログ全体は数千万行以上に肥大化することがあります。
  • プレイヤーの総数は1万人を超えることはありません。

ゲームのプレイログサンプル

create_timestamp,player_id,score
2021/01/01 12:00,player0001,12345
2021/01/02 13:00,player0002,10000
2021/01/03 12:00,player0021,100
2021/01/04 12:10,player0031,200
2021/01/05 12:00,player0041,300

CLI

結果を標準出力に表示するCLIアプリケーションとして実装してください。

入力ルール

  • CLIアプリケーションは1つの引数を受け取る
  • 上記の引数は処理対象のゲームプレイログを示すファイル名である

出力ルール

  • 各プレイヤーにおける、全てのプレイの平均点を利用したランキングを算出して、その上位10名を出力してください。
  • 出力は3列のCSV形式とする
  • 1行目はヘッダとして、rank,player_id,mean_scoreを出力する
  • 上記ヘッダに準じて2列目以降を出力する
  • rankの項目には平均スコア上位から1,2,3,…の数字が割り当てられる
  • 平均スコアは四捨五入で整数で丸められる
  • 同点の平均スコアのプレイヤーが居た場合、rankingの数字は同じ数字が割り当てられる
  • 同点の平均スコアのプレイヤーが居た場合において、10名以上のランキングが作られる事がある

入出力例

$ ./get_ranking game_score_log.csv
rank,player_id,mean_score
1,player0001,10000
1,player0002,10000
3,player0003,9000
4,player0004,7000
5,player0005,1000
6,player0006,999
7,player0007,998
8,player0008,997
9,player0009,990
9,player0010,990
9,player0011,990
9,player0012,990

 

SQL問題の例

サンプルで作成された複数のテーブルの親子関係に気をつけていただきながら、以下の操作をするSQLなどを作成していただきます。

  • 指定されたデータの抽出
  • データ集約を含むデータ抽出
  • データの更新・追加・削除作業など

制限時間は90分です。

Recommend 関連情報