面接で尋ねるべき質問

各開発者は時々仕事を怜玢し、むンタビュヌに合栌したす。 誰かが䜕か新しいこずを詊しお、もっず高い絊料をもらったり、い぀も倢芋おいた䌚瀟に就きたいず思っおいたす。 このむベントは私を通り過ぎたせんでした。



倚くの䌁業を蚪問したので、技術面接や朜圚的な同僚ずの話し合いなど、専門家の採甚が最も頻繁に行われる方法に぀いおの意芋を共有するこずにしたした。 そしお、䞀般に受け入れられおいるプロセスを改善するためのアむデアを提䟛したす。



そのため、最終的に面接は申請者を次のように探したせん。









たず第䞀に、この蚘事は、iOS開発環境で仕事を探しおいるか、䜕らかの圢でITスペシャリストの採甚に関係しおいるすべおの人に圹立ちたす。技術面接などを行いたす。



そしお猫ぞようこそ。



゚ントリヌ



私は自分自身を結果者ず考えおいるこずに泚意したい。 独孊を含む行動は、特定の目暙を達成するか、特定の問題を解決するこずを目的ずすべきです。 私の䌚瀟で面接を行うこずができたずき、私は垞に実際に圹立぀䜕かを尋ねお、「敵意」での応募者の振る舞い、圌がこのモゞュヌルたたはそのモゞュヌルを実装するために䜕をするか、特定のバグにどのように察凊するかを理解しようずしたした。



ですから、私が蚪れた12を超える非垞に倧きな組織のうち、䞭倮にオフィス、膚倧な秘曞、カヌリングアむロン、その他のパトスオフィスの属性があり、誰もが物だけを求めおいるずいう事実に感銘を受けたした。



実践ずは関係のない、掗緎されおいない100の理論。 どのように考え、タスクにアプロヌチし、暙準倖のクラッシュをどのように捉え、アプリケヌションのパフォヌマンス䜎䞋の原因を探し、開発者が毎日盎面するその他の日垞的な問題を解決するかに぀いおは誰も尋ねたせんでした。 誰もがARCずMRCの違いず、私の人生で決しお必芁ずされなかった様々な鈍さだけに興味がありたした。 䟋xibファむルの構造は、ストヌリヌボヌドファむルの構造ずどのように異なりたすか。 ファむルです。 そのような䟿利なもの。 毎日xmlを調べおいたす。



これは、圌らが私をどこにでも送っお、Habrで泣き蚀を蚀うようになったずいう意味ではありたせん。 ほずんどの堎合、いく぀かの䟋倖を陀き、すべおがうたくいきたした。 そしお、どこかで率盎な知識のギャップに遭遇した堎合、次のむンタビュヌたでに圌はすでに銖尟よく習埗しおいた。 時には、将来のリヌダヌシップずの簡単な䌚話でさえ、技術的な面接を補っおくれたした私の意芋では。



この蚘事は䞖界の䞍完党さに぀いおの普通の口実になるかもしれたせんが、最倧の利益を出し、候補者の理論的な知識のレベルだけでなく、候補者の実際の有甚性を本圓に評䟡できる質問のリストを䜜成するこずにしたした。 関心のあるトピックに぀いおは、実甚的なタスクを定匏化できたす。



ご質問



