Java Developmental engineer

腾讯

  • 岗位职责:
    • 1.负责公司核心产品的开发与维护;根据应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口。
    • 2.参与公司核心产品的架构、设计、研发、文档编写,包括功能架构、接口体系、缓存、性能、安全等。
    • 3.协助部门培养研发工程师团队。
  • 任职要求:
    • 1、计算机相关专业大专以上学历, 4年以上java web项目研发经验;
    • 2、对Java面向对象软件结构有深入理解以及很强的应用能力 ;
    • 3、熟悉Spring MVC、iBatis等主流开源框架及原理
    • 4、熟悉JSP/Servlet/JavaScript等WEB开发技术;
    • 5、能够熟练应用mysql,并具有较好的SQL编写及优化能力;
    • 6、熟悉Linux,熟练配置维护Tomcat, Jetty等应用服务器;
    • 7、有互联网行业开发经验者优先

UC 高级java开发工程师(web方向)

1、精通java语言,对jvm原理有一定了解;
2、3年及以上JAVA开发经验,熟悉常用web框架及其原理。具有大规模高并发访问的Web应用架构设计和开发经验者优先;
3、熟练掌握常见HTTP服务器、存储、缓存、队列等工具,并了解其工作原理。有开源社区贡献经历者优先;
4、熟悉linux操作系统和mysql数据库,有一定性能优化经验;
5、熟悉前端开发技术,对javascript、html5、css等能较灵活运用
6、学习能力及工作责任心强、对于技术有研究精神、攻关能力和创造执行力,同时具备良好的团队组织能力;
7、具备良好的需求分析能力和设计能力,掌握需求分析、设计的方法和常用工具;
8、具有较强的沟通协调能力,具有较高责任感,主动性和执行力;
注:谢绝虚假简历,公司有严格的流程将对求职者做详尽的背景调查。

百度 JAVA系统研发工程师#

  • 工作职责:

    • 为互联网金融应用编写服务器端程序,打造强大的互联网后端系统
    • 运用分布式计算异步处理机制大规模存储系统高性能网络编程、操作系统和内核、软件服务架构等方向的广泛认知,提升后端系统的性能、灵活性、可扩展性
    • 运用数据挖掘机器学习相关算法的实践经验,改进点击率预估、相关性、反作弊等算法的具体实现,持续提升用户体验
    • 主要方向:*稳定、高并发、高访问频率、高效、高可用、易扩展的互联网交易系统,风险控制和运营系统 *
  • 职位要求:

    • 计算机及计算机相关专业本科或本科以上学历,对数据结构和算法设计具有深刻的理解
    • 两年以上相关研发工作经验
    • 精通Linux/Unix平台上的Java编程,熟练掌握Spring, Mybatis, Active MQ等主流的开发框架有良好的编程习惯
    • 能够熟练应用JSP/Servlet/JavaScript等WEB开发技术,熟悉脚本编程(如Bash, Python等)
    • 精通网络编程、多线程编程,熟悉开源计算、存储系统(如MySQL、Redis等)的管理或应用
    • 具备优秀的逻辑思维能力,对解决挑战性问题充满热情,善于解决问题和分析问题
    • 有强烈的上进心和求知欲,善于学习新事物
    • 良好的团队合作精神,较强的沟通能力和学习能力

alibaba 高级Java工程师/技术专家/架构师

  • 岗位描述:
    • 1. 作为团队核心成员,负责核心业务功能与底层基础功能的功能设计、负责核心产品的技术攻关。
    • 2. 横向协同各个技术团队,确保产品间技术体系的互通,保证良好的整体架构体系。
    • 3. 参与到关键项目中,承担技术架构设计和实施工作,负责核心产品核心技术攻关,完成高质量的产品设计与实现。
    • 4. 作为大团队的核心成员,参与技术、业务方向讨论,并共同制定技术标准,并确保落实。
    • 5. 团队未来技术TL、跨领域架构师的重点培养方向
  • 岗位要求:
    • 1. 本科或以上学历,五年以上开发经验,担任大中型项目架构师经验者优先。
    • 2. 扎实的Java/JEE知识基础和技术功底,良好的质量意识,能编写高质量简洁清晰的代码,具有代码洁癖者优先。
    • 3. 良好的面向对象设计理解,熟悉面向对象设计原则,优秀的开发及设计能力,掌握设计模式及应用场景,对于常用的架构理念和模式(如N层架构、JEE核心模式)有自己独立的见解。
    • 4. 熟悉SOA/MDA等架构理念,具有分布式服务体系架构实践经验,关注并理解架构的高可用性与可扩展性。
    • 5. 具有比较强的问题分析和处理能力,有比较优秀的动手能力,热衷技术,精益求精。
    • 6. 具有较强的业务理解能力,能够快速识别和分析业务问题,并给出合理的解决方案。
    • 7. 具有良好的语言表达能力以及模型化抽象能力,能与团队进行良好沟通,传递架构理念并带头落地实施。
    • 8. 有激情、有闯劲,有执行力.
    • 9. 具有互联网相关项目或产品技术架构、业务架构、数据架构经验者优先

