范师兄的面经

新浪
php spl autoload file_get_contents 判断两个数组$a、$b tp 和Smarty的区别 linux命令查看Apache打开的端口 apache和nginx区别 ...
京东
笔试大题:

  1. 输入整数n,求m,m>9,m中各个数位的乘积=n的最小整数; 如n=36,m=49;
  2. 二叉树前序遍历的非递归实现(本文的总结)
  3. 求第n个数,这个序列满足(2^i)*(3^j)*(5^k),前7个为:2,3,4,5,6,8,10...
整体不是特别难,除了第三道附加算法题时间没来得及做,其他两道和选择题自我感觉还不错
一面:
  • PHP有多线程么(没有,但可以通过其他方式实现),怎样理解PHP
  • 对于静态页面文件,是放在ngnix端,还是Server端(ngnix处理静态页面性能比apache要快三倍以上,所以直接放在ngnix)
  • php写接口,通信方式,socket、http通信实现
  • 两台计算机如何通信,浏览器输入url后,一直到页面呈现,中间服务器都经过了哪些流程
  • 用php做客户端接口应注意什么问题(数据加密、json传输等)
  • json格式数据有哪些特点 (并不能保证安全,对于所有语言都是统一的key-value处理规范)
  • 验证码安全,google破解其他站点
  • md5怎样逆置,其他加密方式的加密、逆置原理
  • 验 证码的原理。验证码的实现原理,如果验证码是存储在服务器session,那如果正在输入的时候,服务器与客户端断开连接,又连上去(session已经 失效),提交后怎样判断验证码正确性(在客户端js中构造和服务器端相同的sessionid,提交时与服务器端sessionid匹配)
  • 数据库主键怎样理解,它是索引么
  • 建立数据库应该注意哪些(表冗余、主键、外键、索引、字段...)
  • 数据库事务是什么
  • 如果正在下单状态,将用户银行卡状态修改为正在使用状态1,下一步付款、修改订单状态时,突然断网怎么办 (面试官期待答案:不是马上回滚,而是在这个地方尝试重试几次,若还不成功就rollback)
  • 请求量比较大时应从哪方面优化提高性能(缓存、页面静态化、sql优化、表结构、水平分割、垂直分割)
  • Linux常用命令 (文件操作命令、vim命令、系统命令)
  • Javascript和jquery的区别
  • 学校活动、个人性格、工作地域调整、薪资等...

