(0) 目录
Java Socket编程Thread 和 Runnable
程序员面试笔试宝典
何海涛的日志面试经典题目(更新到2012年)
我不是一个合格的程序员
实现十进制转n进制
面试中变相考算法复杂度
memcpy strncpy函数
以面试官的角度看strcpy函数
memcopy讲解 和 链表反转
java 之 引用(基本类型的包装类,构造函数析构函数与c++不同)
JD笔试试题(凭记忆写的+人生感悟 try finally )
笔试的一道题(字符串反转poj3750)
c++野指针 之 实战篇
华为机试 之 joseph环
2015腾讯校园招聘(菜鸟逆袭腾讯,offer get)
20140925百度校园招聘二面
应届生面试准备之道
搜狗面试的经典题(C++map按值排序,class struct的区别)
c++中的悬浮指针和野指针 二级指针
c++深拷贝和浅拷贝
面试经常问的C语言变量在内存中的分布(VC6.0)
Sizeof与Strlen的区别与联系
2015 百度笔试的一道经典题目
联想2015校园招聘笔试题
c++中的字符串转为int,字符串split(弱爆了)
浅析c++对象销毁之析构函数
http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html
向大家推荐一个很好的学习网站 ~~~ 关于算法 http://www.cnblogs.com/kaituorensheng/category/445233.html
一:自己的一些感悟
搜狗笔试题目请点击链接:搜狗笔试题目
如何准备笔试:
(1)笔试是非常重要的,笔试的分数直接影响你接下来的的面试,这应该算给面试官下的第一潜在的个印象(面试官告诉我,你昨天的笔试成绩还不错,这也是我作
为一个霸笔者能进入面试的关键因素吧)。虽然考的都是一些基础的东西,但是可能基础的连你自己都不知道从哪里下手。
(2)尽量提前网申,不到万不得已,不要霸笔的,霸笔会受到特殊的待遇的,除非你笔试的成绩非常牛!总之,笔试一定要做好充分的准备——数据结构、C++基本语
法、剑指offer、编程之美、程序员面试宝典里面的算法题,少说也得手写3遍吧;
(3)应聘c++研发方向的,一定一定得会用并且吃透(自己实现)STL,特别是里面STL对象的运算符重载;再有就是算法一定要吃透,特别是一些算法的优化
笔试结束,面试之前的准备:
(4)如果能够把笔试的题目弄出来最好(个人的感悟吧),而且一定要当天把笔试中的所有疑问,查清楚;特别是算法题,一定要看一看有没有更优的算法实现 ——
本人,接到面试官的第一个命令,并不是先自我介绍吧,而是你感觉你昨天笔试的如何?我就实话实说了,(自己当晚已经把笔试的疑问全部百度和google了),算法题的第
二个时间复杂度是O(N^2),其实可以用动态规划dp蒋伟O(N)的,面试官自然而然得就询问你的dp算法了,顺势又问了一下dp的使用情形,我就分析了一下状态转移(注意,你
自己得说话方式,你说到了dp,一定要对dp有深入的了解)
(5)接(4),面试中的说话技巧,化被动为主动 —— 让你自己牵着面试官再走,而非自己给自己下套子(明明自己不会的东西,你却提到了,那你肯定吃亏
的);这次面试中,我感觉自己是语无伦次的,前胸一直冒汗,但是并不紧张(没哆嗦的),可能是穿的太厚了吧,惭愧啊!这是说明,面试之前并没有想好,话是如何讲
的,如何说的。
(6)接(5)面试之前一定要想好,话是如何讲,如何说,哪些算法可以提,哪些方法可以提,哪些技术可以提等等 —— 总之,自己深入了解的,要时不时的提
一下,例如面试中,他先提到笔试中的统计词频那一题提起,我就把自己本科时做的中文情感分词(注意分词),他就顺势提问我,给你一句话,中文是如何分词的。
(7)做一个诚实的孩子,面试官问的问题,一定要诚实的回答,会就是会,不会一定要说明,不能含糊的,否则接下来他会问你实现方法的;
(8)学会应变,避开陷阱:捕捉面试官问题中的关键信息,那些反复强调的信息就是你解题的突破口。
(9)收到面试通知时,请务必认真地回复,信息如下:谢谢您,***收到,明天准时参加。(这里的***是非常关键的)
(10)请务必提前半小时达到面试现场,一是熟悉环境,而是可以和已经面试过的同学得到一些信息 的;
(11)一定要全方位额了解这个企业的业务流程和企业文化,重点开发方向。
二:面试题目
(1)笔试第二部分的第二个算法题 + dp算法的解释和说明(结合本题目)
(2)智力题:
问以现有的技术,如何测量地球海洋的体积 ---- 抽样方法,标记一吨水,一年后抽样
老生的问题,一个人到了一个路口,两条路,其中只有一条路可以通向城堡,有AB两个人,一个人说真话,一个人说假话,给你一次机会,如何得到去城堡的路。(老生的问
题,是他说的,可我却是第一次,回答的不是很好)
(3)接着问的是笔试的最后一个算法题,我就把mapreduce 讲解了一下,讲解了一下为什么要用它,正好符合题目要求嘛!我重点说了一下,句子拆分那一块自己不是很了
解,但是把自己的算法复杂度非常高的分词方法说了 ,看样子,面试官对hadoop不是很懂的样子,mapreduce就更不用说了,因为他问了一个很捉急 的问题,你在linux下面
编写过程需吗?(hadoop就是在linux下啊),我就把我的hadoop环境说了一下,顺便把vim的基本操作会基本的操作。
(4)问我read fread fstream用过吗?我说fread是读写文件的,read是干什么的?我估计,他是看出我不太懂,有直接问我你STL用过吗?用过哪些?我说map vector list ,接
着他给我出了一道题目,姓名 成绩(姓名可重复),用map实现按分数排序,记住一定要用STL实现的,我纠结了半天,你可以不局限用map的我说用vector,结果还是没有
弄好,但是我说出了自己的想法,我说我排序时卡在分数list上了,他说,你可以直接云算符重载啊,在调用比较函数。
(5)接着说了句你的笔试成绩不错的嘛!string类用过吧,strip split用,我直接说了split是分词的,strip倒是反问 了他一句,他没有回答,直接问我你实现一下split吧 ——
好吧,第一次写完整的代码,和第一次的dp加一起才算两处代码书写。
(6)后来又讨论到分词,我之前说过,中文分词的,情感分词的,给你一句话你是如何分词的
(7)问了句,今年搜狗来的招的比较晚,你之前拿到过offer了吗?我感觉我很拙计的回答到:已经拿到了offer,但是不是很理想,岗位不是自己想要的(我感觉应这样回答会
更好,之前不是我喜欢的企业文化,前提你得懂搜狗的企业文化);
(8)之后顺势问了我一句,你想应聘哪一个岗位?拙计的问题终于来了,我说c++研发,他说,你的java项目是JavaWeb啊,我说JavaWeb会用,但是细节不是很了解,而且个人倾向于c++,(好捉急啊,自己应聘的是c++研发,却写着项目经历全是是JavaWeb的)他说你可以算法开发啊,我说我听说研发很是锻炼人的,想从研发做起;我对一些算法的优化不是很强项。等通知。。。。
(9)中间还问过我一个问题就是:你做过多线程的程序吗?我也不知道人家问的是java的还是c++的,直接回答说自己写过java的多线程;他追问,怎么实现的,我说通过sys什么玩意实现的,当时只是练手,非常简单,之后他就没有细问。。
(10)接近最后的时候还问了一个以搜索引擎为背景的问题: 每天用户进行关键词搜索,但是词频高达90%的以上的词占总数的不到10%,而那高达90%的关键词却搜索的次数却非常少,问如何按照词频进行排序?想了一会,用堆排?不好……之后问了本次面试中的第一个问题,是仅仅对!10%的高频词进行排序吗?面试官:不是,是全部排列!我:我用快排,第一次partition的时候,用抽样的方法进行划分,下面的partition就不用了 —— 不知道我回答的正确了还是他懂我的意思了,就说好的。进入下一个环节了(好几次这样的情形)
三:感悟
(1)充分的准备是前提:笔试基础知识,面试技巧方法演练
(2)面试中的应变能力测试,和面试官的眼神交流(感觉自己这一点非常的欠缺的)
(3)礼仪,礼貌方面的测试。
(4) 最后的感悟:自己准备很渣的,stl就是一渣啊,自己用的stl竟然是java里面的,而且并不是很好的,一知半解。一定要精通一门语言,c++ 或 java,不要交叉的啊。
哪一门需要!没有和面试官进行有效交流,自己得到的面试题目的信息不是很多,交流太少。还问了一个排序题。
(5)一定要和面试官进行沟通和交流,特别是出题环节,一定对不清楚的地方进行询问,例如map那一个题,是否可以创建struct结构体?海洋体积估算,是否有时间限制等等。一定不要留下,你认为他懂他却不懂;他认为你懂,你却不晓得的局面;有效的沟通也会给面试官留下好的印象的;更拙计的局面可能是这样的:面试官因为某种原因(多数因为疏忽,或者认为你懂,人那么多,能不疏忽吗)把面试的题目叙述的不清楚,或者给你的前提条件不够,或者一不小心给描述错了,怎么办?此时的及时询问是非常有必要的。
四:阿里电话面试(实习生内推)的尴尬之局
(0)人家内推的是Java研发,我后来由于种种原因改成了c++研发,这是导致后面比较尴尬的起始原因
(1)面试我的人就是内推的人,陈超—— 非常尴尬,一个Java方面的工程师,和一个C++研究岗位的人谈论技术,最后连我自己都不知道最后问的我是c++吗?问我字符串拼接—— 我回答的是string类里面的append 函数或者+;他接着就跟我说String类的对象是常量,没有append函数的(呵呵,回来后我一查才知道这是Java的东西),你说的append 函数是StringBuilder(StringBuffer类的吧)(呵呵,回来后我一查才知道这是Java的东西),还让我回答 + 和 StringBuilder 类的append 函数的区别?—— 经验值:事先一定要确定公司的定位,了解公司的核心岗位和缺口最大的岗位,有的放矢的准备一篇简历(至少准备两篇以上的简历),避免java面试 c++或者前台面试后台。(当然,还是自己有些盲目,没有分析公司,后话——有时真的需要投缘)
(2)询问我的算法问题—— 排序算法还是dp算法,剪枝算法 —— 原来指的是排序算法,我回答了快速排序(quicksort)、堆排序(heapsort)、归并排序(mergerSort)、以及冒泡算法(BubbleSort),让我讲解了一下quicksort和heapsort(后话,我是不是应该问一下,要是手写代码就好了,只能描述一下核心思想了),我就是说了一下快排中的核心partition过程,每一次的取一个数作为key值最左面的作为key值(其实,自己应该说一说取key值的策略的,每一次都取得左侧或者random一下更好(O(NlogN)),当时,也没有询问老师是按从小到大还是从大到小排列 ),堆排更是三言两语说完了,主要是向下调整的过程(呵呵,估计自己没有讲清楚)——经验值:表达能力非常欠妥,语序和前后逻辑不够缜密,说了半天人家并没有明白你的思路或者想法,一旦你没有表达清楚或者清晰,人家就认为你不会不懂。
(3)Hadoop 的Map 和 Reduce的过程,自己也是三言两语的说过去了;问我顺序存储和链式存储的区别,自己也是根本没有条理的就回答了;Map处理员工的ID号(数字+字母),我是说的ID映射为int型的作为key值,其他基本信息作为value值,但是他追问我假如员工的人数比较多,如何处理?二次哈希(基本的概念忘了,如c)链地址法,b)再哈希法 )经验值:准备不够充分,一些细节和基础的东西记不太清楚了,忘得一干二净了,再加上紧张,前后逻辑都乱了。(补充,hash函数的选取 ——除留余数法:取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key MOD p,p<=m。数字分析法:分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低;物理结构有:线性存储结构和非线性存储结构,线性存储结构有顺序、链接、索引和散列4种结构;非线性存储结构有树形存储结构、图形存储结构;顺序表的特点是逻辑上相邻的数据元素,物理内存位置也相邻,预先分配空间,可以按照元素的序号随机访问元素,如数组,插入、删除需要移动N/2个元素;连式存储:不一定相邻,用指针实现元素之间的逻辑关系,动态分配内存,插入、删除比较方便,不能够随机存取元素。
(4)关于项目问的问题比较多,问的也比较详细,深挖的也比较深:但是对于一个项目来说,难点和重点既有前台也有后台,你怎么说怎么讲、侧重点最起码得和你应聘的职位联系起来,主动的向自己熟悉的方向上讲,不能一塌糊涂的什么都讲,什么都说,(要是知道面试官的背景就好了),就是说一个项目至少要准备前台和后台比较有特色的两个点子,到面试的时候,根据情况讲一个;再准备一个算法方面的科研项目。
180KB可以存储多少个西文字符?多少个中文字符?
每个西文字符为1字节(8bit位),每个中文字符为2字节(16bit位)。180KB可以存储180K个西文字符,90K个中文字符。不过,要余留10%
的空间,就象库里放东西,塞的超量了找取起来就麻烦了
最后一句经验:电面一定要找一个环境安静 信号好的地方;有效的交流是非常有必要的,挑战你自己的语言表达能力;做好充分全面的准备。
向大家推荐一个很好的学习网站 ~~~ 大牛写的,关于算法,剑指offer 等等,非常不错,自己受益匪浅
bayes 等算法设计