私の意芋では、「iOSでのメモリ管理はどのように機胜したすか」ずいう盎接的な質問よりも、倚くの開発者のスキルを明らかにする質問の䟋を挙げたす。 問題をすぐに解決するだけでなく、その方法がわからない堎合は、この解決策を芋぀けるこずができたす。



  1. このような画面をどのように構成したすか どのようなボトルネックがあり、どのように解決したすか







    着信情報

    Productオブゞェクトがありたす。これは、ヘッダヌにあるいく぀かの䞀般情報ず、パラメヌタヌの配列で構成されおいたす。 各パラメヌタヌは、文字列フィヌルドの名前ず倀です。 倀は最も䞀般的な文字列で、各倀は瞊棒で区切られおいたす。 たずえば、「VM 505 | BWMゞグザグ3 | SOLID REKT101。」 各倀は、「OEM仕様」のように新しい行にある必芁がありたす。



    泚意しおください

    名前ず倀の境界線が最初の単語に到達したす。 ストリップが通垞のビュヌずしお䜜成され、倀フィヌルドがラベルずしお䜜成されおいる堎合、ストリップは最初ではなく最長ワヌドで終了したす。



    レベル 䞭間以䞊。

    解決策
    たず、開発者の思考の流れを聞く必芁がありたす。 ほずんどの人はこのタスクにこだわっおおり、倚くの詳现を芋萜ずしおいたす。



    私の意芋では、最良の遞択肢はデザむナヌにやり盎しおもらうこずです。

    問題を技術的に解決する堎合、あるラベルの末尟から別のラベルの末尟たで線を匕きたす。 そのため、行は倀を持぀ラベルを正確に超えたす。 次に、背景色の属性をラベルに远加したす。 その結果、背景色はその䞋のビュヌを塗り぀ぶしたす。



    別のオプションは、単語を長さで゜ヌトし、最も長いものを䞊に䞊べ、ラベル倀の先頭に行を揃えるこずです。



    より倚くの解決策を芋぀けおください。



  2. アプリケヌションを起動した埌はどうなりたすか



    func application(_ application: UIApplication, didFinishLaunchingWithOptions...) -> Bool { DispatchQueue.global().async { Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.tickTimer), userInfo: nil, repeats: true) } return true } func tickTimer() { print("Tick-Tack") }
          
          





    私は通垞、「画像内のコヌドの問題は䜕ですか」ずいうスタむルのタスクのサポヌタヌではありたせんが、非垞に䞍快でずらえどころのないバグが発生するタむマヌずランルヌプの原則を誀解しすぎるこずがよくありたす。



    質問はタスクに再定匏化できたす。「バックグラりンドで毎分呌び出される繰り返し可胜なタむマヌを䜜成する必芁がありたす。 ティックの照準粟床は重芁ではなく、かなり䞀定の頻床です。 これを行う方法は



    レベル ゞュニア以䞊。

    解決策
    䜕も起こりたせん。 圌らが蚀うように、Ranlupはコックされおいたせん。 たた、小さなメモリリヌクが発生したすが、これはグルメ向けです。



    バックグラりンドでタむマヌを䜜成する必芁がある堎合は、実行䞭のranloopを持぀ストリヌムを遞択する必芁がありたす。 たたは、GCD甚の既補の゜リュヌションを䜿甚したす。



  3. 受信したタスク。 サヌバヌ䞊で配色が蚭定されおいるアプリケヌションを䜜成する必芁がありたす。 ぀たり、アプリケヌションは、色のセット、アむコンの䞞みの床合いなどを含む構成を受け取りたす。 そのようなアプリケヌションを䜜成する最良の方法は䜕ですか 䜕を䜿甚したすか この゜リュヌションたたはその゜リュヌションの制限は䜕ですか



    レベル ゞュニア/ミドル以䞊。



    泚意候補者がUIAppearanceに぀いお沈黙しおいるこずを神は犁じたす。 ちょうどcc *** mi ragsでこれを駆動したす特に䞭間およびオンの堎合。 ここでは、Obj-C基底クラスに぀いお、理論の小さな䜙談ずしお質問できたす。



    候補者は、UIAppearanceの動䜜に぀いお詳しく説明する必芁がないこずに泚意しおください。 圌は決しおそれを䜿甚するこずはできたせんでしたが、圌はそれが䜕であるかを知らなければなりたせん。

    解決策
    カラヌスキヌムクラスを䜜成し、UIAppearanceを䜿甚しおすべおのUI芁玠を構成したす。 カスタムビュヌの堎合、このプロトコルも実装したす。 このテヌマに関する優れた蚘事がありたす。



  4. AppStoreに参加せずにアプリケヌションを曎新する方法は たずえば、新しい画面ずロゞックを远加したす。 そのような゜リュヌションの制限は䜕ですか どちらの堎合が良いですか このメカニズムが本圓に必芁になるのはい぀ですか



    レベル シニア。

    解決策
    䞊玚者向けのタスクは解決策なしに進みたす。 経隓を積んでください、玳士。



  5. テヌブルを持぀アプリケヌションがありたす。 スクロヌル䞭、定期的に軜いブレヌキがかかりたす。 テスタヌは明確なパタヌンを明らかにしたせんでしたが、問題は定期的に発生したす。 あちこちで、䞍快な遅れが発生したす。 圌を捕たえる方法は 䜕に泚意したすか



    レベル 䞭間以䞊。

    解決策
    阻害の原因は次のずおりです。

    • メむンスレッドのオヌバヌロヌド。
    • プロセス内のむンスタンスセル。 テヌブルが耇数のタむプのセルで構成されおいる堎合、キュヌに必芁なセルがなければ、最初に䜜成されたす。これにはリ゜ヌスが必芁です。 特にペン先から解凍するずき。

      か぀お、圌はlibを䜜成したした。これにより、スクロヌルするずきにゞャンプしないように、すべおのセルを事前に䜜成できたす。
    • 描画、高さの蚈算、および再利甚されたリ゜ヌスに関するすべお。 この点を100閉じた驚くべき研究がありたす。




  6. レルムによる質問。 同じチャット他の䟋を䜿甚できたすを䜿甚するアプリケヌションがありたす。この堎合、テヌブルには日付たたはその他のオプションの圢匏でいく぀かの区切り蚘号がありたす。 セクションに分割する最も生産的な方法は䜕ですか オプションは䜕ですか



    レベル 䞭間以䞊。

  7. CoreDataに関する質問。 同じチャットのアプリケヌションがありたす。 メッセヌゞは、バックグラりンドスレッドの1぀の゜ケットから送信されたす。 受信したメッセヌゞをテヌブルに远加する必芁がありたす。 どうする オプションは䜕ですか あなたはどんな困難に盎面するこずができたすか



    レベル ゞュニア/ミドル以䞊。

  8. 画面があり、その入力はサヌバヌぞのいく぀かの芁求に䟝存したす。 ぀たり、コンテンツはすべお完了したずきにのみ衚瀺される必芁がありたす。 たずえば、VKontakteペヌゞ。 ナヌザヌに関する情報、壁からのメッセヌゞ、写真の最初のストリヌムが読み蟌たれるたで、進行状況むンゞケヌタヌが回転したす。 ロゞックをどのように構築したすか



    レベル ゞュニア以䞊。

    泚意ここでは、特にgcdグルヌプを理解し、Operation Queueのタスクを同期する必芁性を匷調したす。 候補者が、ある決定ず別の決定の違いが䜕であるかをただ䌝えおいれば、玠晎らしいこずです。

    解決策
    ディスパッチグルヌプ、同期操䜜。



  9. 問題がありたした。 隣のチヌムの開発者が駆け぀けお助けを求めおきたした。リリヌスでアプリケヌションがクラッシュし始めたしたが、デバッグでは問題なく動䜜したす。 どのように間違いを芋぀けたすか 䜕だろう



    レベル 䞭間以䞊。



    泚意候補者が結果に集䞭するこずが重芁です。 問題を修正するずいう事実であり、原因の怜玢ではありたせん。 たず、「OK、Google、そしお実際には䜕もクラッシュしなかった瞬間から䜕が倉わったのか」ず尋ねる必芁がありたす。そしお、゚キサむティングなデバッグプロセスを開始したす。



    なぜそれがずおも重芁なのかプロセスには人がいたすが、結果がありたす。 プロセス開発者は䌚瀟のお金を䜿うだけです。これは、些现でないバグを芋぀けるずきに特に顕著です。 圌ら開発者は、独自の胜力を享受し、䞀瞬の海をさらけ出し、コンパむラのクラッシュず゚ラヌに関する蚘事を読み、疑わしいコヌドを削陀するだけで十分だったプロファむラヌに没頭したす。 これは、プロファむラヌずブレヌクを䜿甚する必芁がないずいう意味ではありたせん。 これを行う目的を理解する必芁がありたす。

    解決策
    最初に、出発地を蚈算する必芁がありたす。 倚くの堎合、疑わしいコヌドが衚面にあり、怜玢を絞り蟌む必芁がありたす。

    デバッグが必芁な堎合は、モゞュヌル党䜓の最適化+高速を蚭定し、クラッシュを確認したすSwiftの堎合。 90の確率でデバッグで再珟されたす。 高床なデバッグは意味がありたせん。

    モゞュヌル党䜓の最適化のみを詊みるこずができたす。



  10. アプリケヌションには、長いサむクルで倚数の操䜜を実行する特定のモゞュヌルがありたす。 ある時点でクラッシュが発生し、アプリケヌションが終了するだけです。 1行しか出力されない堎合でも、問題は残りたした。 䟋ずしおコヌドを瀺したすが、実際には、操䜜ははるかに耇雑でリッチであり、出発はより高速です。



     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { for index in 0...1000000 { let string = NSString(format: "test + %d", index) print(string) } return true }
          
          





    䜕だろう それを治す方法は



    レベル 䞭間以䞊。



    泚意メモリ管理の原則を理解する。 少なくずも䞀般的に。

    質問からの状況は非垞にたれであり、タスクは完党に折りたたたれた眲名者にのみ䜿甚されるべきであり、他の誰もが保持/解攟/保持カりントず保持サヌクルの存圚に぀いお知る必芁があるず思いたす。

    解決策
    ポむントはautoreleasepoolです。 独自のプヌルを䜜成するか、自動解攟されおいないオブゞェクトを䜿甚しお凊理されたす。



  11. 少しクラシック。 アプリケヌションのカレンダヌクラスを䜜成する6月病棟のコヌドレビュヌを実斜するず、次のコヌドが芋぀かりたす。



     protocol CalendarDelegateProtocol { func didSelect(date: Date) } public class Calendar: UIView { var delegate: CalendarDelegateProtocol! ... func didReceiveTouchForDate(date: Date) { self.delegate.didSelect(date: date) print("Did touch: \(date)") } }
          
          





    didReceiveTouchForDate-特定の日付がクリックされたずきに呌び出される内郚カレンダヌメ゜ッド。 あなたの意芋では倧䞈倫ですか



    泚意しおください倚くの問題がありたす。ほずんどすべおの行を掘り䞋げるこずができたす。 申請者がより詳现に芋るほど、より良いです。



    レベル ゞュニア以䞊。

    解決策
     //   'Protocol'.   'CalendarDelegate' protocol CalendarDelegateProtocol { //  ?  .   optional. func didSelect(date: Date) } //  public   ?      . public class Calendar: UIView { //  weak?    ':class'  . // delegate    force-unwrapped var delegate: CalendarDelegateProtocol! ... //    .  Swift 3  : didReceiveTouch(date:) //       func didReceiveTouchForDate(date: Date) { //    . self.delegate.didSelect(date: date) //  .     print("Did touch: \(date)") } }
          
          







  12. テスタヌは、アプリケヌションをプッシュするバグがiOS 10でのみ発生し、iOS 9では発生しないこずを発芋したした。どのように修正したすか 䜕が問題なのでしょうか



    同じシリヌズの別の問題プッシュは、アプリケヌションをデバむスに盎接むンストヌルするずきに発生したすが、Testflight / Crashlytics / HockeyAppからではありたせん。 それず䞀緒に暮らすには



    泚意申請者が問題の正確な内容にすぐに答えられない堎合は、ラップトップを枡しお解決策を芋぀けるこずを提案できたす。 ラップトップに耇数のブラりザヌが同時にむンストヌルされおいる堎合は、問題ありたせん。 ロシア語たたは英語で、どの怜玢゚ンゞンで怜玢を奜むか、ク゚リの䜜成方法などを理解できたす。



    レベル 䞭間以䞊。

    解決策
    おそらく、通知は開発蚌明曞ずずもにのみ送信されたす。 申請者がどのように解決策を暡玢するかにもっず泚意を払う必芁がありたす。



  13. 1次元の文字列配列があり、そこからデヌタがテヌブルに衚瀺されたす。 この堎合、配列は倖郚のどこからでも倉曎できたす。 配列の倉曎に応じおテヌブルのデヌタを曎新する方法は たずえば、オブゞェクトが配列に远加された堎合、新しい行がテヌブルに衚瀺されたす。



    レベル ゞュニア以䞊。

    解決策
    KVO 完党にクリヌンな゜リュヌションが必芁な堎合でも、いく぀かのメ゜ッドを鳎らすこずができたす。



  14. 自動レむアりトを䜿甚しお、ストヌリヌボヌドでSkypeの認蚌画面を䜜成しおいたす。 それはずおも起こりたした。 すべおがシンプルです-正方圢のロゎ、その䞋のテキストボックスずボタン。









    あなたはクヌルで、すべおを完了したしたが、ここでデザむナヌは、暪向きではロゎは䞊ではなく右にあるべきだず蚀っおいたす。 どうする



    レベル ゞュニア以䞊。

    解決策
    サむズクラス



  15. 特定のサむズの2぀の画像を䞊䞋に䞊べおスクロヌルビュヌを䜜成し、画面の端から30pxでむンデントする必芁がありたす。 定数ずなるものをシヌトに描きたす。









    泚候補者は、scrollViewのコンテンツサむズの決定方法を理解しおいたすか そしお、圌がむンセットに぀いお芚えおいれば、それは䞀般的に玠晎らしいです。 コンテンツをむンデントせずにそのサむズ党䜓にスクロヌルし、画面の端からの距離はマヌゞンを介しお行うこずをお勧めしたす。

    レベル ゞュニア以䞊。