vip 唯品会 资深JAVA工程师

  • 职位描述:
    • 负责客户端APP产品中服务器后端的工程设计,架构设计以及开发工作;
    • 研究业界最新技术及其应用,解决创新研发过程中的关键问题和技术难点;
    • 根据项目任务计划按时完成软件编码和单元测试工作;
    • 按照开发流程编写相应模块的设计文档;
    • 与产品经理、测试工程师、其他团队沟通合作,保证产品研发工作 的质量和进度;
    • 协调或指导团队里其它开发人员的工作。
  • 任职资格:
    • 大学本科或以上学历,计算机相关专业;
    • 6年以上服务器后端开发经验,1年以上技术主管经验;
    • 5年以上一种主流后端语言编程经验:Java, 或Scala, 或Node.js, 或Python;
    • 精通主流Web应用开发框架(Spring, Play!, Express, Django, 等等;
      熟悉SOA和Web Services(REST, SOAP)系统框架
      熟悉主流应用服务器(Tomcat, JBoss, Apache, Nginx等;
    • 精通数据库设计和性能优化;熟悉主流RDBMSNoSQL数据库(MySQL, MongoDB, Memcached, Redis等),以及数据库编程(SQL, JDBC, iBatis, OpenJPA, 等)
    • 熟悉常用工程工具:Jenkins, Maven/Sbt/Npm/Ant, Git/SVN, Eclipse/IntelliJ, 等等;
    • 熟悉设计模式,熟练掌握面向对象编程和事件驱动编程风格;
    • 有热情,酷爱技术,有良好的计划、沟通、组织协调能力、语言表达能力;较强的逻辑分析能力和应变能力;良好的团队合作精神;
    • 有Web前端开发经验者优先;有敏捷开发(Agile/Scrum)经验者优先。

项目经验-->并发编程


百度java开发面试题

主题:百度java开发面试题(2011-12-XX)

第一面 项目: 1、找一个项目,介绍下情况。其中遇到了什么问题,每种问题怎么样的解决方案。 算法题: 2、一个排好序的数组,找出两数之和为m的所有组合 3、自然数序列,找出任意连续之和等于n的所有子序列 数据结构: 4、从数据库查出一个数据结果集,其中有一个时间字段,请用一个数据结构存储使得可以最快速的查出某个时间段内的记录。 5、上一题我提到了B+树,他就继续问了为何用B+树实现索引而不用二叉树 数据库: 6、说说Oracle数据库的事务隔离级别,以及遇到的相关问题 这个我说了标准的四种级别,Oracle实现的三种级别,并概述了下多版本读一致性 项目相关技术: 7、看到简历上写了个rpc,讲讲,我说了跟rmi比较像,说了异同点,然后又展开到内存分配的问题,不过没搞懂他到底要说什么。还问题java客户端跟c程序服务端的通信情况,比如说c那边直接一个结构体过来,怎么处理,答曰没遇到过。 8、简历上写的jvm性能调优,说说都做了什么事情 9、说到jvm的时候,说到了我们用windows开发,就问linux的脚本知道么,awk用过么 10、简历上写web框架开发维护,就问浏览器端跟服务器端如何通信,不过最后只落到了java对象如何传递到客户端,客户端数据如何传递到服务端。 java基础: 11、并发同步的问题,synchorized是如何使用,Object的wait、notify方法什么作用 框架: 12、是否了解spring,ioc的实现,aop的实现方案,各种方案有什么限制

第二面 项目: 1、介绍下你做的项目,稍微高层次一些的介绍下,意思是不要没完没了的介绍 其中提到了主实例集群节点与主实例备用节点的单例状态如何保持同步 2、rpc通信和rmi区别 3、并发访问同一条数据的时候,如何保证数据同步。 4、网站性能优化都做了什么,具体的?ETag、Last-Modified、Expires、Cache-Control 5、最近看什么书,印象最深刻的是什么? 算法: 6、二叉树,找两个节点的最底层的公共父节点,给思路 7、单向链表反转,写代码

第三面(就记了这么多) 自我介绍: 1、个人基本情况,顺便提到项目,就开始扯了几下 数据库: 2、数据库性能优化有做么?做了些什么? 设计: 3、设计一个小商店进销存系统的的表结构设计,老板每天要知道卖出的货物,要定期查看货物的成本、销售额和利润。 这里要注意,重点之一是如何进行成本计算,要知道成本计算的几种方法,选其中一种实现,这个会影响表结构的设计 算法: 4、1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1。

之前去百度面试,整理了一下面试问题。没有笔试,直接和面试官交谈。感觉面试官人挺好的,挺有耐心,每次面试回来不论公司大小,不管能不能拿到offer,但基本都能有一些有价值的输入,还挺开心的。我虽然有4年工作经验,但是不是走纯技术系的,开发,维护,见客户,项目管理什么都干过,最近想换工作,粪发图强恶补算法,数据结构一类大公司特爱考的基础知识。 
  这次后几道题答的不好。尤其是有一个关于服务器session优化和数据库表水平拆分策略的,没说到点儿上,回来的路上有了点儿思路,回来百度一下,发现八九不离十。前面几个算法的也都是磕磕碰碰,好歹都说上来了,是不是最优的就不好说了。 
  以前做信息系统,更注重业务的获取与功能的实现,虽然所有人都喊性能、架构什么的,但是实际上没人在乎。反正撑死了也就那么点儿人用。互联网公司真的是不一样啊,对并发和大数据量的关注是深入骨髓的。感觉真是惭愧。虽然这几年跑客户谈需求讲ppt自诩也是混场面的,但是从心里希望自己在技术上也能再往前走一步。 

根据记忆整理如下:

  1.   有一个集合a,里面有n个正整数,乱序排列。给定一个正整数N,求,a中任意两个数相加等于N,共有哪些种组合情况。例如,集合为{1,3,44,2,4,5,54,222,368}  N=6,则结果集为{1,5},{2,4} 
    

    这个题网上有类似的

  2.   Treemap的实现。 
    

    各种集合类的结构和优缺点,大家都挺爱考的。以前做行业信息化,没什么感觉,但是如果很在意性能,搞清楚还是挺有用的。

  3.   有两个很大的文件,每个文件中都有1亿行,每行一个整数。问这两个集合的交集是什么。给定的前提是机器内存不足以完全装入任意一个文件。 
    

    这个几乎是网上的原题了

  4.   堆和栈的定义,堆和栈里面的对象,哪个运行速度快。 
    

    还问了一些衍生的问题,记不清了,只要看清楚java教材关于这方面的介绍足矣

  5.   为了实现一个折线图,需要将数据存入一种数据结构,折线图横坐标是时间,纵坐标是值,经常的查询是按时间段进行查询,如select value from t where begin>’20110101’ and end<’20111212’ ,问,使用java中的那种数据结构比较好。 
    

    还是考java中的各种集合类,本质上是问各种数据结构在顺序/随机的读取/插入上的效率

  6.   数据库的索引通常用什么数据结构实现?为什么用这种数据结构。 
    

    就知道是btree,但是btree是咋回事,为啥不能用其他tree或者别的结构,这个看过一篇帖子以后才明白。算是学习了。

  7.   如果数据库中有2个表,表a字段为姓名、年龄,表b字段为姓名、单位。现在使用姓名字段做left join查询,假设姓名字段都有索引了。问数据库是怎么实现的。如果把这两个表看为在内存中的数组,要自己实现left join,怎么实现? 
    

    面试官看我实在不知道数据库里leftjoin怎么实现的,就让我自己实现一个内存中的,勉强答出来了吧,但是可能不太好。

  8.   数据库各种事务隔离级别 
    

    这个是纯不记得了,以前工作中从来用不到,真是汗颜。

  9.   wait()方法和notify()方法干什么用的,wait()方法有什么使用限制,是哪儿都能用么? 
    

    对于一个从来不用多线程的人,这么简单的问题也变得有点儿难。只知道干什么用的,不知道有什么限制。

  10. 数据库中有一个表有上亿的数据量,怎么优化?(主要是拆分,除了按业务拆分外,还有什么从技术角度的,可扩展性好的水平拆分方式) 思路是拆没错,但是面试官问的不是业务拆分策略,而是从技术上考虑。还得考虑扩展性,比如拆好以后,数据量增长迅速,又要拆了,怎么办。这个水平拆分策略有好多,网上能搜到。但是我说的都不是很有体系,以前没弄过,都是现场想。。

ps:当时上新东方的时候,老师说,有的时候虽然你英语不好,但是有几个单词只要你记住了,说的时候塞到句子里,人家就会觉得你特地道, 比如absolutely之流。我觉得面试的时候也有这种key words,比如位排序之流,说的时候还得特举重若轻。适用于各类新手和平时工作中压根用不到各种排序算法的人,

主题:淘宝北京专场java面试题(2011-12-31)

第一面 1、说说项目 由于我几年一直做一个产品,从后台做到前台,从业务开发做到技术平台,所以就画了整个产品部署架构图,b/s & c/s的,然后一层层的讲解。 B/S现有Web框架改造、浏览器缓存、c/s补丁下载各种方式、cdn、c/s通信协议、rpc集群、http集群、负载均衡、集群前置机调度、后端服务器主从实例、后端服务器各种优化(异步、性能隔离)、数据库服务器各种优化(索引、物化视图、读写分离、帐套结转、数据库横向切分、纵向切分)、层间调用性能监控的实现,对照产品架构图各个部分一路讲下来。 2、http集群方案,我们的是反向代理服务器,自己有写代理服务器,也可以用主流的web服务器,然后面试官就问ngnix、lighttpd、apache三大主流web服务器的区别...囧了。。。 3、如果有机会重新设计你们的产品,你会怎么做? 这个当时回答的不好,主要从通信协议和数据存储两块来说了,这样说有些片面。因为我们产品本身又很多问题,只通过部署架构图是反映不出来的,如二次开发问题、补丁下载问题、不同模块java包相互依赖问题、技术框架比较封闭、构建系统方案落后、文档缺失等,我们内部经历过很多的痛苦的,但是当时思维局限在了部署架构,所以没有说出这些问题。 第二面 4、网站性能优化如何优化的? 自己一点网站性能优化经历,结合《构建高性能Web站点》,扯了一通,跟一面有点类似。 5、本来要花产品架构图,我翻过简历,后边有一面时候画的,就没要画了。然后就要我在黑板(暂且叫做黑板)上画jvm体系结构。 画了jvm体系结构,讲解了jvm各个组件和组件的交互、GC算法、各种垃圾收集器、运行期优化、产品中遇到的与jvm相关的问题如oom、ClassLoader问题等,并针对HotSpot VM的实现讲解了堆、非堆内存划分 第三面(HR面) 6、看我面过b2b和支付宝,问了下情况 b2b面完了,但是没过;支付宝过了2面 7、个人优缺点 8、是否愿意来杭州 第四面(视频电话面,杭州某大牛) 9、介绍项目。对于Web框架的改造,跟原有框架的异同 10、下班后的时间有学习技术么

11、是否参加过开源项目

不好意思,是2011-12-31,害的大家跟帖穿越... 本人工作时间不短了,4年半的小本。这次面,过了p6,淘宝商城的业务开发部门。 之前三年是做ERP业务开发,技术没什么提升。最近两年在平台部,半年前觉得混的快挂了才狂翻公司文档、读源码、看书。具体面试准备过几天会另写一篇。最近只整理了几次面试的面试题,在博客里,只是为了发出来给大家共享,同时也因为有同事想了解下这些公司的面试内容。另外为了消除像我这样在面试一些公司前的恐惧心理---我在面百度之前一直没有过的自信的,不知道他们会面什么,网上没找到java面试的完整题目....je坛子里的牛人一堆,还请各位不吝指教!


有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现

例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

算法实现的基本思路

找到负数和正数的分界点,如果正好是0就是它了,如果是正数,再和左面相邻的负数绝对值比较,如果是负数,取取绝对值与右面正数比较。还要考虑数组只有正数或负数的情况。

我根据这个思路用Java简单实现了一个算法。大家有更好的实现方法欢迎跟帖

百度面试题:求绝对值最小的数

public class MinAbsoluteValue   
    {  
    private static int getMinAbsoluteValue(int[] source)  
        {  
            int index = 0;  
            int result = 0;    
            int startIndex = 0;  
            int endIndex = source.length - 1;  
            //  计算负数和正数的分界点  
            while(true)  
            {  
                index = startIndex + (endIndex - startIndex) / 2;  
                result = source[index];  
                if(result==0)  
                {  
                    return 0;  
                }  
                else if(result > 0)  
                {  
                    if(index == 0)  
                    {  
                        break;  
                    }  
                    if(source[index-1] >0)  
                        endIndex = index - 1;  
                    else if(source[index-1] ==0)  
                        return 0;  
                    else  
                        break;  
                }  
                else  
                {  
                    if(index == endIndex)  
                        break;  
                    if(source[index + 1] < 0)  
                        startIndex = index + 1;  
                    else if(source[index + 1] == 0)  
                        return 0;  
                    else   
                        break;  
                }  
            }  
            //  根据分界点计算绝对值最小的数  
            if(source[index] > 0){    
                if(index == 0 || source[index] < Math.abs(source[index-1]))  
                    result= source[index];  
                else  
                    result = source[index-1];  
            }  
            else{    
                if(index == source.length - 1 || Math.abs(source[index]) < source[index+1])  
                    result= source[index];  
                else  
                    result = source[index+1];  
            }  


            return result;  
        }  
    public static void main(String[] args) throws Exception  
    {  

        int[] arr1 = new int[]{-23,-22,-3,-2,1,2,3,5,20,120};  
        int[] arr2 = new int[]{-23,-22,-12,-6,-4};  
        int[] arr3 = new int[]{1,22,33,55,66,333};  
        int value = getMinAbsoluteValue(arr1);  
        System.out.println(value);  
        value = getMinAbsoluteValue(arr2);  
        System.out.println(value);  
        value = getMinAbsoluteValue(arr3);  
        System.out.println(value);  
    }  
}  

java开发实习生申请职位

工作地点:广州 所属部门:技术中心 招聘人数:3

  • 岗位职责:
    • 1.负责后端相关产品或项目的功能开发;
    • 2.参与后端相关产品的技术分析和设计;
    • 3.参与系统开发前期的技术预研,解决系统开发中的技术难题
  • 岗位要求:
    • 1、热爱互联网,对互联网产品和技术有浓厚的兴趣,热衷于追求技术极致与创新;
    • 2、良好的计算机数据结构算法设计知识;
    • 3、熟悉软件工程开发流程,熟悉面向对象分析与设计技术;
    • 4、熟悉Linux平台,掌握C/C++、Java中至少一门编程语言;
    • 5、优秀的分析问题和解决问题的能力,勇于解决难题;
    • 6、强烈的上进心和求知欲,较强的学习能力和沟通能力,具备良好的团队合作精神。

问了关于数据库,做过的项目的一些问题,还有几道智力题

问题1: 大数据导出时怎么保证内存不溢出 回 答: 分批导出

“一次面试就结束了,没有笔试。面试官是研发经理和技术经理。” 已读

匿名用户 面试唯品会的 java开发工程师 - 上海 面试经历:

先是介绍一下自己印象最深的工作案例。之后问的都是些常见的技术问题。spring的特性,配置,aop的实现。hibernate的延时加载,缓存。数据库之间的差别。在我看来还是事先准备好自己的工作案例比较重要。

如果有做过电商经验的技术,主要就是问一些电商方面的技术,以及多线程高并发的情况的解决,如果你做过这方面,问题不大。

一共有4个人轮流面试,之前做笔试题一个小时,第一个人主要问技术相关的问题,第二个人技术框架和部署相关,第三个人问职业规划,技术见解,遇到什么问题怎么解决相关,最后是HR 问之前的薪水,想要的薪水,介绍公司的一些情况。 面试官提到的问题

技术问的很详细,到了很细节的点上了,之后有对你项目框架的理解提问,还问了遇到了些什么问题,怎么解决的等等。在多线程和框架理解问的比较多,笔试一个小时,4个人基本每个人一个小时,第一个人问完等第二个人时间蛮久的,挺郁闷的。

面试问的都是很基础的东西,虚拟机方面,垃圾处理。最后出几个小题目问问。只是我的基础不好,应该回答的不是很好。
问了些java虚拟机调优信息

唯品 JAVA实习生笔试题

昨天去参加了唯品会实习生的笔试,我做的是java方向的笔试题:
总共分为三部分,笔试时间是1个小时:
第一部分是不定项选择(每题4分):总共10个题,都是一些java的基础知识,大概有数组的定义以及一些形参的使用方法等;
第二部分是简答题,总共四个小题,每题10分
(1)、操作系统中段页式的选址方式
参考:在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表 ,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号 与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指 令或数据。

(2)、进程间的通讯方式有哪几种,有什么区别
参考:
(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信 。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺
(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。    (6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
(7)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
(8)套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字

(3)、hashMap、hashTable 的区别,ArrayList和LinkedList的区别
参考:
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。 3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。 4.HashTable使用Enumeration,HashMap使用Iterator

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 (4)、网络的七层结构?怎样使用UDP实现TCP的可靠传输

参考:(1物理层,2数据链路层,3网络层,4传输层,5会话层,6表示层,7应用层)

要使用UDP来构建可靠的面向连接的数据传输,就要实现类似于TCP协议的超时重传,有序接受,应答确认,滑动窗口流量控制等机制,等于说要在传输层的上一层(或者直接在应用层)实现TCP协议的可靠数据传输机制,比如使用UDP数据包+序列号,UDP数据包+时间戳等方法,在服务器端进行应答确认机制,这样就会保证不可靠的UDP协议进行可靠的数据传输

第三部分是编程题,一题20分 1、(1)用C语言创建一个链表,然输出这个链表 (2)实现删除一个节点的操作,要求时间复杂度为O(1)

唯品会面试题

1.下列不可作为java语言修饰符的是()

A. a1 B. $1 C. _1 D. 11

2.整形数据类型中,需要内存空间最少的是()

A. short B. long C. int D. byte

3.在java中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数、类型或者顺序各不相同,传回的值也可能不相同,这种面向对象的特性称为()

A. 隐藏 B. 覆盖 C. 重载 D. java不支持此特性

4.其余省略。。。。。。。。。。

第二部分:

1.详述堆和栈,进程和线程的含义?

2.有一个动态数据集(数据实时变化)。现在需要对该数据集用到多种视图进行展示,比如直方图,曲线图和饼图等,在这样的应用场景下,使用哪几种设计模式比较合适?

(我写的有:观察者模式,工厂模式)

第三部分:

1.对一对扑克牌进行排序,时间复杂度尽可能小,请使用自然语言描述算法核心思想,并指出使用算法的时间复杂度,使用java语言描述具体算法的实现。

(桶排序)

2.在Linux操作系统下,有一个文本(文件名为user).格式如下:

Leo:456:7890:11

Vincent:333:43434:2

Rack:4343:4343:22

Leo:444:33:4343

Rack:1:1:1

Tiger:1:32:4


要求:

  1. 提取第二列的值,并对其进行排序.

  2. 计算第二列的总和。

  3. 找出第二,三和四之和的最大值。

  4. 假如有一百万个这样的文本,每个大小为500M,用最快的方式统计哪个用户(第一列)的后面三列之和最大。

注:可以用java或者shel脚本实现以上功能。


唯品会面试中涉及的内容:

一面: 自我介绍,项目介绍以及面试官针对项目提出的问题,设计模式。

二面:

自我介绍

算法题手写代码: 一个n的单向链表,用O(1)空间复杂度来实现倒转输出,最低时间复杂度。(三个人谁最快时间复杂度最低就是谁)

关于团队,和项目。

关于职业规划

三面:自我介绍,资薪谈判,关于性格和家庭等等,职业规划,随便扯,还有面试官提出的一些敏感性问题(淡定回答)。