PHP Developers Wanted

We're looking for a new PHP Developer to join our in-house team

Come and join our well established UK team as a PHP Web Developer, building custom websites and web-based software applications for commercial clients and contributing to our own internal projects.
We’ve been around since 1998, building and maintaining systems of all kinds across a variety of sectors, meaning every project that you work on will provide its own unique challenges.
We maintain a friendly and relaxed office environment and provide you with all the tools you’ll need to plan, develop, test and deploy products of the highest quality.

The Skills

The essential technical skills we're looking for:

  • Good knowledge of PHP, HTML and CSS

The desirable technical skills we're looking for:

  • Knowledge of version control systems such as Git or SVN
  • Knowledge of MySQL & JQuery

The Person

The type of person we’re looking for:

  • Good verbal and written communication
  • Ability to build strong relationships with both colleagues & clients
  • Ability to handle a varied workload and maintain quality output

Commercial experience is not a requirement however you will be expected to demonstrate examples of personal or commercial web projects that you have produced or contributed to.

The Location

You will be working from our offices near Warrington.

The Details

Position: Permanent, Full-time
Hours: We work 37.5 hours per week and provide flexible start or finish times where possible
Holidays: 20 paid days per year plus bank holidays. 1 additional day for every year of service (max 30 days in total)
Starting Salary: £17,000 - £28,000 depending on experience
Structured payrise scheme
Free parking
Free tea, coffee, soft drinks and snacks
Employee perks including cinema ticket and retail discounts
Regular, optional social outings


All applicants must be eligible to work in the UK.


How to Apply

We have devised a short PHP test (details below) which replicates the kind of problem that you may face on a daily basis.

To apply for the role please send an email to recruitment [at] hallnet.co.uk, explaining:
- Why you think you would be a good fit within our development team
- Why you want to work for Hallnet. and please attach a .TXT file that demonstrates your solution to the PHP test.

Please note that we DO NOT require any assistance from recruitment agencies. We do pretty well by ourselves.


PHP Test

To complete the task, you shouldn't need anything more than a basic text editor and an environment in which you can run PHP (either command line or web-based).
The purpose of the task is to give us some idea of your logic skills and also to set a minimum level of competency before the interview, so don't worry about how fancy or efficient the code is, the most important thing is that it works.

The Problem

We have a list of countries which we would like to split onto multiple pages.
The task is to write a function which will take a list of items and then return an array containing a list of pages and an offset and item count for each page. Initially we want a MINIMUM of 30 items on each page but the function should allow them to change this and still produce the correct result.
Critically we require each page to contain the same number of items (or as close as possible) so if there were 61 items, rather than splitting onto 3 pages with 30, 30 and 1 we would want the list split into 2 pages with 31 and 30 items.

Complete the following script:

<?php
$item_list = array( "Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Anguilla", "Antigua & Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belau (Palau)", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia Herzegovina", "Botswana", "Brazil", "British Indian Ocean", "British Virgin Islands", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Rep.", "Chad", "Chile", "China (PR)", "Christmas Island", "Cocos Island", "Colombia", "Comoros", "Congo", "Congo Dem. Rep.", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Antarctic", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guam", "Guatemala", "Guinea", "Guinea Bissau", "Guyana", "Haiti", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Irish Republic", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kirghizstan/Kyrgyzstan", "Kiribati", "Korea (DPR)", "Korea (Republic of)", "Kuwait", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", "Macedonia (FYR)", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar (Burma)", "Namibia", "Nauru Island", "Nepal", "Netherland Antilles", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger Republic", "Nigeria", "Norfolk Island", "Northern Mariana Isl", "Norway", "Oman", "Pakistan", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Island", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "Samoa (American)", "San Marino", "Sao Tome & Principe", "Saudi Arabia", "Senegal", "Seychelles", "Sierra Leone", "Singapore", "Slovak Republic", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia", "Spain", "Sri Lanka", "St Kitts & Nevis", "St Helena", "St Lucia", "St Pierre & Miquelon", "St Vincent & Grenadines", "Sudan", "Suriname", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Togo", "Tonga", "Trinidad & Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks & Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "Uruguay", "USA", "Uzbekistan", "Vanuatu", "Vatican City State", "Venezuela", "Vietnam", "Virgin Islands (USA)", "Wallis & Futuna Islands", "Western Samoa", "Yemen", "Zambia", "Zimbabwe");

$minimum_items_per_page = 30;

$page_list = paginate_items($item_list, $minimum_items_per_page);

print_r($page_list);

//------------------------------------------------------------

function paginate_items($item_list, $minimum_items_per_page){

    // Your code goes here.

}
?>

The output should be as follows:

Array
(
    [0] => Array
        (
            [offset] => 0
            [limit] => 33
        )

    [1] => Array
        (
            [offset] => 33
            [limit] => 33
        )

    [2] => Array
        (
            [offset] => 66
            [limit] => 32
        )

    [3] => Array
        (
            [offset] => 98
            [limit] => 32
        )

    [4] => Array
        (
            [offset] => 130
            [limit] => 32
        )

    [5] => Array
        (
            [offset] => 162
            [limit] => 32
        )

    [6] => Array
        (
            [offset] => 194
            [limit] => 32
        )

)