当前位置:  编程技术>移动开发
本页文章导读:
    ▪软件工程师的八个级别        程序员的八个级别 你是否被人问过这样一个经典的面试问题,“五年内你对自己有什么规划?”当被问到时,我的脑子里总会回放一段1984年《Twisted Sister》里的一个视频片段。 我想让你告.........
    ▪ 苹果股价两月共计跌25% 市值跌破5000亿        苹果股价两月累计跌25% 市值跌破5000亿 苹果正面临着史无前例的激烈竞争,原因是微软、三星电子、谷歌和亚马逊等竞争对手正在挑战这家公司在智能手机和平板电脑市场上占据的主导地位.........
    ▪ ExpandableList-可扩展的list       ExpandableList------可扩展的list即是:单击某个item后,又可显示一个子list。它的数据通过绑定到ExpandableListAdapter或者ExpandableListAdapter的子类上。 示例一:通过SimpelExpandableListAdapter绑定数据 publi.........

[1]软件工程师的八个级别
    来源: 互联网  发布时间: 2014-02-18
程序员的八个级别

你是否被人问过这样一个经典的面试问题,“五年内你对自己有什么规划?”当被问到时,我的脑子里总会回放一段1984年《Twisted Sister》里的一个视频片段。

我想让你告诉我说——不,这样更好,站起来,对着全班说–

你今后打算干什么?

你想当摇滚明星,这很自然!或者至少要成为一名明星级程序员。这种问题一般不会得到一个很严肃的回答——就像另外一个毫无新意且充满压抑的问题,“你最大的弱点是什么?”弱点是有时候太过摇滚,可能会伤着无辜的旁观者。

但我却不这么想,我认为这是一些比较严肃的问题,值得我们认真的思考一下。并不是给面试官做好事,而是为你自己的将来。

“五年内你对自己有什么规划?”,这个问题通常会招致一些流于形式的夸夸其谈,大部分的人在面对面试官时都对这样的问题有事先的准备。当通常都不会 涉及一些深刻的关切:你做作为程序员今后可能的发展道路上怎样的?没错,我们编程,是因为我们喜欢,这样看来我们是很幸运的。但当你50时岁时你还想坐在 电脑前面编程吗?60时岁时?对于一个想成为程序员的人来说,他的最好的仕途道路应该是怎样?

