2017软件开发校招内推,阿里、华为等面试经验

来源:互联网 发布:java常用算法手册豆瓣 编辑:程序博客网 时间:2024/05/16 01:10


  先介绍下本人,笔者是国内一所知名院校的硕士研究生,专业方向是软件工程(JAVA方向),主攻Web端,前台后台都有涉及,但应聘后端岗位。其实我本人也是从研二开始真正接触到软件方面的知识,研一一年基本就上课然后参与各种社团活动,暑假初期也曾为找工作忧心忡忡,不过截止目前(9月底)已经拿到了保底的offer,而且薪资待遇等方面也超过了自己预期,所以总体而言还是蛮顺利的。

        我就按时间顺序列出我所参与的主要的面试公司的面试经历,仅作为自己的一个总结,也为后来者提供一些参照,就如同自己参照前人的面试经验一样。本篇主要涉及技术面经方面,想了解宏观建议方面的可以参照笔者的另一篇文章。

 

1.阿里内推(7月中下旬)

  首先说明阿里的内推是免笔试的(内推方式可以加一些QQ校招群找到阿里内部人士,也可以登录内推网自己搜寻内部员工),面试总共4轮,三轮技术面+一轮HR面,个别情况下可能会是5轮(多一轮交叉面)。

  笔者情况:一面通过,二面折戟。

 

一面(电话面试)(30min,偏项目、实习以及前端,总体不难):

1.)自我介绍(个人背景,项目,实习,研会实践,爱好等等)

  这一点已在笔者另一篇文《宏观面试经验技巧》中详细说明。

 

2.)主要介绍一下项目、实习

       比较具体的介绍,这个项目大家都不一样,略去。自己表达清晰即可,然后面试官会针对项目、实习问些具体的问题。

3.)开发项目中所遇到的难题及解决,并举出例子

  这个我列举的是Apache+Tomcat服务器搭建以及配置的问题,后来又列举了一个网页乱码处理的问题。这部分建议大家提前准备好,面试官主要审查遇到问题及解决问题的能力,表明遇到什么问题,通过哪些手段(查资料,讨论,多想多试),最后怎样解决。

4.)常见的服务器攻击手段及防御措施

(因为我项目是关于服务器的,所以被问到,当时答得不好也不差)

  攻击:CC攻击(不停的发数据包导致服务器瘫痪)

          伪造证书(伪造IP地址,Mac地址等)

          植入木马、病毒,窃取用户口令密码等

   规避方法:

          避免系统弱口令

          修改iptables,改掉默认端口

          禁止root用户远程登录

          木马检查(模板文件检查、定期检查访问日志等)

5.)简述jQueryBootstrap的区别

   jQueryjs库,而Bootstrap是基于html/CSS/JavaScript的前端框架,二者不同还是很大的。

6.)项目开发中用到jQuery的一个例子

  因为项目是基于Bootstrap的,所以问了这样一个问题。当时我列举的是前端网页实现轮播的一个例子,说Bootstrp可以比较容易的实现轮播,但具体的设置,比如轮播悬停,修改秒数只能用jQuery去改,Bootstrap已经无能为力了。答得很细节(因为让举例子,问的就是细节,看你是不是真正做过),比如设置轮播idjQuery取得id,然后设置hover,设置interval20002秒)等等。

7.)有没有问题问面试官

  这一点已在笔者另一篇文《宏观面试经验技巧》中详细说明。

 


二面(电话面试)(60min,偏java基础、前后端都有,总体挺难):

 

1.)简短自我介绍

2.)新建线程的两种方式

  继承Thread类,调用start()方法

  实现Runnable接口,重写run()方法,调用start()方法

  此处注意,无论哪种启动线程时都是调用start()方法,面试官特意考察

3.Synchronize类锁、方法锁的区别,Synchronize用法

  这一块问的已经很深了,包括Synchronize可以用在方法定义上,也可以单独用在同步代码块{}中。

  其间面试官会出各类Synchronize类锁、方法锁的变形题,要你解答。总之区分的就是,Synchronize加在方法上是对象锁,锁定的是这个对象,此时其他调用同一对象的方法就会被阻塞,而类锁是加在className.class这个文件对象上,只有一个,其中类锁和对象锁不会冲突,对象锁之间会冲突。具体细节网上很多介绍,这一块要仔细区分,不仅一个公司的面试官会问到。

4.hashtablehashmap区别

  特别注意,hashtablehashmapConcurrentHashmap,这几个之间的主要区别,一定要仔细区分好,笔者经验,十家公司几乎八家会问到相关类似的问题。

Hashtable:线程安全,效率一般,用的较少

