Git Product home page Git Product logo

freeza's Introduction

As part of my latests interviewing process, I was asked to complete a coding challenge and was asked to made it public.

This is the result of such exercise. It is my believe that it showcases my coding and architecting skills.

A few notes/considerations:

  • Why freeza? Names change often, so I give all my projects code names. Lately, I’ve been using DBZ characters.
  • For the image downloads I turned Allow arbitrary loads instead of whitelisting domains because I don’t know where those images will be coming from. I’m no reddit API expert and it exceed the scope of this exercise.
  • I did a round of testing for leaks and found none.
  • As a performance improvement, downloaded thumbnails should be stored in disk and fetched from the table view cells instead of stored in the cell’s view model. It uses too much memory this way. I judge it, again, out of the scope of this exercise.

For the bonus points:

  • Saving pictures in the picture gallery
    Since I’m explicitly asked not to implement IMGUR API I can’t obtain the image, thus, can’t save it to the picture gallery.

  • App state preservation/restoration
    Would require a bit more effort than I’m ready to put into the exercise. Would require to store all model, view models, and state of the app. Some of those may become out of sync, specially paging… In short, too complex for the chosen architecture.

  • Support iPhone 6/ 6+ screen size (hint: size classes)
    iPhone 6/ 6+ already supported with autolayout.

Original request

Your assignment is to create a simple Reddit client that shows the top 50 entries fromwww.reddit.com/top .

To do this please follow this guidelines:

- Asume the latest platform and use Swift
- Use UITableView / UICollectionView to arrange the data.
- Please refrain from using AFNetworking, instead use NSURLSession 
- Support Landscape
- Use Storyboards

The app show be able to show data from each entry like :

- Title (at its full length, so take this into account when sizing your cells)
- Author
- entry date, following a format like “x hours ago” 
- A thumbnail for those who have a picture.
- Number of comments

In addition, for those having a picture (besides the thumbnail) , please allow the user to tap on the thumbnail to be sent to the full sized picture. You don’t have to implement the IMGUR API, so just opening the URL would be OK.

Bonus points will be awarded for (in no particular order):

- Pagination support
- Saving pictures in the picture gallery
- App state preservation/restoration
- Support iPhone 6/ 6+ screen size (hint: size classes)

Note:
Please refrain from using external libraries (by way of using CocoaPods and similar), as we want to see your coding skills as much as possible :)

Some resources

Reddit API : http://www.reddit.com/dev/api
Apigee :https://apigee.com/console/reddit

freeza's People

Contributors

marianoabdala avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.