群硕面经整理

 

面试的情况是这样的:一个微胖的技术,拿着我的简历转了好几圈,又问前台MMXX还没回来啊?我不适合面试.net的。。。最后转向我——他们都出去没回来,我面你吧。。。

 

    入座,问我技术方向,答兴趣在.netjava也可以。遂问我用03还是05,我说之前用03,用05有半年多。

    问:你讲讲framework1.02.0有什么区别吧。(后来他发现自己说错了,03里是1.1)

    答:03framework1.1的,2.0版本提供了更多的整合框架,提供了更多的新的特性。(我主要做WEB FORM,就主要从WEB角度说的)比如更好的缓存机制,提供了Membership用户角色权限框架,新增了五种功能强大的数据源,sitemap等等。没有提语言本身的东西,如泛型等。  

    ——PS:因为项目本身就是应用性的,主要从自己了解的应用讲,没有涉及机制底层等。那些,我确实也说不明白。

   

    问:说说CLR吧。

    答:公共语言运行时提供了一种类似JAVA虚拟机的机制,允许.net环境下的各种语言编译生成的中间代码执行于其上。。。也在一定程度上实现了跨平台性。。。

    ——PS:原理性的东西,我也看,不过,看过就过了,没有深入去理解。再次批评自己。

 

问:一定听过Struts吧,谈你对MVC架构的理解。