Hashmap:非线程安全,效率高,复写contains()方法,可以包含一个空值

ConcurrentHashmap:线程安全,分段加锁的hashtable

Collections.synchronized()方法可以把一个Hashmap封装为线程安全的map

5.JVM内存分配

       Jvm的区域划分(pc计数器,本地方法栈,虚拟机栈,堆,方法区)

  问你new新建一个对象会存在哪里?(对象->堆)

       Static变量存在哪里?(全局变量->方法区)

       String变量存在哪里?String变量-常量池->方法区)

       函数内声明的一个变量放在哪里?(局部变量->栈)

  另外,例如 int b[] = {1,2,3.4}

          数组{1,2,3.4}->堆,而数组引用b->

       JVM中,堆、方法区是线程共享的,而栈每个线程独有

       JVM年轻代、老年代的划分。各自对应的GC算法

6.)前端跨域浏览如何实现

  可以用JSONP的回调函数callback(),主要是JavaScript实现,当时不是太懂,不会答。其中还会涉及CSRF跨域请求伪造攻击,属于前端的安全问题

7.http1.1http1.0的区别

  主要是http1.1新加了很多报头,如持久连接connection头,host头等,而且1.1还有很多关于身份认证,数据加密的一些功能。

8.dopostdoget请求提交后,诸如用户名、密码等信息存储在哪里?

       dopostdoget的区别先弄清楚,然后1次完整的http请求消息包括:一个请求行、若干消息头以及实体内容,根据浏览器是否禁用cookies等作出区分。仅笔者个人认为,在禁用cookies情况下,用户名密码等数据会存在实体内容中提交给服务器。

9.)后端框架知道哪些(SpringhibernatespringMVC

  因为当时笔者刚开始看框架,所以直接回答不太了解,仅仅是宏观上介绍了3种框架的功能,以及各自主要负责的一部分。

 

       总体而言二面还是挺难的,问的有将近一半打不上来,尤其是后端框架那一块,如果不懂框架,面对阿里这样的巨头公司,基本就是拜拜了。

  关于阿里,想说的是做为BAT这样的大公司,真的是有点实力才能进去的,像笔者这种情况,也就是去混混面试经验,因为这些问题的确在以后其他公司的面试中也遇到过,传言阿里基本上在实习生和内推中就已经招满了,所以有实力的人还得尽快下手。

  关于阿里内推面试,整个流程战线拉得应该是挺长的,不过笔者仅到了2面。个人听到的消息是这样的,阿里每次面试完后,都会对应的给此次面试做个等级打分,如果你一面面的较好,比如评级是A+,那你可能很快(可能第二天)就会收到阿里的电话二面。如果一般等级,可能就要拖到很久后才二面甚至压根没有二面。因为阿里优先面试评级高的,毕竟人家肯定要先收取牛人嘛,一般的就会被打入冷宫了。笔者一面还可以,问题基本回答出来,所以在一面结束后第三天就收到了二面,不过二面不行,估计是B等甚至更低,所以最后直接没戏了。

       个人认为面试阿里主要就是混经验吧,毕竟阿里还是很难进。以上论述也仅作为笔者的一个个人总结,笔者力争没有错误以减少对后来者的误导,但能力有限所以不敢保证完全正确,所以希冀各位看官秉承一种批判学习的态度共同交流,多搜索多比较多总结才会出真知,毕竟甄别资料的正确性也是一种能力。

 


 2.华为校招月下旬)

   华为今年(2017)是没有内推的,校招优先招聘持续在8月中旬至8月底(各地不一)。流程是一轮机试+一次测评(性格)+两轮面试(技术面试+综合面试)。

    机试就是3道编程题,从易到难总共设值600100+200+300)分,只要大于100分就能过线。即只要你第一次运行就做对了第一题就ok,第一次运行错误然后第二次才运行正确就是98分,每道题共有5次运行机会,会依据测试用例的case通过率按百分比给分,比如case通过50%那就给一半的分。所以建议一定要仔细检查第一题,确保一次性通过拿到100分,这样就能保底进入面试。(华为的机试是统一到华为研发中心去机试的,电脑自带Eclipse所以自己可以在本地编译环境先进行测试,然后粘贴到考试系统中。)一般第一题还是很简单的,比如输入一个字符串,然后进行字母去重+排序。又或者将字符串中每一个单词的首字母变成大写,然后输出。另外机试要特别注意格式问题,所以建议提前在网上进行刷题,比如去华为自己的训练测试平台、又或者牛客网之类网站。机试成绩的话,笔者认为一般要做对两题才有进入的机会,机试分太低的话不容易再翻身。

    性格测评,机试结束当天就进行测评,测评很重要!!!华为很看重这个,每个账号都是花钱买来进行测评的,身边就有实例同学笔试面试一流,最后就因为一个性格测评没过然后一切OVER。一般会有两次机会,special的会有三次。总之你要适合华为的企业文化,做题时保持乐观的心态,持有积极的斗志,愿意接受持续快速的生活,甘于加班奋斗……(你懂的)

    之后就是技术面试+综合面试,上述性格测试有问题的,一般技术面试时就死掉了,有时都不知怎么就死掉了,但就没有接下来的综合面试,有极大原因就是因为测试没过。

    技术面:(30min左右,主要项目)