腾讯后台开发面
【范师兄的面经】 2.core文件是什么,有什么用?
答:程序崩溃以后,会把最后的栈信息存在core文件里,方便程序员了解程序崩溃前最后的栈信息。
追问:如果程序core了,但没产生core问价,是何原因?
答:没有打开core文件生成的开关。ulimit -c unlimit
追问:不用core文件,程序出了问题产生信号是否知道?
答:当时蒙了,现在回想起来,就是内核向进程发信号嘛。没答出来。
3.共享内存,不使用同步方式,是否可以安全读写?
答:这一题答偏了,不知怎么扯到fork上去了。这一题应该是不行,共享内存属于临界区,应该要同步,否则两个进程同时操作一个内存区就出问题了。可以使用读写锁来同步。
4.fork后,子进程保留了父进程的什么?
答:子进程的内存区是父进程的副本,堆栈等都会继承过来,还有打开的文件描述符等。其实还有很多,比如实际用户ID,有效用户ID,当前工作目录,存储映射等等。
5.共享内存除了文件映射还有什么方式?
答:共享内存对象映射。
追问:二者有什么区别?
答:不知道。
6.tcp怎么实现流量控制?
答:对端告知窗口大小。本端传递的数据量小于窗口大小。(更好的说法是告诉对端本地的窗口的大小,对端传递的数据量必须小于该窗口)
追问:怎么告知窗口大小?
答:在ACK的报文里。
7.编程题(没搞出来,诶~)
问:一个超长字符串表示的十进制数(大于2^32),转化为十六进制的字符串?
赶集网面试总结
面试渠道:小伙伴 @蔚然 内推技术实习岗 面试时间:8月14日 下午13:30
第一面: 面试方式:2对1(技术leader和前端负责人) 过程叙述: 问的问题很广,php方面、算法数据结构、设计模式、前端、数据库、Linux等。 内容大概有:
  1. 当字符串为null时,isset和empty的区别
  2. ==和===的区别
  3. PHP魔术方法有哪些,作用是什么
  4. 用过哪些数组函数,array_merge、in_array的作用
  5. 常见的排序算法和查找算法有哪些,数据结构的树、链表、堆、栈,是自己实现过还是只看过
  6. 说一下快速排序的最好和最坏时间复杂度 (nlognn的平方)
  7. 简述快速排序的原理面试前最好先熟悉一下常用算法和数据结构,另外不可忽略了时间复杂度
  8. 二分查找的原理和时间复杂度(logn)时间复杂度第一次回答错了
  9. 你熟悉的设计模式有哪些,手写一个设计模式(当时我写的是单例)
  10. 数据库中的索引有哪些,数据库引擎区别(MyIsam和InnoDB)
  11. 叙述联合索引,和主键的区别(把主键和索引搞混了,囧..)
  12. 数据库表优化方法,建表的注意事项和原则,常见数据库字段类型
  13. sql注入有哪些,如何有效防止
  14. 用过哪些缓存技术,thinkphp的缓存是局部缓存 还是完全缓存
  15. Cookie和Session区别
  16. 禁用Cookie后,Session还可以用吗,有什么解决方案
  17. 常用Linux命令(我当时从文件操作和vim两方面回答)
  18. 是否了解ngnix,和apache作用相同
  19. 常见apache配置是否熟悉,apache中的rewrite作用
  20. php开发过程中用过哪些编译器(eclipse、phpstrom、zend,一般的sublimeText)
  21. 对前端的html、css、js是否熟悉,用过哪些前端框架

第一面结束后问了有什么问题,我问了公司开发过程中使用的技术架构(lnmp)。然后然我等一下,当时心情比较放松,因为感觉除了数据库方面回答不太流 利,其他都还可以。在会议室正纳闷接下来会发生什么,一会儿来了一个气场十足的大牛。接下来的面试有点紧张...
第二面: 面试方式:1对1 过程叙述: 问的问题很深,感觉平时做项目太偏应用,底层的知识比较欠缺 内容大概有:
  1. 解释了一下为什么大学是五年制(囧,每次回答这个问题都要从很古老的一段伤心往事说起)
  2. 平时学习的渠道(我说刚开始基础是从书上学习,后面都是项目驱动,然后人直接说了项目驱动的弊端...)
  3. 索引的最左前缀原则 (有点熟悉,好像在哪看到过,但是真想不起来了)
  4. 为什么要用ThinkPHP,和直接写php比有哪些优缺点
  5. 是否阅读过tp源码
  6. 既然学习thinkphp,解释一下tp中的hook机制吧(只在新版本更新时候看过,不太熟悉啊,紧张...)
  7. 什么是reset ful (呃...这是什么,真心不知道)
  8. 解释一下php中的fastcgi,那cgi是什么,cgi和fastcgi的区别 (不太熟悉,唉,硬着头皮上吧)
  9. 刚才第一面问过你设计模式了,什么是共享模式 (晕啊,设计模式那么多,好紧张,想不起来了)
  10. 解释一下PHP的namespace
  11. 你平时开发用的php版本是什么 (顿时好轻松,5.5啊)
  12. 你之前做过产品经理,你是怎样理解产品和技术的,你想做技术还是产品 (啊,这个好,论述题,看我的)
  13. 平时工作强度比较高可以承受吗(当然,我们这有正常周末的)