質問は䟋ずしお䞎えられおいたす。 おもしろい堎合は、もう䞀床確認したす。



UPD1ほずんどの問題に察する゜リュヌションを远加したした。 存圚しない堎合、タスクは簡単にグヌグル怜玢たたは個別に解決されたす。



私のメッセヌゞは次のずおりです-実甚的なタスクを䜿甚しおください。 適切なものが芋぀からなかった堎合は、自分で䜜成しおください。 癟科事兞ではなく、䞖界のすべおを知っおいるだけでなく、仕事をする専門家を雇いたす。 さらに、数秒でGoogleで芋぀けるこずができるものを忘れないでください。 䞻なこずは、䜕を探すべきかを理解するこずです。



シャヌロック・ホヌムズ氏が蚀ったように、必芁な道具だけが私の屋根裏郚屋にあるべきです。







目に芋えない悪



しかし、疑わしい質問だけが問題ではありたせん。 成功した候補者でさえ怖がらせるこずができる別の芁因がありたす。 これは無瀌、,慢、たたはrog慢な態床です。 そしお、私は女の子の時間や重芁な幹郚の話ではありたせん。 そしお、将来の同僚に぀いお。



むンタビュヌを受けた倚くの堎所では、技術面接は、人事やガむドからのオブザヌバヌの立ち䌚いなしに行われたす。 党䜓ずしお䜕が自然なのか、甚語の単語を理解しおいない人が、質問ず回答のスタむルで退屈な䌚話をするのに1時間も費やさなければならないのはなぜですか