1.我主要是问项目,自己做的项目会跟面试官讲解,从分层、架构、设计、采用语言、所用技术、等等,面试官会让你讲解很多,主要就是通过你的一个比较熟悉的项目去了解你。

2.我有同学在技术面碰到面试官让重做之前没做出来的机试题的,所以笔试结束后技术面之前,切记把没弄出的机试题弄会。

3.设计模式之单例模式,现场写代码,包括一般的singleton和优化后的singleton(静态内部类)。

4.个别的会问一点java基础,比如jvm划分,内存泄漏及如何处理

5.轻微问下论文、专利,从事开发语言时间长短,代码累积数目等等

    综合面试:(20min左右,技术+意向)

综合面其实也有点技术穿插在里面,一般是四五十岁的部门领导,不是HR面。

1.问二叉树除了用递归,还有什么遍历方法?这个当时我确实不知道,只知道前中后、S、层序遍历,但具体的实施方法确实不知道。其实S遍历、层序遍历就是一种非递归的遍历方式,这两种方法是基于用栈、队列,去模拟实现递归方法的,例如两个栈,一个放父节点,另一个放子节点,然后遍历父节点栈直至为空,然后再去遍历子节点栈直至为空,具体代码网上都有。

2.图的遍历方式?估计是第一个问题没答上来,面试官又启发我,其实图主要是深度优先和广度优先,算法实现也是基于栈、队列之类的底层结构,只不过笔者能力有限,表示的确看的不是太懂。(此主管比较看重:数据结构&算法)

3.之后就是问些宏观类的,非技术的。比如期望工作地点、个人职业规划、研究生课程、等等。

 

    总体就是这些吧,华为今年没有HR面,一般的直接给批发价。华为最明显的特点就是工资多加班多拼搏多但也收获多,奋斗者协议嘛,本来就是这样子的。至于能不能承受住华为的压力,能不能进以及要不要进,就要取决于个人选择了。

    就笔者个人而言还是比较敬重华为这个企业的,毕竟中国还真没几个像华为这样能够在世界上搅弄风云的,华为也确实是中国的骄傲。只不过笔者本人没有那么大雄心抱负,也还有很多其他的事等着笔者去完成,所以就不把所有时间完全投入到工作了,但也祝愿那些进华为的小伙伴,希望你们的奋斗能给这个国家带来不一样的生机。

 

 


另附:其他公司常见高频面试问题:

 

1.抽象类&接口的区别

2.Hashmap & ConcurrentHashmap的区别

3.设计模式(单例模式(现场写代码)、工厂模式、代理模式……)一共23种呢

4.创建对象的方式(newnewInstance()clone()ObjectInputStream()

5.创建线程的方式(ThreadRunable

6.sleep()wait()方法的区别

7.Hashcodeequal方法有没有联系

8.并发包下的类Concurrent*

9.Jvm内存分为哪几块,哪些是线程共享

10.什么情况下会内存泄露,以及避免方式

11.二叉树除了递归还有什么其他遍历方式(栈、队列模拟实现)

12.一个文件中1000000个数,选出最大的前50

13.HashmapTreemap的底层实现

14.各类排序算法:快排(现场写代码)、归并、堆排序,等的实现原理、时间复杂度

15.Linux下命令:psnetstatchmodwcrm -rf 以及rmdir,查看文件fid

16.数据库海量数据如何复制,还得保证线程安全

17.数据库密码存储方式,SQL注入

18.二叉树层序遍历、逆序层序遍历(现场写代码)

19.(算法)输入字符串如abcde,进行全排列

20.(算法)蛇形矩阵题、迷宫题

21.Servlet多线程安全,数据库乐观锁与悲观锁取数据的区别

22.SynchronizedLock的区别

23.关键字volatile/transient

24.TCP三次握手、四次挥手,及相应状态

25.TCP/IP协议中,各类设备分别再哪一层(1物理层:中继器、集线器;;2.数据链路:网桥,交换机;;3 IP层:路由器;;4 TCP层:网关)


 

0 0
原创粉丝点击