1 Rsa97
Algorithmic complexity - верхняя оценка сложности алгоритма. Например, оценка O(n) означает, что сложность линейная, то есть в простом случае проход по массиву осуществляется один раз; O(n2) - квадратичная, для каждого элемента массива проводится сравнение с каждым; Пузырьковая сортировка имеет оценку O(n*log(n)). Коротко почитать можно здесь
SELECT *
    FROM (SELECT `page_id`, max(`datetime`) AS `datetime`
              FROM `f_comments`
              WHERE `user` = {$userId}
              GROUP BY `page_id`) AS `my`
        LEFT JOIN `f_comments` AS `other` ON `other`.`page_id` = `my`.`page_id`
    WHERE `other`.`user` != {$userId}
        AND `other`.`datetime` > `my`.`datetime`
2 Rsa97
Задача лёгкая, но... это же Вас интервьюируют, а не коллективный интернет-разум.
1 Rsa97 Решение
Для входящих - развести каналы DAHDI на разные контексты и/или написать небольшой IVR, который позволит звонящему выбрать номер, с которым его надо соединить.
Для исходящих - маршрут может определяться по caller-id звонящего, в том числе и по маске:
exten => _8XXXXXXXXXX/111, 1, Dial(DAHDI/1/${EXTEN})
exten => _8XXXXXXXXXX/_2XX, 1, Dial(DAHDI/2/${EXTEN})
2 Rsa97 Решение
<?php
$rowblock = -2;
$rows = array();
foreach ($profile as $i => $user) {
    if ($i%4 == 0) {
        $rows[] = '<tr>';
        $rows[] = '<tr>';
        $rowblock += 2;
    }
    $rows[$rowblock] .= "<td><img src='/profile/user/{$user['pro_img']}'>";
    $rows[$rowblock+1] .= "<td><p>{$user['pro_fam']} {$user['pro_im']} {$user['pro_otch']}<p>{$user['dol_name']}";
}
for ($i = $i%4; $i < 3; $i++) {
    $rows[$rowblock] .= "<td>";
    $rows[$rowblock+1] .= "<td>";
}
echo "<table>",implode('', $rows),"</table>";
?>
Знать нужно:
1. Предметную область на уровне достаточном, чтобы суметь переложить задачу, выраженную в терминах предметной области, в алгоритмы, необходимые для написания программы.
2. Язык программирования, достаточно эффективный для предметной области, общие алгоритмы и структуры данных.
3. Английский язык.
4. Общие разделы прикладной математики, например, комбинаторику, теорию погрешностей...
1 Rsa97 Решение
Если посмотреть на Google Maps Javascript API, то правильнее всего будет
var query = event.latLng.toUrlValue(15);
Если заранее неизвестен хотя бы общий вид функции, то, по моему, проще дизассемблировать программу и разобраться в вычислениях, чем пытаться определить взаимозависимости между 50 параметрами. Например, для такой функции двух переменных
oohphsl.png
зависимость от y сильно проявляется только в малой области значений x в районе x=b. А ведь функция может быть и кусочно-непрерывной, например
lf3t5yz.png
Если сразу ко всем элементам определённых типов, скажем ко всем input, select и textarea - то по тэгам, если просто к разным элементам, то по классу.
По известному набору точек можно лишь предположить вид функции, например набор (-1, 0), (0, 0), (1, 0) может принадлежать как прямой y=0, так и синусоиде y=sin(πx) или полиному y=x3-x. Обычно вид функции выбирается из физической модели процесса, для которого получены данные.
2 Rsa97
Вставить вывод внутрь while
while($data = mysql_fetch_array($qr_result))
   echo "<div><h1>", $data['title'],"</h1><p>",$data['text'],"</p></div>";

И не используйте функции mysql_*, они уже год как в статусе deprecated, переходите на mysqli_* или PDO.
2 Rsa97
function monthDays(year, month) {
    return (month == 2 ? 
               ((year % 4 != 0 || 
                 (year % 100 == 0 && year % 400 != 0)) ? 28 : 29) : 
               (((month < 8 && (month & 1) == 0) ||
                 (month > 7 && (month & 1) == 1)) ? 31 : 30));
}

function dateDiff(date1, date2) {
    var years, months, days, hours, minutes, seconds;
    var y1, m1, d1, d2, dd;
    years = date2.getUTCFullYear()-(y1 = date1.getUTCFullYear());
    months = date2.getUTCMonth()-(m1 = date1.getUTCMonth());
    days = (d2 = date2.getUTCDate())-(d1 = date1.getUTCDate());
    hours = date2.getUTCHours()-date1.getUTCHours();
    minutes = date2.getUTCMinutes()-date1.getUTCMinutes();
    seconds = date2.getUTCSeconds()-date1.getUTCSeconds();
    dd = 0;
    if (seconds < 0) {
        seconds += 60;
        minutes--;
    }
    if (minutes < 0) {
        minutes += 60;
        hours--;
    }
    if (hours < 0) {
        hours += 24;
        days--;
        dd = 1;
    }
    if (days < 0) {
        days = monthDays(y1, m1)-d1+d2-dd;
        months--;
    }
    if (months < 0) {
        months += 12;
        years--;
    }
    return {years: years, months: months, days: days,
            hours: hours, minutes: minutes, seconds: seconds};
}

