Faits : A. A._, né en 1954, a travaillé en qualité de serveur, d'aide de cuisine et de nettoyeur. Dans le cadre d'un programme d'emploi temporaire accompli chez B._, entreprise d'insertion, il s'est occupé de revalorisation de matériel électronique (certificat de travail du 11 juillet 2011). Le 2 septembre 2011, il s'est annoncé à l'assurance-invalidité, en invoquant des problèmes neurologiques. L'Office de l'assurance-invalidité du canton de Genève (ci-après: l'office AI) a recueilli en particulier les avis des neurologues C._, médecin traitant (rapports des 8 novembre et 20 décembre 2011), et D._, qu'il avait mandaté en qualité d'expert (rapport du 19 juillet 2013). Par décision du 27 novembre 2013, l'office AI a fixé le taux d'invalidité de l'assuré à 10 % et rejeté la demande. B. A._ a déféré cette décision à la Cour de justice de la République et canton de Genève, Chambre des assurances sociales, en concluant principalement à son annulation et à l'octroi d'une rente d'invalidité, subsidiairement à des mesures professionnelles. La Cour de justice a ordonné une expertise qu'elle a confiée au docteur E._, neurologue; l'expert a déposé son rapport le 26 décembre 2014. Par jugement du 23 mars 2015, la juridiction cantonale a admis partiellement le recours, annulé la décision du 27 novembre 2013, reconnu le droit de l'assuré à une rente entière d'invalidité à compter du 1 er janvier 2013 et condamné l'office AI aux dépens par 4'000 fr. C. L'office AI interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation. Il conclut d'une part à la confirmation de sa décision du 27 novembre 2013, et d'autre part à ce que la cause lui soit renvoyée pour examen du droit aux prestations pour la période postérieure à l'expertise du docteur E._. L'assuré intimé conclut au rejet du recours. Il sollicite l'octroi de l'assistance judiciaire. L'Office fédéral des assurances sociales a renoncé à se déterminer.