你是否想听一下,如果我告诉你,算是玩笑吧,程序员有八个级别。

  • 已经死掉的程序员这是最高级别。你的代码存活了下来,超越了你的死亡。你将在计算机史上记下永恒的一笔。其他 的程序员将会研究你的成果和著作。你也许获得过图灵奖,或写出过有影响力的论文,或发明了一两件重要的、影响到编程史进程的技术。你不仅仅在维基百科上有 条目记录——有专门的网站在致力于研究你的生活和工作。很少有程序员能在有生之年达到这种级别。 

    例子:艾兹赫尔·戴克斯特拉(获得图灵奖),高德纳(现代计算机科学的鼻祖),艾伦·凯(获得图灵奖)

  • 成功的程序员有知名度,而且通过自己的代码创建了公司——甚至开创了整个行业。这种程序员享有绝对的自由度:自由的选择自己想做的事情。并且能把这种自由分享给跟他一起的程序员同伴。这是大多数程序员都向往渴望的级别。达到这种级别通常更多的是依靠商业技巧,而不是编程。 

    例子:比尔·盖茨,约翰·卡马克(《雷神之锤》视频游戏创始人),DHH( Ruby on Rails框架创始人)

  • 著名程序员这也是一个很好的级别,但前提是,你有稳定的工作。你在编程界有知名度。但有名并不意味这你可以把它转化成收益或给你带来帮助。有名很好,但成功更好。你可以在一个大的、知名的科技公司工作,或者一个有影响力的小公司工作,或你身处一个规模不大的创业团队里。不管怎样,其他的程序员都听说过你,你在这个领域有积极的影响力。
  • 有工作能力的程序员你是一个职业上成功的软件开发人员。你的技术水平让你受欢迎,你永远不愁找到一份很好的工作。你的同事都很敬仰你。你工作过的每个公司都会由于你的到来而在某方面有提高或增强。但你还能怎样?
  • 普通程序员处于这个等级的你是个不错的程序员,有自知之明,认识到自己不是个优秀程序员。 也许永远也不是。天才跟成功通常没有多大牵连。如果你会做生意并有人际交往能力,你也许会非常的成功。如果你是个水平一般的程序员但却想以此为生,你应该 聪明的知道,你并不一定需要去编码。不要轻视自知之明的作用。很少人能做到这点。没有天份没什么。要有勇气。弄清你擅长什么,朝这个目标奋斗。坚持不懈。
  • 业余程序员业余程序员喜欢编程,而且可以看出来:他们可以成为一个有前途的学生或实习生。他们也许会向开源软 件捐赠代码,或在业余时间开发有趣的“只是为了好玩”的程序或网站。他们的程序和想法展现出一种热情和希望。做业余程序员是件不错的事情;这个级别的人能 很快的跃升成为一名有工作能力的程序员。
  • 无名程序员典型的程序员大众。码农。能干(通常)但平凡。也许为大公司、集团工作。只是一份工作,不是生活的全部。无可厚非。
  • 烂程序员归入这个角色的人没有任何的技术和能力。对于他的同事们来说,任何他插手的事情都会变成痛苦和折磨 ——可能有一种例外,对另外的烂程序员,因为缺乏基本的技能,辨不清自己正在和另一个烂程序员共事。也许这是所有烂程序员的标准特征。这些人本来跟编程没 有任何关系——但是,他们却在编程。
  • 这些并不是很正经的等级划分。每个程序员在职业道路上都有各自的追求。但这可以给你一定的启发,让你思考一下十年后、二十年后或三十后——也许你的一生——能够实现什么。哪一个著名程序员是你最钦佩的?他们因为实现了什么而获得了你的钦佩?

    简言之,你这辈子想干成什么样?


        
    [2] 苹果股价两月共计跌25% 市值跌破5000亿
        来源: 互联网  发布时间: 2014-02-18
    苹果股价两月累计跌25% 市值跌破5000亿

    苹果正面临着史无前例的激烈竞争,原因是微软、三星电子、谷歌和亚马逊等竞争对手正在挑战这家公司在智能手机和平板电脑市场上占据的主导地位。

    北京时间11月16日消息,据国外媒体报道,苹果股价周四在纳斯达克证券市场下跌11.26美元,跌幅为2.10%,报收于525.62美元。按照周四的收盘价计算,苹果市值已跌破5000亿美元大关,降至4944.5亿美元。

    今 年9月份,在iPhone 5上市前夕,苹果股价曾创出705.07美元的历史最高价。但是从那时至今,苹果股价累计跌幅已经达到了25.5%。跌幅超过20%,即可认定苹果股票已 经进入熊市。熊市的定义通常为股价在一段时间内累计跌幅超过20%。汤森路透的调查显示,市场分析师当前平均预计,苹果本财年的每股收益预期将达到 50.05美元。按照当前股价计算,苹果的动态市盈率仅为10.5倍,逊于谷歌的16.3倍,但略好于微软的9.2倍。

    苹果正面临着史无前例的激烈竞争,原因是微软、三星电子、谷歌和亚马逊等竞争对手正在挑战这家公司在智能手机和平板电脑市场上占据的主导地位。市场调研公司IDC此前发布的数据显示,今年第三季度,苹果在平板电脑市场上所占份额已经下降至50%,而三星电子所占份额则增长一倍以上,至18.4%。

    另 外一家市场调研公司Gartner本周二发布报告称,今年第三季度,受消费者推迟购买iPhone手机等待iPhone 5的影响,三星电子的智能手机销量远超苹果。Gartner在报告中指出,全球智能手机销量第三季度同比增长46.9%,达到1.692亿部。受 Galaxy系列智能手机需求强劲的推动,三星电子第三季度的智能手机出货总量达到5500万部,占据了全球智能手机市场32.5%的份额。苹果当季 iPhone手机的出货总量为2360万部,市场份额为14%。

    除去产品的市场份额出 现下滑之外,苹果管理层在近期也出现了动荡。苹果在上月底突然宣布了iOS软件主管斯科特·福斯特(Scott Forstall)离职的消息。福斯特离职的原因,是因为iOS地图服务表现不佳,而且他拒绝为此负责。除去福斯特的离职之外,苹果还宣布零售店业务主管 约翰·布罗维特(John Browett)将要离职。福斯特长期来一直是苹果的重要高管之一,负责苹果成功的关键部门,其中包括了iPhone和iPad取得成功所搭载的软件。一 些媒体此前曾经认为,福斯特将成为苹果首席执行官的接班人。不过有消息称,福斯特长期与包括首席执行官蒂姆·库克(Tim Cook)在内的其他苹果高管不和,个性决定了他不善于与他人共事。


        
    [3] ExpandableList-可扩展的list
        来源: 互联网  发布时间: 2014-02-18
    ExpandableList------可扩展的list
    即是:单击某个item后,又可显示一个子list。它的数据通过绑定到ExpandableListAdapter或者ExpandableListAdapter的子类上。
    示例一:通过SimpelExpandableListAdapter绑定数据

    public class MainActivity extends ExpandableListActivity {

    List<Map<String, String>> groups = new ArrayList<Map<String, String>>();
    List<List<Map<String, String>>> childrens = new ArrayList<List<Map<String, String>>>();
    SimpleExpandableListAdapter adapter ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            adapter = new SimpleExpandableListAdapter(
             this, 
             groupData(), 
             android.R.layout.simple_expandable_list_item_1, 
             new String[]{"group"}, 
             new int[]{android.R.id.text1}, 
             childData(), 
             android.R.layout.simple_expandable_list_item_2, 
             new String[]{"child"}, 
             new int[]{android.R.id.text2}
             );
            setListAdapter(adapter);
        }
        /**
         * 该方法为一级条目提供数据
         * @return  一级条目数据
         */
        private List<Map<String, String>> groupData(){
         Map<String, String> group1 = new HashMap<String, String>();
         group1.put("group", "group1");
         Map<String, String> group2 = new HashMap<String, String>();
         group2.put("group", "group2");
         groups.add(group1);
         groups.add(group2);
    return groups;
        }
        
        /**
         * 该方法为二级条目提供数据
         * @return  二级条目数据
         */
        private List<List<Map<String, String>>> childData(){
         List<Map<String, String>> child1 = new ArrayList<Map<String, String>>();
         Map<String, String> child1Data = new HashMap<String, String>();
         child1Data.put("child", "child1");
         child1.add(child1Data);
         List<Map<String, String>> child2 = new ArrayList<Map<String, String>>();
         Map<String, String> child2Data = new HashMap<String, String>();
         child2Data.put("child", "child2");
         child2.add(child2Data);
         childrens.add(child1);
         childrens.add(child2);
    return childrens;
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    }

    示例二:通过SimpleCussorTreeAdapter绑定数据:

    public class MainActivity extends ExpandableListActivity {

    /**
     * 获取联系人ID的列位置,一般都是第一个,也就是0
     */
    private int mGroupIdColumnIndex; 
    /**
     *  要查询联系人的电话号码的字段(也就是子视图的信息)
     */
    private String[] mPhoneNumberProject = new String[]{
    ContactsContract.CommonDataKinds.Phone._ID, 
    ContactsContract.CommonDataKinds.Phone.NUMBER};
    private ExpandableListAdapter adapter;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            // 查询联系人并获取其Cursor对象
            CursorLoader loader = new CursorLoader(this, 
             ContactsContract.Contacts.CONTENT_URI, 
             new String[]{ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME}, 
    null, 
    null, 
    null);
            Cursor groupCursor =loader.loadInBackground();
            // 保存取联系人ID的列位置
            mGroupIdColumnIndex = groupCursor
             .getColumnIndexOrThrow(ContactsContract.Contacts._ID);
            
            adapter = new MyExpandableListAdapter(this, 
             groupCursor, 
             android.R.layout.simple_expandable_list_item_1, 
             new String[]{ContactsContract.Contacts.DISPLAY_NAME}, 
             new int[]{android.R.id.text1}, 
             android.R.layout.simple_expandable_list_item_2, 
             new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, 
             new int[]{android.R.id.text2}
            );
            setListAdapter(adapter);
        }
        
        private class MyExpandableListAdapter extends SimpleCursorTreeAdapter{

    public MyExpandableListAdapter(Context context, Cursor cursor,
    int groupLayout, String[] groupFrom, int[] groupTo,
    int childLayout, String[] childFrom, int[] childTo) {
    super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom,
    childTo);
    }

    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {
    long contactId = groupCursor.getLong(mGroupIdColumnIndex);
    Uri.Builder builder = ContactsContract.CommonDataKinds
    .Phone.CONTENT_URI.buildUpon();
    Uri phoneNumbersUri = builder.build();
    CursorLoader curLoader = new CursorLoader(MainActivity.this, 
    phoneNumbersUri, 
    mPhoneNumberProject, 
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", 
    new String[]{String.valueOf(contactId)}, 
    null
    );
    Cursor cursor = curLoader.loadInBackground();
    return cursor;
    }
        
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    }


    示例三:通过BaseExpandableListAdapter绑定数据:

    public class MyExpandableList extends ExpandableListActivity {
    ExpandableListAdapter adapter ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    adapter = new MyExpandableListAdapter();
    setListAdapter(adapter);
    }
    private class MyExpandableListAdapter extends BaseExpandableListAdapter{

    private String[] groups = {"电影","电视剧","综艺节目","水果","青菜"};
    private String[][] children = {
    {"忠犬八公","泰坦尼克号","开心鬼"},
    {"谈情说案","大太监","加油妈妈"},
    {"快乐大本营","职来职往","爱情保卫战"},
    {"泥猴桃","橘子","柿子"},
    {"麦菜","娃娃菜","生菜"}};
    @Override
    public Object getChild(int groupPosition, int childPosition) {
    return children[groupPosition][childPosition];
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
    return childPosition;
    }

    //得到一级目录的数据
    @Override
    public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent) {
    TextView textVeiw = getView();
    textVeiw.setText(getChild(groupPosition, childPosition).toString());
    return textVeiw;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
    return children[groupPosition].length;
    }

    @Override
    public Object getGroup(int groupPosition) {
    return groups[groupPosition];
    }

    @Override
    public int getGroupCount() {
    return groups.length;
    }

    @Override
    public long getGroupId(int groupPosition) {
    return groupPosition ;
    }

    //得到二级目录的数据
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
    View convertView, ViewGroup parent) {
    TextView textVeiw = getView();
    textVeiw.setText(getGroup(groupPosition).toString());
    return textVeiw;
    }
    private TextView getView(){
    AbsListView.LayoutParams layout = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, 64);
    TextView tv = new TextView(MyExpandableList.this);
    tv.setLayoutParams(layout);
    tv.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
    tv.setPadding(60, 0, 0, 0);
    return tv;
    }

    @Override
    public boolean hasStableIds() {
    return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
    return false;
    }
    }
    }

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3