しかし、なぜ。 倚くの開発者は、むンタビュヌを自分自身を䞻匵する機䌚ず考えおいたす。 そしお知識のテストは、候補者の屈蟱の最も普通の奇跡に倉わり、資栌に関係なく、貧しい仲間のストレスに远加されたす。 たずえ圌がどんな質問にうたく答えおも。 私は同僚やむンタビュヌの䞡方で倚くの堎所でこの皮の行動を芋おきたした。



xkcdには、錻が膚らむずいうトピックに関する玠晎らしい写真がありたす。

画像






しかし、これはすべお、颚倉わりな人だけが開発に行くこずを意味するわけではありたせん。 技術者に亀枉、むンタビュヌの実斜、敬意のある察話の構築を単に教える人はいたせん。 そしお、単玔に囲たれ、時には詰たる人に䌚うこずも珍しくありたせん。 経営陣は、「この男が私たちに合っおいるかどうかに関係なく、この男のレベルをチェックしおください」ずいう蚀葉で圌らを容赊なく投げ蟌みたす。



ただし、暙準、蚭蚈、たたは芁件はありたせん。 フィヌドバックがたったくない状態で、党員が理解ず態床の範囲でむンタビュヌを実斜したす。 結局のずころ、このフィヌドバックを提䟛できるのは誰ですか リヌダヌシップ/人事および候補者。 前者はプロセスに参加せず、䜕も蚀うこずができず、候補者は確かにそれたでではありたせん。 それらが受け入れられた堎合、すべおが正垞です。 そうでない堎合、さらに話をする意味は䜕ですか



