ПоискПочтаКартыМаркетНовостиСловариБлогиВидеоКартинки
Войти

Работа в Яндексе

Разработчик мобильных приложений для iOS

Мобильные сервисы — активно развивающееся направление в Яндексе. В числе прочего оно включает в себя разработку приложений для мобильных устройств Apple на базе iOS.

Нам нужен специалист c опытом коммерческой разработки для iOS, понимающий особенности этой платформы. Вам предстоит решать интересные алгоритмические и графические задачи. Созданные вами программы будут установлены на iPhone, iPad и iPod touch сотен тысяч пользователей.

Обязательно:

  • знание Objective-C;

  • опыт коммерческой разработки iOS-приложений не менее года;

  • опыт параллельного и многопоточного программирования;

  • опыт разработки сетевых приложений как на уровне сокетов, так и на уровне HTTP.

Желательно:

  • опыт разработки на других языках (например, C, C++, Java, Ruby, Python) и платформах (Mac, Android, Windows Phone 7);

  • опыт размещения собственного приложения в App Store;

  • знание распределенных систем контроля версий (Git);

  • опыт работы с bug tracking system;

  • опыт работы в команде.

Условия

    Работа в московском или минском офисе Яндекса полный рабочий день.

    Подробнее об условиях работы в Яндексе

    Продемонстрируйте свои знания

     

    Перечислите все проблемы, которые вы видите в данном коде:

    //файл Foo.h
    #import <Cocoa/Cocoa.h>
    
    @interface Foo : NSObject
    {
       NSString* str;
       static int i = 0;
    }
    
    - (NSString*) str;
    @end
    
    //Foo.m
    #import "Foo.h"
    
    @implementation
    - (id) init
    {
       return [self initWithStr:"number:" someInt:6];
    }
    
    - (id) initWithStr:(NSString*)theStr someInt:(int)value
    {
       self = [super init];
       str = [NSString stringWithFormat:@"%@%d", theStr, value];
       return self;
    }
    
    - (NSString*) str
    {
       return str;
    }
    
    - (void) setStr:(NSString*)theStr
    {
       str = theStr;
    }
    @end
    
    //main.m
    #import <Cocoa/Cocoa.h>
    #import "Foo.h"
    
    int main(int argc, char *argv[])
    {
       Foo objA;
       NSLog([objA str]);
       [objA setStr:@"hello world!"];
       NSLog([objA str]);
    
       Foo* objB = [[Foo alloc] init];
       Foo* objC = [[Foo alloc] initWithStr:@"My magic number:" value:265];
       objB = objC;
    
       NSLog([objB str]);
    
       [objA release];
       [objB release];
       [objC release];
    
       return 0;
    }
    

    В чём разница между NSDictionary и NSMutableDictionary? Для чего они используются? В чём, на ваш взгляд, их ключевое отличие от CFDictionary и CFMutableDictionary?


    Что распечатает NSLog в результате запуска этой программы? Почему?

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    	[window makeKeyAndVisible];
    
    	[self performSelectorInBackground:@selector(launchTimer) withObject:nil];
        
    	return YES;
    }
    
    - (void)launchTimer {
    	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    	NSTimeInterval timeInterval = 3.0;
    	
    	self.timer = [NSTimer scheduledTimerWithTimeInterval:timeInterval
            target:self
            selector:@selector(timerFired:) 
            userInfo:[NSNumber numberWithDouble:timeInterval] repeats:NO];
    
    	[pool release];
    }
    
    - (void)timerFired:(NSTimer *)aTimer {
    	NSLog(@"User info: %@", [aTimer userInfo]);
    }
    

    Данное приложение создано в Xcode при помощи шаблона Window-based Application. Также считаем, что self.timer — это @property (nonatomic, retain) NSTimer * timer.


    Есть класс Foo, у которого объявлен только для чтения публичный property string.

    #import <Foundation/Foundation.h>
    
    @interface Foo : NSObject {
    @private
    	NSString * string_;
    }
    
    @property (nonatomic, readonly) NSString * string;
    
    - (void)bar;
    
    @end
    
    @implementation Foo
    
    @synthesize string = string_;
    
    - (void)bar {
    	self.string = nil;
    }
    
    - (void)dealloc {
    	[string release];
    	[super dealloc];
    }
    
    @end
    

    Каким образом нужно модифицировать реализацию класса Foo, чтобы можно было использовать конструкцию self.string = nil, не определяя при этом метод -[Foo setString:] и не делая property string доступным на изменение снаружи?


    Есть некое приложение для iOS, написанное на Objective-C. Необходимо узнать, какие интерфейсы присутствуют в приложении и как приложение выглядит на уровне кода. Ваши действия?


    Укажите ссылки на свои open source проекты, либо на те open source проекты, в которых вы принимали участие.


    Расскажите нам о себе

     
    Пожалуйста, укажите, где вы живёте

    Пожалуйста, укажите код города

     
    ОтправитьОчистить

     

     

    Нас уже больше 3500 человек

    Но интересных задач гораздо больше, чем нас

    Коротко о Яндексе

    Все, что вы хотели бы знать о компании перед тем, как идти к нам работать

    Стажировка

    В результате вы сможете узнать Яндекс изнутри и, если вам понравится, устроиться на постоянную работу

    Памятка

    Кто такой менеджер проектов Яндекса и как им стать

     

    Если вы опытный специалист и хотели бы работать в Яндексе, но не нашли для себя подходящей вакансии, не отчаивайтесь, а напишите нам. Вдруг мы договоримся?

    ruRu