2005-10-28
_ 始動決定
長らくお休みしていましたが、
採用通知を頂き12/1より始動することとなりました。
新しい勤務地は品川近辺です。
来月中に今年2回目の引っ越しをしようと思います。
コンシューマ向け製品のプログラマになる予定です。
今までと畑も違うし、自分の力量に不安もありますが、
なんとか食らいついていきたいと思います。
なにより、やってみかった仕事なので、楽しんで自分の力を発揮したいです。
_ とある採用試験の形
長文になります。
採用試験の技術面接で、面白い問題が出たので紹介します。
上記のリンクページ(アメリカのベンチャー企業の採用に関する考察)に準拠した問題群ですね。
■1.ラーメン屋の待ち時間を、パラメータを決めて、モデルを作って求めてください。
ホワイトボードに向かいながら、
「やっぱラーメンは山頭火ですよねー、東京にもありますよねー。」
と場をつないで時間を稼ぐ。(笑)
いろいろ試行錯誤してたらそれらしい式ができました。
待ち時間:Tw 待ってる人の数:Nw 席の数:Ns 平均食事時間:Tm
Nw < (Ns / Tw) × Tm
になれば自分の番ですね。
右辺は平均食事時間だけ待てば(Tm=Twなら)店内のお客さんが1回転します、という式かな。
あとは、5分間観察して出てくる人の数を数えるとか、ですかね。
面接なので、答えもありますがどうやって取り組むかもポイントかなと。
できた後に次元があっているか、簡単な検算をできるかもポイントか。
終わってから知ったのですが、
これはATMの待ち行列問題としてこの業界では有名なんだそうです。
私はまったく知りませんでしたが。(^^;)
#tmaedaさんら多数の方から助言を頂きました。
■2.配列a[n]をx番目から前と後ろでインプレスに入れ替えるコードを書いてください。
(配列と同じ大きさの補助記憶は使わずに。)
例:abcdefg → efgabcd
まずは、要求の確認ですね。結果がどうなればいいのか、条件は何か。
簡単な解法は、最右を最左へシフト、繰り返し、って感じですね。
#これに気が付くのに2時間かかりました。面接内には絶対無理 だわ。。。
for ( j = n - x ; j < n ; j++ ){ // x回ループ
for ( i = n-1 ; i > 0 ; i-- ){ // 最右を最左へシフトするループ
tmp = a[i]; // 以下3行で隣同士を入れ替え
a[i] = a[i-1];
a[i-1] = tmp;
}
}
abcdefg -> gabcdef -> fgabcde ,,,
てな具合でしょうか。
これだと処理量がO(n^2)なので、次はO(n)でできないかとか考えるとポイント高い。
面接なので、適便助け船が入るでしょう。
#私はそこまでたどり着けませんでしたが。。。
ちなみに、O(n)の解法は、一度掴んだものを正しい場所に入れ、
入れ先にあったものを掴んで、それをまた正しい場所に入れ、、、
の繰り返しです。
i番目の要素の移動先は以下のようになります。
i > x のとき : i - x
i <= x のとき : n - x + i
移動済みの最初の場所まで戻ってきたら、次の要素から移動開始。
全部でn回移動させたら完成です。
#sheさんと一緒に考えていたらO(n)でできました。さすがsheさん。
■3.オブジェクト指向ってなんですか?
私は「ものに責任を持たせて独立させる」とかなんとか。
その後、助け船がやってきて、
「△△なパターンはOOですかね?」
「短工期開発にOOはどうやって貢献できますかね?」
「分割すると結合部のテストが増えて大変じゃないですかね?」
とかなんとか質問がいろいろ飛んできました。
助け船に当たって溺れそうな勢いです。(^^;)
■総論
全体を振り返ると、
面接で緊張している場でどこまで考えられるか、がポイントかと。
なんで、十分に場を和ませておくことが大切ですね。
#それでも大変だということがよく分かりましたが。
採用側は、どんな人材を採りたいか絞るのも大切ですね。
上記のページでも書いている通り、これはプログラマをターゲットにしています。
潜在能力を重視して見ているようですが、
大規模システムであれば特定のシステム明るい人の方が戦力になりそうですし、
潜在能力としても仕様を適切に聞き込んで策定できるかや、社交性が重視されるでしょう。
受験側は、会社がどんな人材を欲しがっているか予測して
はったりストーリーを組み立てる必要がありますね。
即戦力になる技術と潜在的な基礎力、
織り混ぜながら弱点をかばいつつ戦う必要がありそれなりに大変です。
昨今、新卒者でも即戦力レベルに達しないと採用しない企業が多いといいます。
ここでいう即戦力とは、知識というよりは理解力などの基礎力でしょう。
学生さんも大変そうですが、
言葉にまどわされずに適切にはったりつつ頑張って欲しいです。
_ 群馬県民の日
説明しよう!
10/28は群馬県民の日で群馬の官公庁、企業は軒並み休日なのである。
この日は東京ディスニーランドの特別パスポートが群馬県民にだけ発売され、
仕事に勤しむ他県の人々を尻目に遊び回れるという素敵な秋の1日なのだ。
7年も住んでなかったからすっかり忘れてたよ。
某G高専は県立の学校ではなかったので、
この日は休みじゃなくて悔しかったなぁ。(笑)
2006-10-28 薄曇りの土曜日、秋の陽は釣瓶落とし
_ [camera] EXLIMの秀逸な機能
先日、あしざーさんに教えてもらったデジカメの機能を
久々にすごいなーと思ったので紹介します。
CASIOのEXLIMに搭載されている「アングル補正機能」で、
斜めから撮影した画を正面から写したように補正してくれる機能です。
セミナーなどで画面の正面に座れないことも多いですし、
他にもホワイトボードに書いた内容をメモしたりするときに、
正面から撮影すると光が反射して見えなくなってしまうのも防げます。
あまのりょーさんも言ってましたが、
これをソフトではなくてカメラ本体で処理してくれるのがポイントだと思います。
技術的には超難関というわけでは無いと思うのですが、
デジカメでメモをとるという習慣が一般的になりつつある今日に、
こういう機能があるのは秀逸だと思いました。
でも、CASIOのページを見ても全然宣伝してないのですよね。。。
最新機種のEX-Z1000のページにもFAQのページにちょっと書いてあるだけでした。
2007-10-28 外に出ると雲1つない青空、台風一過の洗濯日和
_ [mac] iPod touch 開発環境作成
世間(twitterから見える範囲)がLeopard一色に染まってる中、
周回遅れでiPhone/iPodTouchの開発環境を作ってました。(^^ゞ
昨日からごにょごにょやってようやくHelloWorldがビルドできました。
手順:
1.iPodにアプリをインストール可能にする。(Jailbreak)
2.2061:Maxオデッセイさんのページを参考に開発環境インストール。
3.”A Simpler "Hello World" for the iPhone”のページを見て
makefile, mainapp.m, SampleApp.h, SampleApp.m を作成。
4.makefileの先頭部分(CC=,LD=,LDFLAGS=)ってとこをMaxオデッセイさんページ版で書き換え。
5.↑のファイルを同じフォルダに置いてmake。
6.Info.plistを作成。添付ファイル参照。
CFBundleExecutableは実行ファイル名(SampleApp)。
CFBundleIdentifierは一意な値を付けるのにドメイン名+アプリ名とかにする。
7.作りたいアプリ名でフォルダを作成
中にInfo.plistとビルドでできたSampleAppをコピー。
8.フォルダを作りたいアプリ名.appにリネーム。
9.scpとかでiPodの/Applications/へ転送
10.sshとかで実行権限付加。chmod -R a+x /SampleApp.appとか。
11.ボタン2つ長押しでiPod再起動
ビルド環境を作るのが大変ではまりまくったのですが、
(ldからarmなんて知らん!って言われたり)
最初からもう1度落ち着いてやったらビルドできるように。謎。
あと、MacPortsから開発環境作ろうとしたら
Error: Unable to open port: invalid command name "destroot.violate_mtree"
って言われるのですがこれって私のローカルの問題???
ともあれ動いてよかったです。久々に「おおー」と自己感動。
ということで大変なので早くSDK出してください。2月か。遠いな。
Leopardでまた開発環境構築しないと。ちゃんとビルドできるといいのだけど。
最後に、参考にさせて頂いた数々のページの著者さんに感謝します。
とても勉強になりました。m(_ _)m
2008-10-28
_ [book] われら高専パワー全開
こんな高専生の血を沸き立たせるタイトルの本があったのか!
全国の高専卒業生が自分のキャリアを語り、
現役生に向けたアドバイスを送るという内容。
ものづくり、IT、宇宙、材料、科学、教育、環境、建築・・・と分野は多岐に渡る。
自分で企業した社長さんや大学の教授、有名な商品に携わった人などなど豪華。
ポケモンのデザイナーさんも高専出身なのか。オセロの世界大会優勝者なんて方も。
12月の高専カンファレンスにきてくださるjig.jpの福野さんも書いてますね。
おもしろいのは商船高専の方々の話。
5年生のときに1年間世界を航海するのだそうだ。
そのときの先生の言葉がぐっときた。
「君たちは自分の力で太平洋を横断したのだ。」
高専関係者のみなさん、
この本を読んで熱い想いを補給してみてはいかがでしょう。
高専関係以外の方にもぜひ読んでもらいたい1冊です。
2014-10-28
_ Yosemite Ruby2.1.4 install error
昨晩Ruby2.1.4が出てたのでruby-build&rbenvでインストールしようとしたらコンパイルエラーになった。
BUILD FAILED (OS X 10.10 using ruby-build 20140926)
...
checking host system type... x86_64-apple-darwin14.0.0
checking target system type... x86_64-apple-darwin14.0.0
checking for gcc-4.2... gcc-4.2
couldn't understand kern.osversion `14.0.0'
checking for gcc... (cached) gcc-4.2
checking whether the C compiler works... no
configure: error: in `/var/folders/cr/7xtxcnzn2ts4b4k2cw4f6gnc0000gn/T/ruby-build.20141028075949.1371/ruby-2.1.4':
configure: error: C compiler cannot create executables
See `config.log' for more details
このバージョンのRubyの問題じゃなくて、Yosemite絡みの問題だろう(Yosemiteで初ビルド)とぐぐったら CC=/usr/bin/gcc ruby-install ruby 2.1.4
でいけるとのこと。インストールできてめでたしめでたし。
ほっと一息ついたら、Ruby界の平和を守る @hsbt さんからこんな助言が飛んできた。
apple-gcc42 が入っているなら uninstall するのが正解です https://twitter.com/hsbt/status/526878366868066304
apple-gcc42とな。
brew list したら確かに入ってたので、brew uninstall apple-gcc42 して、rbenv un/install 2.1.4 したら成功。つまりさっきの CC環境変数は複数のgccのうち、apple-gcc42 でない方(XCode?)を指定してたんだろう。
めでたしめでたし。(しばたさんありがとう!)
追記(2014.10.29):
以下にも遭遇したので一緒にメモしておく。
libv8 gem build error
- $ brew install v8
- $ gem install libv8 -v '3.16.14.3' -- --with-system-v8
ただし、これより先にtherubyracer gem をいれておかないとtherubyracerのビルドでこけることがある。その場合は一度libv8 gem をuninstall してから therubyracer → libv8 の順で入れる。
nokogiri build error libiconv がみつからないとのエラー
- $ brew install libiconv
- $ gem install nokogiri -v '1.6.2.1' -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14/
_ タカノ [就職おめでとうございます! それで、いい夢を見られたのかもしれないですね〜〜 コンシューマ向け製品のプログラマ?私..]
_ いが [>タカノさん ありがとうございます! コンシューマ向けってのは、お店で売っている個人向けの製品ですね。 デジカメとか..]