これらすべおを䌁業ず各開発者に個別に䌝えたいず思いたす。面接の方法だけでなく、郚䞋や同僚ずのコミュニケヌション方法にも泚意を払っおください。 発がん性の態床は、申請者だけでなく瀺すこずができたす。

誰かにいく぀かのむンタビュヌに参加しおもらい、フィヌドバックをお願いしたす。 候補者自身に、それが䞍快であるか䜕か他のものであるかどうか、埌でどのように行ったかを尋ねたす。 これはコヌドレビュヌのようなもので、ここでは恥ずべきこずは䜕もありたせん。 あなたはスペシャリストずしおのみ良くなりたす。



敬意を衚するコミュニケヌションは、技術分野の暙準であるべきです。



おわりに



この蚘事が少なくずも1぀の䌚瀟の状況を倉えるなら、私の努力は無駄ではありたせんでした。



最も圹に立぀質問を芋぀けようずしたした。 リストをさらに補充する必芁がある堎合は、次回はこれに別の出版物を捧げたす。



スペシャリストを確認するためにむンタビュヌで出した質問やタスクを共有しおいただければ玠晎らしいこずです。 結局、レベルを理解するのに5分しか必芁ずせず、それぞれ1時間半挬けたす。



そしお圌らが蚀うように、お互いを尊重したす。 玠材の知識の深さに関係なく、これは他人を芋䞋す理由ではありたせん。 アヌメン



All Articles