聊了一些比较轻松的话题,后面才知道这一面是故意这么难的,考验技术深入的程度,真是惭愧,顿时觉得会的东西好少,确实最近复习方式和时间安排都有点 乱,还有一些其他的事情让人整个状态比较浮躁,也比较紧张,不再状态,回去好好恶补一下。最后大概说了一下实习薪资是XXXX比较少,我说不介意,然后说 如果我这边都ok的话,回去等hr电话。
面试过程总共将近两个小时,结束后又和小伙伴聊了一会儿。大概是下午4点多回到家的,没想到赶集很有效率,我还在思考下午面试的怎样,刚到家没一会儿 hr妹纸就打电话过来了,一个比较好听的声音说面试通过,问了什么时候入职。其实我没打算工作,还想着面试完再去其他地方转转,增长一下面试技巧。先答应 着吧,人说下周一和周三什么时候可以入职,我说周三,再容我休息几天嘛。接下来回复offer,心情比较纠结,到底去不去,想想现在也没什么事,就先实习 着再继续准备校招吧。准备入职材料。



百度 笔试题型 百度技术岗的笔试题,是每个大部门自己出题的,所以,每年笔试完都会有数套笔试题在网上流传。
考察面主要包括:
1. 基本要求
语言(主要是C/C++)、计组原理、操作系统原理、计算机网络。如指针运算、字节对齐、函数调用栈帧结构、内存管理、进程调度、网络协议七层模型等。通常以问答题形式出现。
2. 数据结构及算法
查 找(典型如二分查找)、排序(典型如快排、外排)、树(典型如2叉树的前/中/后序遍历、trie树)。人品好的话,是题目明确告诉你"请写出2叉树中序 遍历的算法伪码并分析复杂度",这种题目还算简单。不走运的话,题目相对抽象,比如"给定一个存放几亿个整数值的文件,设计一种算法,在满足xx空间复杂 度或xx时间复杂度的前提下,对这些整数做xx处理",这种题目是比较难对付的。所以,大家要有心理准备。这部分通常是写算法伪码。
3. 系统设计题
文字描述一段实际的业务场景,要求设计一个系统,能多快好省地实现xxx功能。
这种题目比较发散,通常,大部分校招学生对这类设计题都不可能有啥经验。基本是凭借自己对系统,尤其是计算机组成原理或操作系统的理解,触类旁通,自由发挥,做到有理有据,逻辑严谨即可。这类题目的考察点通常也不是某个标准答案,而是你分析实际问题的能力。
如何准备笔试 虽然笔试的内容通常都是平时积累的知识 但也不可忽视"考前突击"的重要性
1. c/c++
推荐教材:c programming language (C语言缔造者写的教材 短小精悍 甩谭浩强叔叔几十条街)、c++ primer、effective c++
2. 计算机系统
不清楚交大的教材是那本,学叔自学时用的教材:
《深入理解计算机系统》 英文名:Computer.Systems:A Programmer's Perspective
《现代操作系统》 英文名:Modern Operating Systems
3. 数据结构及算法
当年交大用的教材是清华严蔚敏教授的《数据结构》C语言版
找工作前,学叔也是用这本书复习的
当然,如果有牛人在啃MIT的《算法导论》或 Donald E.Knuth著的《计算机程序设计艺术》,那算法这块知识点应当没啥大问题了
4. 临时抱佛脚的面试题
前面3条列出的资料,都是需要一定时间来消化的。现在从零开始的话,时间显然来不及。所以,学叔这里给出一些资料,权当抛砖引玉。
1)《编程之美》微软技术面试心得
该书总结了互联网公司经常用到的几十种典型算法题,绝对值得好好研究,相比之下,程序员面试宝典之类的国产快餐,就是一坨翔。。。
2)csdn博客—结构之法 算法之道
google或百度搜索"结构之法" 第1条搜索结构点进去就是。该blog的博主为算法牛人,建议有兴趣的同学去围观其中的面试算法题。
此外,该算法大牛的新浪微博号是研究者July,最近在搞面试算法题讲座,可以去关注。
校招准备 阿里笔试:8月25日 百度笔试:9月27日或10月12日 腾讯笔试:xxx
《剑指Offer》 《程序员面试宝典》 《大话设计模式》 《零基础学算法》前五章 《编程之美》 csdn博客—结构之法 算法之道

《PHP求职宝典》 《C和指针》 《Redis入门指南》

    推荐阅读