var d1 = new Date("10/7/1917");
var d2 = new Date('3/28/2014');
var diff = dateDiff(d1, d2);
console.log(diff.years+' лет, '+
      diff.months+' месяцев, '+
      diff.days+' дней, '+
      diff.hours+' часов, '+
      diff.minutes+' минут, '+
      diff.seconds+' секунд');
1 Rsa97
Asterisk ставится на linux, вполне подходит debian или ubuntu. Функционал, который Вы описываете, реализуется без проблем. Для преобразования из аналога нужны платы или шлюзы FXS/FXO.
Хорошие платы выпускает Digium, например здесь можно подобрать комплектацию по типу шины (PCI/PCI-Express) и количеству FXO (внешних) и FXS (внутренних) аналоговых линий. В Вашем случае, если не будете использовать факс, то подойдёт AEX801E, её потом можно расширить с помощью модулей на 1 или 4 порта FXS/FXO.
Из IP-телефонов - Cisco Linksys SPA5xx (хороши, но дороги), Siemens Gigaset с радиотрубкой, Fanvil, Grandstream и прочие довольно дешёвые, но с качеством - как повезёт.
2 Rsa97
Первое предупреждение говорит о том, что Вы, скорее всего, не проверяете валидность переданных пользователем данных. Если это не данные от пользователя, то всё ещё хуже, обращение к массиву по несуществующему индексу - ошибка в логике работы программы.
Второе и третье предупреждения, как уже сказали, - результат ошибки в mysql_query, которая вернула false вместо идентификатора ресурса, скорее всего из-за неверного запроса. Грозит чем угодно, начиная от некорректного вывода элементов сайта и заканчивая дырой с SQL-инъекцией. Кроме того, использование mysql_* грозит непереносимостью сайта на следующую версию PHP, начиная с версии 5.5.0 эта библиотека в статусе depricated.
1 Rsa97
IMHO, программирование, в первую очередь это не конкретные языки, а алгоритмы и данные. Если Вы можете построить алгоритм решения задачи и подобрать оптимальные для данного алгоритма структуры данных, то большая часть задачи уже решена. Перевести алгоритм на язык программирования (закодировать) - задача на порядок проще. По мере знакомства с конкретным языком кодирование будет проходить легче и эффективнее.
Английский выучить крайне желательно, именно на нём идёт практически вся официальная документация, на нём общается большинство разработчиков.
Полезно также освоить какой-нибудь язык низкого уровня, ассемблер или C (без плюсов), программирование на них позволяет легче понять, что скрывается за абстракциями языков высокого уровня.
3 Rsa97 Решение
Путь в таблице `table` поле `field1` определено как UNIQUE (или PRIMARY KEY).
Добавление только новых
INSERT IGNORE INTO `table` (`field1`, `field2`, `field3`) 
    VALUES (`valA1`, `valA2`, `valA3`), (`valB1`, `valB2`, `valB3`)

Добавление с заменой
INSERT INTO `table` (`field1`, `field2`, `field3`) 
    VALUES (`valA1`, `valA2`, `valA3`), (`valB1`, `valB2`, `valB3`) 
    ON DUPLICATE KEY UPDATE `field2` = VALUES(`field2`), `field3` = VALUES(`field3`)

Удаление
DELETE FROM `table` WHERE `field1` IN (`valA1`, `valB1`)
1 Rsa97 Решение
var points = [{x: 0, y: 0}, {x: 0, y: 50}, {x: 10, y: 50}, {x: 10, y: 0}];
var segLen = [];
var totalLen = 0;
for (var i = 0; i < points.length-1; i++) {
    var l = Math.sqrt((points[i+1].x-points[i].x)*(points[i+1].x-points[i].x)+
                      (points[i+1].y-points[i].y)*(points[i+1].y-points[i].y));
    segLen.push(l);
    totalLen += l;
}
var percent = 55;
var needLen = totalLen*percent/100;
for (var i = 0; i < points.length-1 && needLen > 0; i++)
    if (needLen >= segLen[i]) {
        // пройти путь points[i] - points[i+1]
        needLen -= segLen[i];
    } else {
        x = points[i].x+(points[i+1].x-points[i].x)*needLen/segLen[i];
        y = points[i].y+(points[i+1].y-points[i].y)*needLen/segLen[i];
        // пройти путь points[i] - {x, y}
        needLen = 0;
    }
Rsa97 Решение
А что вообще показывает консоль при звонке с внутреннего на внутренний телефоны? Можете показать диалплан и вывод консоли?
Проверьте параметр canreinvite в sip.conf или users.conf. Если он установлен в yes у обоих пользователей, то после первичного соединения Asterisk предлагает ip-телефонам соединиться напрямую, естественно, что запись при этом не работает.
Подключить ещё один HDD, перенести на него /var/lib/mysql и смонтировать на этот путь