对经典的MVC设计模式的一种具体实现,是建立在当前JAVA WEB应用开发领域中JSP, SERVLET.XML等相关技术基础之上的一种主流开发框架,是一种基于经典MVC设计模式的框架.

    答:我对JAVA的理解都是对照.net来理解的。。。之后我讲了N层架构的实施过程,表示层、业务逻辑层、数据访问层。。。如果细化,还可以在业务逻辑层实现业务外观层。。。稀哩哗啦说了一堆,不知道对不对他胃口。

    ——PS:架构。。哎。。我想大部分做项目的人,也是用成型的一套架构改来改去吧。——浅薄之见,拍砖我也忍了,反正也是被郁闷了。

 

    问:你本科是学计算机的啊,那说说PV原语吧。

    答:对进程资源分配的一种管理方式,当请求一个资源时,P操作。。。如果小于0则等待。。。当释放一个资源时,V操作。。。

   ——PS:很久不看操作系统,做的主要都是web的东西,也不知道说得对不对。。。(顺手去google了一下,想了解详细的看这个http://oldchild.nbc.net.cn/jsjsj/DB&OS/rhyPVcz.htm)

 

    问:讲讲冒泡排序和二分查找的原理,在说说你知道的其他算法。

    答:。。。。。基本原理讲了一遍,应该说还应付得过去,之后我说的把自己陷进去了。我说,还知道一些加密算法,如DESRSA等。。

    他接着让我将一个加密算法的原理。我有点晕。。。这么个问法,我不翻才怪。我只好说,经过什么模乘/位运算啊,DES是对称的,RSA是非对称的。

    ——PS:我实在是记不住。。。如果老师说明天考试,我会去记的,否则,拿来主义就好。

 

    问:那你现在设计一个加密算法,然后分析一下它的优缺吧。

    答:。。。面对着简历沉思。。。可以对待加密内容的ASCII码进行特定的数学运算。。。他提示,加密算法能加密也要能解密。这倒是,ASCII码运算后估计乱码不可避免,那解密呢。。。

    他又说,现在考的不是算法,而是,怎么提出一个东西,然后对他进行分析。。。

    我又胡诌了一个最简单的位运算了事的。优点是效率高,简单,缺点是强度不够。

    他说这样有点应付面试的意思, 现在是SHOW TIME。。。

 

    问:如何实现一个呼叫中心,并能快速在页面上显示位置信息。。。

    ——PS:我简历写了熟悉网络编程和线程编程。注意是,熟悉,不是掌握。这个不会。线程在导师的项目里用过些,不过也基础,就是启动一个线程监听串口,进行数据的实时处理。

   

    问:同步。。。

    答:可以通过同步来实现对代码块的单一访问,排它。。。

    问:异步。。。

    ——PS:没有具体应用过,回来后把简历的这条索性去掉了,只要不是我掌握的,全去掉。要不真的会被郁闷。

  

    问:你熟悉SQL。。。那先来个最土的题。——他自己连题都没叙述清楚。

    我在黑板上写,告诉他,另外两个表都没有用了。他说,那不可能,要不我给你三个表干吗。后来他一看不对,说那查name吧,不查id了。我改。。。他提了一个问题,说这里应该用in,不是用“=”,因为后面是一个集合,我解释:按题目的意思,后面是单一记录,那用“=”号应该没问题的吧。。。

    ——PS:最后我写完,他说,其实他也不知道对不对。这个可以理解。至少我写了ingroup by,怎么也是用过SQL吧。

 

     问:存储过程、触发器。。。

     答:存储过程的优点很明显,最明显的当然可以使代码简洁,然后可以提高数据访问的性能,因为数据库服务器本身提供了对存储过程的优化,有些情况下,甚至可以把数据访问层完全通过存储过程来实现。触发器我正在用。我的课题要通过触发器来记录对表的DML操作等。。。

 

     问:触发器的原理是什么?

     答:只是用。。。原理不是很清楚

     问:那你现在想一下可能是什么原理?

     答:事件探查器。。。发生特定事件时检查是否定义了针对该事件的触发器——让我猜,我也只有猜了。

     他也没说个什么究竟,又问我临时表,我说用过,##。。。他说,知道双##号,那应该是用过了。

     又说视图。。。我说项目里应用比较少。

     结果让他抓到了把柄。其中,我还提到了一个蹩脚的数据库设计,因为项目并不是很正规,基本属于独立开发,然后合代码的那种,我的工作大部分在数据访问和业务逻辑,数据库设计有些地方不是满意,但是也要听人家的。

     他说,你们的这个设计连第三范式都满足不了吧。我解释,有些情况下也需要一些变通,因为,后续才发现有这个需求,而加表会比较麻烦,只好通过拼接ID串的方式。。。

     他说,如果你说,你的项目里很少用视图,那只能说明你只是个用户,然后说视图如何如何重要,没有用过视图就等于没用过数据库。。。。

 

     不想再写了。。。越写越郁闷。。。还问到了很多,比如垃圾回收器的原理,什么样的算法实现的,applicationsessioncookies(http://www.lslnet.com/linux/docs/linux-4141.htm)2.0下应用程序的发布方式等等等等。这几个我在之前遇到过,答得应该没问题。

 

     大晚上折腾到群硕,不到7点进去的,810出来的。被折磨了一个多小时,按豪客大哥的话,成技术讨论会了。

 

     我不是强人,我不知道群硕要招什么样的人。看来,离他们的要求是差得十万八千里了。

哥们,根据我很多同学在群硕的面试经历,你应该拿到offer了?群硕面试超过半小时的大部分都给offer,这是我们统计的结果。你说的那个Java面试官好像是那里的技术经理,我有个同学好像也被这个人面过(第二轮技术面试),给我同学的印象还不错,印象最深的好像是说他们招人不是为了空缺职位招人的,而是有计划的招人进行培养,估计这就是为什么你不知道他们到底要什么样的人。他原本是第二轮技术面试的面试官,就是可以给SSE职位的那种,被他面过的人的薪水比那些只面了一面的薪水要高很多。你被折磨一个多小时估计是他直接给你面了二面,不过,没有拿到offer就不知道是什么原因了,你没表现的不耐烦的话,应该可以拿offer的,如果表现得跟你现在所说的那样不耐烦的话,那肯定通不过面试,这个人很看重工作态度的说。

=====================================================================上午去群硕面试,昨晚背了一晚上的英语自我介绍。在公车上还在默默地背诵,到了群硕的面试地点,还看了一会。等了半小时左右,终于轮到我了。面试官是个胖胖的小伙子,刚开始一直在看我的简历和笔试题。为了不至于太尴尬,我就说笔试题答的不是很理想。他哦了一声,让我自我介绍一下。
我说:中文还是英文?

中文,你口语怎么样?

一般吧,阅读不错。

哦,听力呢?

听力也还行。然后我就自我介绍了一番。

接着开始提问,问我java会什么?

jsp
java基础,还接触过strutshibernatespring的东西。

简单说一下strutshibernatespring。我就说都是为了分离页面上过于复杂的代码。。。

用过XML吗?

用过,在我的一个项目中使用过。

为什么要用XML,而不用普通的配置文件,例如,文本文件?

XML
有结构信息,可以检索。。。

Html也有结构信息啊,为什么不用?

Html
只负责表现数据,而XML才真正的表示了数据的结构。

自己写代码生成过XML

是的,在我的一个项目中,我使用的是开源的DOM4J包。

然后问我其中一个项目的问题。。。。

你使用过aspjsp吧?

对?

它们有什么区别?

如果普通的使用,区别很小,主要区别是jsp上有很多框架技术,例如struts等等。。。

如果有一个项目,让你决定使用asp还是jsp,你怎么选择?

如果项目小的话,我会选择asp,因为asp比较成熟简单,如果项目比较大,我会选择jsp

因为jsp的那些框架使得代码易于维护和修改。

知道设计模式吗?

知道点,看过四人帮的设计模式那本书,知道些工厂模式,单件模式等。

那意义不大。使用过吗?

我只是看过,没有在实际的项目中使用过。

(估计这个砸了)

剩下的上学阶段怎么打算?

我想在北京实习。

怎么个实习法?(这个问题我有点不明白)

我说:那得看公司具体什么要求,我能保证一周5天的时间,可能有时候学校暂时有事要离开。。。。

如果你到一家公司,感觉不适合你,你会怎么办?

其实每家公司都有好的和不好的地方,这就和当时上大学一样,我们学校感觉不怎么样,但是我们学校的基础课还是教的很不错的,比如数据结构就交的不错。关键是自己的心态要平衡。

你说数据结构不错,那我问一个数据结构的问题。有一个大数据量的数据,你怎么快速的检索。

在数据库中吗?

如果是。

那就可以建索引,使用存储过程等等。

先不考虑这些,假设不在数据库中。

(我有点发愣)可以用二叉排序树。。。

他笑了笑:实际上肯定比你想的复杂(我心想,那当然)

你喜欢在一家能发挥你作用的公司,还是一家分工明确的公司,你不用操心太多的事(大概意思就是这样:做风尾还是鸡头?当时面试官表述的不是很清楚)

我下了一跳,不知道怎么回答,就说喜欢鸡头那种的,不喜欢螺丝钉那种的工作。。。

这个问题估计也砸了。。。

然后就是一些客套话。。。

=====================================================================

9:30面食刚回来      我也没通过,技术题问的虽然不难,但是很细,如果不是踏踏实实学过来的,不好混过

    我的面试体是  平衡二叉书的各种转换,旋转(不回),虚函数(本来会的,后来问为什么要用虚函数,虚函数的原理是什么  !)   多态(马马乎乎),   面板 (又不会)  就这样.,希望对其他同学有帮助

未通过技术面试,先是英语简介,然后英语项目。接着问技术(此时用汉语),问的东西挺多的,比如面向对象的三个特性(继承,封装,多态),多态的实现原理(不是怎样使用,不会),Cextern是在编译还是连接的时候使用(不确定),拷贝构造函数的用途(复制,NRV),指针作参数跟引用作参数的区别

相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
区别: 1. 指针是一个实体,而引用仅是个别名;

2.
引用使用时无需解引用(*),指针需要解引用;
3.
引用只能在定义时被初始化一次,之后不可变;指针可变; 引用从一而终
” ^_^
4.
引用没有 const,指针有 constconst 的指针不可变;

5.
引用不能为空,指针可以为空;
6. “sizeof
引用得到的是所指向的变量(对象)的大小,而“sizeof 指针得到的是指针本身(所指向的变量或对象的地址)的大小; typeid(T) == typeid(T&) 恒为真,sizeof(T) == sizeof(T&) 恒为真, 但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。

7.
指针和引用的自增(++)运算意义不一样;

8.
引用是类型安全的,指针不是 (引用比指针多了类型检查)((不确定),描述一下TCP/IP协议栈及每一层的相关协议(会)

应用层(http,dns,smtp,rtp)/运输层(TCP, UDP)/ 网际层(IP)/ 网络接口层,

描述一下进程和线程的区别和联系(一般),

进程是你系统同时运行的应用程序数目,而线程指你的cpu能同时处理的任务数量一个线程是给定的指令的序列 (你所编写的代码),一个栈(在给定的方法中定义的变量),以及一些共享数据(类一级的变量)
进程是目前桌面上正打开着的应用程序进程,如IEMS WordQQ等,还有在后台运行着的系统服务进程,即提供系统正常运行及上网所需的程序,如svchost.exe即为系统服务的进程名称线程肯定占用CPU,那么进程本身是否占用CPU的时间(不确定),哪些变量在堆中,哪些在栈中(会),最后是一个算法题,一堆数让你压栈,然后随机出栈,问有多少种出栈的排列(求错了)。

看到的好运阿。

技术面试我选的cc++,首先要求英文自我介绍,介绍过程中面试官用英语和我交流一些看法和感受,大概有15分钟。

之后中文技术面试,根据我的简历写的课程实践项目,来问相关方面的题目,比如数据库的第一范式,第二范式

: 1 第一范式(1NF

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。例如,对于图3-2 中的员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。

2
第二范式(2NF

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。如图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码。

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

3
第三范式(3NF

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性

数组和链表的区别

: 二者都属于一种数据结构
从逻辑结构来看
1.
数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。
2.
链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素
从内存存储来看
1. (
静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
2.
链表从堆中分配空间,

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值